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

vectorSearch (MongoDB Search 演算子)

vectorSearch 演算子は、指定されたフィールド内のベクトル埋め込みに対して 近似最近傍探索 または 厳密最近傍探索 を検索します。この演算子を使用して、セマンティック検索と並行して、ファジー検索、フレーズ一致、ロケーション フィルター、ワイルドカード パスワードなし一致などの分析する機能を追加します。

vectorSearch の構文は次のとおりです。

{
"$search": {
"index": "<index name>", // optional, defaults to "default"
"vectorSearch": {
"exact": true | false,
"filter": {<operator-specification>},
"limit": <number-of-results>,
"numCandidates": <number-of-candidates>,
"path": "<field-to-search>",
"queryVector": [<array-of-numbers>],
"score": {<options>}
}
}
}

vectorSearch 次のフィールドを使用してクエリを作成します。

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

exact

ブール値

任意

numCandidatesを省略する場合は、これが必要です。

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

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

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

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

MongoDB Vector Search supports ANN search on Atlas clusters running MongoDB v6.0.11, v7.0.2, or later and ENN search on clusters running MongoDB v6.0.16, v7.0.10, v7.3.2, or later. You can also use MongoDB Vector Search with self-managed or local Atlas deployments that you create with the Atlas CLI.

filter

オブジェクト

任意

MongoDB の検索演算子を使用して、メタデータや特定の検索条件に基づいてドキュメントを事前にフィルタリングします。

To learn more, see Pre-Filter.

limit

Int

必須

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

On sharded clusters, you must use $limit after the $search stage to limit the number of documents in the results.

numCandidates

Int

任意

このフィールドは、 exactfalseまたは省略されている場合に必須です。

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

精度を高めるために、返されるドキュメント数(limit)の 20 倍以上を指定することをお勧めします。

This overrequest pattern is the recommended way to trade off latency and :recall in your ANN searches, and we recommend tuning this parameter based on your specific dataset size and query requirements.

path

文字列

必須

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

queryVector

整数または浮動小数点数の配列

必須

Array of numbers of float32, BSON BinData vectors with subtype float32, or BSON BinData vectors with subtype int1 or int8 type that represent the query vector.

To learn more about generating BSON binData vectors with subtype float32, int8, or int1, see How to Ingest Pre-Quantized Vectors.

配列のサイズは、フィールドのインデックス定義で指定されたベクトル次元(numDimensions)と一致している必要があります。

データの埋め込みに使用したのと同じモデルを使用してクエリを埋め込む必要があります。

ベクトルのサブタイプが同じである限り、完全忠実度ベクトルを使用して埋め込みをクエリすることができます。これはサブタイプ float32 を持つbinData ベクトルでのみ可能です。他のサブタイプ(int8int1)を使用した場合、MongoDB Search では結果やエラーは返されません。

score

オブジェクト

任意

一致する検索語句の結果に割り当てられたスコア。スコアを変更するには、次のいずれかのオプションを使用します。

  • boost: 結果のスコアに指定された数値を掛けます。

  • constant: 結果のスコアを指定された数値に置き換えます。

  • function: 指定された式を使用して結果スコアを置き換えます。

クエリで score を使用する方法については、「結果内のドキュメントのスコアリング」を参照してください。

検索対象のフィールドを vectorSearch演算子を使用してインデックス化する必要があります。MongoDB Search インデックス定義では、以下の種類のフィールドをインデックスできます。

  • ベクトル埋め込みを含むフィールド。これはクエリ内で path オプションで指定するフィールドです。

  • ドキュメントを事前にフィルターするフィールド。これらはクエリ filter オプションで指定するフィールドです。

ドキュメントを事前にフィルタリングして、セマンティック検索の範囲を絞り込むことができます。filterフィールドでサポートされているMongoDB Search 演算子を使用して、ドキュメントをクエリおよびフィルタリングします。

重要

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

vector 型のインデックス定義では、データのフィルタリングに使用するフィールドを必ずインデックス化する必要があります。

You can include the score of each document in your search results. Specify the $meta expression with the searchScore value in the $project stage. You can also specify the searchScoreDetails value for the scoreDetails field $meta expression for a detailed breakdown of the score.

詳細については、「結果内のドキュメントのスコアリング」および「スコアの詳細を返す」を参照してください。

vectorSearch 演算子はクエリの最上位演算子でなければなりません。そのため、以下の MongoDB Search の演算子内ではvectorSearch 演算子を使用できません。

You can't use the vectorSearch operator to query fields indexed using a vectorSearch type index.

vectorSearch 演算子で以下の$searchオプションは使用できません。

MongoDB Search Playground では、vectorSearch 演算子を使用して $search クエリを実行できません。

The following examples use the sample_mflix.embedded_movies collection from the sample data. If you load the sample data and create the sample index on the collection, you can run the following ANN and ENN queries against the collection after replacing the <connection-string> and <index-name> placeholders in the queries.