定義
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 次のフィールドを使用してクエリを作成します。
フィールド | タイプ | 必要性 | 説明 |
|---|---|---|---|
| ブール値 | 任意 |
EXN検索またはANN検索のどちらを実行するかを指定するフラグ。 値は次のいずれかになります。
省略した場合、デフォルトは MongoDB Vector Search は、 近似最近傍探索 検索を MongoDB v6.0.11を実行中Atlas クラスターでサポートしています。v7.0.2 以降 およびMongoDB v6.0.16を実行中クラスターでの 厳密最近傍探索 検索v7.0.10、v7.3.2、以降に更新します。MongoDB ベクトル検索 は、自己管理型またはAtlas CLI で作成したローカル Atlas 配置でも使用できます。 |
| オブジェクト | 任意 | |
| Int | 必須 | |
| Int | 任意 | このフィールドは、 検索中に使用する最近傍の数。 値は ( 精度を高めるために、返されるドキュメント数( このオーバーリクエスト パターンは、近似最近傍探索でレイテンシと再現率のバランスを取るためのお勧めの方法であり、当社では具体的なデータセットのサイズとクエリ要件に基づきこのパラメーターを調整することをお勧めしています。 |
| 文字列 | 必須 | 検索するインデックス付きのベクトルタイプフィールド。 |
| 整数または浮動小数点数の配列 | 必須 |
サブタイプ 配列のサイズは、フィールドのインデックス定義で指定されたベクトル次元( データの埋め込みに使用したのと同じモデルを使用してクエリを埋め込む必要があります。 ベクトルのサブタイプが同じである限り、完全忠実度ベクトルを使用して埋め込みをクエリすることができます。これはサブタイプ |
| オブジェクト | 任意 | 一致する検索語句の結果に割り当てられたスコア。スコアを変更するには、次のいずれかのオプションを使用します。
クエリで |
動作
MongoDB Search インデックス
検索対象のフィールドを vectorSearch演算子を使用してインデックス化する必要があります。MongoDB Search インデックス定義では、以下の種類のフィールドをインデックスできます。
ベクトル埋め込みを含むフィールド。これはクエリ内で
pathオプションで指定するフィールドです。ドキュメントを事前にフィルターするフィールド。これらはクエリ
filterオプションで指定するフィールドです。
プレフィルター
ドキュメントを事前にフィルタリングして、セマンティック検索の範囲を絞り込むことができます。filterフィールドでサポートされているMongoDB Search 演算子を使用して、ドキュメントをクエリおよびフィルタリングします。
重要
フィルターされたクエリは通常、同等のフィルターされていないクエリよりも遅くなります。
vector 型のインデックス定義では、データのフィルタリングに使用するフィールドを必ずインデックス化する必要があります。
score
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 演算子の制限
vectorSearch 演算子はクエリの最上位演算子でなければなりません。そのため、以下の MongoDB Search の演算子内ではvectorSearch 演算子を使用できません。
vectorSearch 演算子を使用して、vectorSearch タイプのインデックスを使用してインデックス付けされたフィールドをクエリすることはできません。
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.