AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

MongoDB ベクトル検索を使用した埋め込みの自動生成

重要

プライベート プレビューからパブリック プレビューに移行する準備として、text タイプのMongoDB ベクトル検索インデックスは非推奨です。「プレビュー機能」を参照してください。

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

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

重要

MongoDB ベクトル検索自動埋め込みは、任意のクラウドプロバイダーの任意の M10 以上のクラスターで使用できます。ただし、ベクトル埋め込みを生成するための推論プロセスを取り扱うサービスは、Google Cloud 上で実行されます。つまり、クラスターのクラウドプロバイダーに関係なく、埋め込み生成と取得のためにデータが Google Cloud に送信されます。エンタープライズ レベルのセキュリティを提供しているため、データは クラスターにのみ保存されます。

埋め込みモデルは、共有のマルチテナント推論プラットフォームで実行されます。したがって、プレビュー期間中は、100kドキュメント未満のデータセットを使用し、負荷テストではなく機能の評価のみを目的としてクエリを実行する必要があります。より高い制限を持つユースケースがある場合は、アカウントチームにお問い合わせください。

ワークロードには厳密なレート制限はありませんが、グローバルな制限があります。クエリがレート制限エラー(エラー 409)を返す場合は、アプリケーションコードでバックオフを実行し、再試行します。これにより、アプリケーションはレート制限をグレースフルに処理し、継続的な機能を確保できます。

自動埋め込みを使用してベクトル検索を有効にするには、次のものが必要です。

  • M10 あるいはそれ以上のクラスター

  • 自動埋め込み用にインデックステキストフィールドを持つコレクション。

  • 次のクライアントの 1 つ:

    • インデックスを作成するための Atlas UI

    • mongosh 、インデックスの作成とクエリの実行中用

    • インデックスの作成とクエリの実行中には Node Driver 以上が必要6.6.0

    • 4.7インデックスの作成とクエリの実行中用にPythonドライバー 以上

次のセクションでは、テキストフィールドの埋め込みの自動生成を有効にするためのMongoDB ベクトル検索インデックスの構文とフィールドについて説明し、自動埋め込み用にインデックスを構成する手順について説明します。

MongoDB ベクトル検索インデックスを作成および管理するには、Project Data Access Admin 以上のロールが必要です。

以下は、埋め込みの自動生成を有効にするための構文です。

1{
2 "fields": [
3 {
4 "type": "text",
5 "path": "<field-name>",
6 "model": "voyage-3-large | voyage-3.5 | voyage-3.5-lite"
7 }
8 ]
9}

インデックス定義では、次のフィールドが必要です。

フィールド
タイプ
説明

type

string

フィールドの型。自動埋め込みの場合、これは text である必要があります。

path

string

自動埋め込み用にインデックスを作成するコレクション内のフィールドの名前。

model

string

インデックスの埋め込みの生成に使用する Voyage AI 埋め込みモデル。次のいずれかのモデルを指定できます。

  • voyage-3-large - 言語とドメイン全体で最高品質の検索。

  • voyage-3.5 - 多言語使用と一般的な検索精度のバランス調整されたモデル。

  • voyage-3.5-lite -レイテンシと 低コストのために最適化された軽量、高速モデル。

インデックスの作成 後に埋め込みモデルを変更すると、 MongoDB ベクトル検索 はデータセットの新しい埋め込みを生成します。MongoDB ベクトル検索 が埋め込みを生成している間も、古い埋め込みを使用してクエリを続行できます。古い埋め込みが新しい埋め込みモデルの埋め込みに置き換えられると、 MongoDB ベクトル検索 は古い埋め込みを削除します。

自動埋め込みのインデックスフィールドは、次の vector 型のインデックスフィールドと相互に排他的です。

  • numDimensions

  • similarity

  • quantization

コレクションにすでに埋め込みがある場合は、vector 型のフィールドを使用して埋め込みのインデックスを作成する必要があります。埋め込みを使用したフィールドのインデックス作成について詳しくは、「ベクトル検索のフィールドにインデックスを作成する方法」をご覧ください。

埋め込みを自動生成するためにテキストフィールドをインデックス、独自の埋め込みを持つフィールドもインデックスする場合は、textvector の両方のタイプでインデックスを作成できます。MongoDB ベクトル検索 は、text タイプとしてインデックス付けされたフィールドのみに対するクエリの埋め込みを自動的に生成します。vector タイプとしてインデックス付けされたフィールドを検索するには、クエリに埋め込みを指定する必要があります。

MongoDB Vector Search filter タイプを使用して、データを事前にフィルタリングするためのフィールドのインデックスも可能です。

重要

フィルターされたクエリは通常、同等のフィルターされていないクエリよりも遅くなります。

データの事前フィルタリングの詳細については、filter タイプについて 」を参照してください。

次の手順では、 MongoDB Vector Search インデックスへの自動埋め込みを有効にする手順について説明します。sample_mflix.movies データセットをロードした場合、手順の例は、コレクションの fullplotフィールドで自動埋め込みを有効にする方法を示しています。

自動埋め込みを使用してインデックスを作成した後、インデックス化されたフィールドに対してテキスト クエリを実行できます。MongoDB Vector Search は、インデックスで指定された同じ埋め込みモデルを使用して、クエリ内のテキスト文字列の埋め込みを自動的に生成し、その埋め込みを使って、指定されたクエリ テキストと類似した意味を持つドキュメントのインデックスを検索します。

次のセクションでは、自動埋め込み用にインデックス付けされたフィールドに対してクエリテキストの埋め込みを自動生成するための$vectorSearchパイプラインの構文とフィールドについて説明し、自動埋め込み用にインデックス付けされたフィールドに対してセマンティック検索クエリを実行する方法を説明します。

次の構文は、自動埋め込み用にインデックス付けされたフィールドに対してクエリを実行する方法を示しています。

1{
2 "$vectorSearch": {
3 "index": "<index-name>",
4 "limit": <number-of-results>,
5 "numCandidates": <number-of-candidates>,
6 "path": "<field-to-search>",
7 "query": "<query-string>"
8 }
9}

自動埋め込みを使用するMongoDB ベクトル検索クエリには次のフィールドが必要です。

フィールド
タイプ
必要性
説明

exact

ブール値

条件付き

numCandidates を省略する場合、このフィールドは必須です。numCandidates と相互に排他的です。

EXN検索またはANN検索のどちらを実行するかを指定するフラグ。 値は次のいずれかになります。

  • false - Ann検索を実行する場合

  • true - ENN検索を実行する場合

省略した場合、デフォルトは false になります。

index

string

必須

使用するMongoDB ベクトル検索インデックスの名前。

MongoDB ベクトル検索、インデックス名のスペルをうっかり間違えた場合、または指定されたインデックスがクラスター上にまだ存在しない場合には結果が返されません。

limit

数値

必須

結果で返されるドキュメントの数( intのみ)。 numCandidatesを指定する場合、この値はnumCandidatesの値を超えることはできません。

numCandidates

数値

条件付き

exactfalse であるか省略されている場合、このフィールドは必須です。exact と相互排他的です。

検索中に使用する最近傍の数。 値は ( <=10000以下である必要があります。 返されるドキュメント数より小さい数値は指定できません( limit )。

path

string

必須

検索するインデックス付きのベクトルタイプフィールド。

query

string

必須

埋め込みを自動的に生成し、セマンティック検索を実行するテキスト。

インデックス付きフィールドに対して 近似最近傍探索 または 厳密最近傍探索 クエリを実行できます。詳しくは、近似最近傍探索厳密最近傍探索 を参照してください。

自動埋め込み のインデックス付きフィールドでは、クエリ内でベクトル埋め込みを指定することはできません。代わりに、フィールドに対して自然言語クエリを実行する必要があります。自動埋め込み用にインデックスされたフィールドに対して自然言語クエリを実行すると、 MongoDB ベクトル検索 は、インデックス付きフィールドと同じ埋め込みモデルを使用して、クエリテキストの埋め込みを自動的に生成します。次に、生成された埋め込みを使用して、インデックス付きフィールドに対してセマンティック検索を実行します。

オプションで、クエリに filter フィールドを指定して、MongoDB ベクトル検索 がセマンティック検索を実行するドキュメントを事前にフィルターすることができます。詳細については、MongoDB ベクトル検索の事前フィルター。をご覧ください。

オプションで、結果内のドキュメントのスコアを検索することもできます。詳細については、 「MongoDB ベクトル検索スコアリング」を参照してください。