Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

自動埋め込みの仕組み

MongoDB ベクトル検索を構成して、クラスター内のテキストデータのベクトル埋め込みを自動的に生成および管理できます。クラスターに 1 クリックのAIセマンティック検索インデックスを作成し、Voyage AI埋め込みモデルを使用すると、インデックス作成、アップデート、ベクトルによるクエリが簡素化されます。

自動埋め込みを有効にすると、 MongoDB ベクトル検索 は、コレクション内の指定されたテキストフィールドのインデックス時に、およびクエリ内のテキスト string に対して、自動埋め込み用にインデックスされたフィールドに対して指定された埋め込みモデルを使用して埋め込みを自動的に生成します。

自動埋め込み用のMongoDB ベクトル検索インデックスを作成すると、 MongoDB は最初の同期を実行して、コレクション内のすべての既存のドキュメントの埋め込みを生成します。

  1. ドキュメントをスキャンします。

    MongoDB ベクトル検索 は、インデックス付きテキストフィールドを含むコレクション内のすべてのドキュメントをスキャンします。

  2. 埋め込みを生成します。

    各ドキュメントについて、 MongoDB ベクトル検索 はインデックス付きフィールドから Vyage AI埋め込みモデルにテキストを送信し、ベクトル埋め込みを生成します。

  3. 埋め込みを保存します。

    MongoDB ベクトル検索 は、生成された埋め込みを同じクラスター上の別の内部システムコレクション(__mdb_internal_search)に保存し、データローカリティを維持しつつ埋め込みをアプリケーションデータから分離します。

  4. インデックスを構築します。

    埋め込みが生成されると、 MongoDB ベクトル検索 は生成された埋め込みを使用してインデックスを構築し、ベクトル検索を有効にします。

最初の同期中に、 MongoDB はドキュメントをバッチで処理し、特別な Flex 推論処理階層を使用してスループット を最適化します。

注意

最初の同期期間は、ドキュメント数、 インデックス付きフィールドのテキストの長さ、および利用可能なレート制限割り当てによって異なります。大規模なコレクションの最初の同期が完了するまでに数時間かかる場合があります。

最初の同期後、 MongoDB ベクトル検索 は、変更されるたびに埋め込みをデータと自動的に同期し続けます。

インデックス付きテキストフィールドを含む新しいドキュメントを挿入すると、 MongoDB ベクトル検索 は自動的に次のことを行います。

  1. 変更ストリームを通じて新しいドキュメントを検出します。

  2. 構成されたモデルを使用してテキストフィールドの埋め込みを生成します。

  3. 埋め込みを システムコレクションに保存します。

  4. MongoDB ベクトル検索インデックスをアップデートして、新しい埋め込みを含めます。

ドキュメントを更新し、インデックス付きテキストフィールドが変更されると、 MongoDB ベクトル検索 は自動的に次のことを行います。

  1. 変更ストリーム を通じてフィールドの変更を検出します。

  2. アップデートされたテキストの新しい埋め込みを生成します。

  3. システムコレクション内の古い埋め込みを置き換えます。

  4. MongoDB ベクトル検索インデックスを新しい埋め込みでアップデートします。

注意

MongoDB ベクトル検索、自動埋め込み用にインデックスされていないフィールドへの更新に対して埋め込み再生成がトリガーされません。

ドキュメントを削除すると、 MongoDB ベクトル検索 はシステムコレクションから対応する埋め込みを自動的に削除し、インデックスを更新します。

自動埋め込みでは、マルチテナント環境でMongoDBによってホストおよび管理される Vyage AI の埋め込みモデルを使用します。

  • ホストされたサービス: すべての埋め込みモデルはMongoDBによってホストおよび維持されます。モデル参照プラットフォームは、米国リージョンの Google Cloudクラウドにある MongoDB のインフラストラクチャ上で実行されます。モデル インフラストラクチャを配置、設定、または管理する必要はありません。

  • APIベース アクセス: Vyage AI APIキーを使用するように構成された自己管理型配置の場合、 MongoDB は埋め込みを生成するために Vyage AI のAPIエンドポイントにテキストを送信します。埋め込みはMongoDBに返され、クラスターに保存されます。

  • マルチテナント アーキテクチャ: 埋め込みサービスは複数のユーザーで共有されます。このマルチテナント モデルは、次の機能を提供します。

    • 共有インフラストラクチャによるコスト効率

    • モデルの自動更新と改善

    • 高可用性とスケーラビリティ

  • 自動埋め込みサービスに送信されたテキストは、埋め込みを生成するためにのみ使用され、モデル訓練には保存されたり使用されたりすることはありません。

  • 埋め込みはMongoDBクラスターに返され、独自のデータベース内に保存されます。

  • 自動埋め込みサービスを使用するすべての通信は、暗号化された接続を介して行われます。

埋め込みサービスはマルチテナントです。したがって、 MongoDB はすべてのカスタマー間で均等に使用できるようにするためにレート制限を強制します。レート制限とその自動埋め込み操作への影響の詳細については、「 レート制限 」を参照してください。

自動埋め込みを使用してベクトル検索クエリーを実行すると、 MongoDB はクエリ テキストの埋め込み生成を自動的に処理します。

  1. クエリ テキストの送信:query ステージの $vectorSearchフィールドに、事前に生成されたベクトルではなく、テキスト string を入力します。

  2. 埋め込み生成: MongoDB はクエリテキストを自動埋め込みサービスに送信し、インデックスで指定された同じモデル(またはmodel オプションでオーバーライドする場合は互換性のあるモデル)を使用して埋め込みを生成します。

  3. ベクトル検索: 生成されたクエリ埋め込みは、構成された類似性関数(cosine、dot積、またはユークリッド)を使用してインデックス作成された埋め込みを検索するために使用されます。

  4. 返された結果: MongoDB は、クエリに類似する順に順位付けされたドキュメントを返します。

自動埋め込みを使用する各クエリは、埋め込みを生成するためにAPI呼び出しが必要であるため、自動埋め込みレート制限にカウントされます。クエリスループットとコストの管理の詳細については、「 レート制限 」を参照してください。

  • 大規模なコレクションでは、レート制限に達すると、最初の同期が完了するまでにかなりの時間がかかる可能性があります。

  • MongoDB は失敗した埋め込みリクエストを自動的に再試行し、指数バックオフを実装します。

  • Atlas Search モニタリング を通じて同期の進行状況を監視できます。

  • ドキュメントの更新は、レート制限の対象として、発生に応じて処理されます。

  • 更新がレート制限を超える場合、キャパシティーが利用可能になったときにキューに入れられ、処理されます。

  • アプリケーションは正常に機能し続けます。埋め込み生成のみが遅延する可能性があります。

  • クエリ レート制限は、実行可能な同時検索の数に影響します。

  • クエリ レート制限を超えると、クエリはレート制限を超えたことを示すエラーを返します。

  • 頻繁に使用するクエリ結果をキャッシュする か、スループットを向上させるために 有料階層にアップグレードする ことを検討してください。

自動埋め込みでは、ベクトル埋め込みを保存するために別の予約データベースが使用されます。インデックスの 生成された埋め込みコレクションを見つけ、 生成された埋め込みコレクションから埋め込みを検索できます。

埋め込みストレージ

MongoDB は生成された埋め込みを非同期に保存し、内部的な 生成された埋め込みコレクションに永続化します。この生成された埋め込みコレクションは、同じクラスター上の__mdb_internal_search という名前の専用内部データベースに存在します。クラスター内のすべての自動埋め込みインデックスには、このデータベース内に対応する生成された埋め込みコレクションが 1 つだけ あります 。詳細については、「 生成された埋め込みコレクション 」を参照してください。

警告

__mdb_internal_searchデータベースは、 MongoDBによって作成および管理される予約済みの内部名前空間です。このデータベースまたはそのコレクションは操作 しない でください。この 予約された名前空間を変更すると、インデックスが失敗し、検索結果が一貫性を失う可能性があります。

生成された埋め込みコレクションの構造

生成された埋め込みコレクションには、 ソース コレクションドキュメントごとに 1 つのドキュメントが含まれます。生成された各埋め込みコレクションドキュメントには、ソースと同じ _id、ソースのフィルター フィールドのコピー、および各自動埋め込みフィールドの生成された埋め込みベクトルが含まれます。

次のフィールドが表示されます。

フィールド
タイプ
説明

_id

ObjectId

ソースドキュメントと同じ _id

<filter-field>

Any

ソースドキュメントからフィルターフィールドのコピー。

_autoEmbed

オブジェクト

各 自動埋め込みフィールドの埋め込みベクトルが含まれます。

_autoEmbed.
<fieldPath>

浮動小数、または量子化されたベクトルの配列

自動埋め込みフィールドの生成された埋め込みベクトルが含まれます。

警告

__mdb_internal_searchデータベースは、 MongoDBによって作成および管理される予約済みの内部名前空間です。このデータベースまたはそのコレクションは操作 しない でください。この 予約された名前空間を変更すると、インデックスが失敗し、検索結果が一貫性を失う可能性があります。

生成された埋め込みコレクションのストレージサイズを確認して、生成された埋め込みによるディスクとインデックス領域の消費を理解できます。これは、キャパシティープランニング、予期しない増加のデバッグ、インデックスを削除または再定義した後のクリーンアップの検証に役立ちます。

重要

ストレージサイズを確認する前に、生成された埋め込みコレクションの名前を見つけます。詳細については、「 生成された埋め込みコレクションの検索 」を参照してください。

次のセクションでは、自動埋め込みに関する一般的な問題をトラブルシューティングするためのガイダンスを提供します。

インデックスIDに一致する埋め込みコレクションは生成されませんでした
インデックスはまだ :quialvel`Building` または Pending 状態である場合があります。生成された埋め込みコレクションは、最初の書込みで遅延して作成されます。 $listSearchIndexes を使用してステータスを確認します。
ソースのドキュメントが欠落している _id
指定されたドキュメントがまだ生成されていないこと、またはドキュメントがインデックスのフィルター式によってフィルタリングされたことの埋め込み。
複数のコレクションがインデックスIDに一致する
自動埋め込みフィールドの構成が更新されました。新しい生成埋め込みコレクションが作成されましたが、古いコレクションはクリーンアップされるまで一時的に存在する場合があります。

戻る

請求の管理