vectorフィールドタイプとvectorSearch 演算子はプレビュー機能として利用できます。機能および関連するドキュメントは、プレビュー期間中にいつでも変更される可能性があります。詳しくは、「 プレビュー機能 」を参照してください。定義
演算子は、指定されたフィールド内のベクトル埋め込みに対してvectorSearch ANN または ENN 検索を実行します。この演算子を使用して、セマンティック検索と並行して、ファジー検索、フレーズ一致、ロケーション フィルタリング、ワイルドカード パターン一致などの分析テキスト機能を追加します。
構文
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 ベクトル検索 はMongoDB v6.0.11を実行中クラスターでの Ann 検索をサポートしますv7.0.2 以降 およびMongoDB v6.0.16を実行中クラスターでの ENN 検索v7.0.10、v7.3.2、以降に更新します。 |
| オブジェクト | 任意 | MongoDB Search 演算子を使用すると、メタデータまたは特定の検索条件に基づいてドキュメントを事前にフィルタリングできます。 詳細については、「 事前フィルター 」を参照してください。 |
| Int | 必須 | |
| Int | 任意 | このフィールドは、 検索中に使用する最近傍の数。 値は ( 精度を高めるために、返されるドキュメント数( このオーバーリクエスト パターンは、近似最近傍探索でレイテンシと再現率のバランスを取るためのお勧めの方法であり、当社では具体的なデータセットのサイズとクエリ要件に基づきこのパラメーターを調整することをお勧めしています。 |
| 文字列 | 必須 | 検索するインデックス付きのベクトルタイプフィールド。 |
| 整数または浮動小数点数の配列 | 必須 |
サブタイプ 配列のサイズは、フィールドのインデックス定義で指定されたベクトル次元の数( データの埋め込みに使用したのと同じモデルを使用してクエリを埋め込む必要があります。 ベクトルサブタイプが同じ限り、完全忠実度ベクトルで埋め込みをクエリできます。これは、サブタイプが |
| オブジェクト | 任意 | 一致する検索語句の結果に割り当てられたスコア。スコアを変更するには、次のいずれかのオプションを使用します。
クエリで |
動作
MongoDB Search インデックス
vectorSearch 演算子を使用して、検索するフィールドをインデックス必要があります。 MongoDB Searchインデックス定義では、次のタイプのフィールドにインデックスことができます。
ベクトル埋め込みを含むフィールド。これは、クエリ
pathオプションで指定するフィールドです。ドキュメントを事前にフィルタリングするフィールド。これらは、クエリ
filterオプションで指定するフィールドです。
事前フィルター
ドキュメントを事前にフィルタリングしてセマンティック検索の範囲を絞り込み、すべてのベクトルが比較で考慮されないようにできます。 filterフィールドでサポートされているMongoDB Search 演算子を使用して、ドキュメントをクエリおよびフィルタリングできます。
vectorタイプのインデックス定義で、データをフィルタリングするフィールドをインデックス必要があります。
score
検索結果には各ドキュメントのスコアを含めることができます。 searchScoreステージで$project 値を持つ $meta式を指定します。また、searchScoreDetails scoreDetailsフィールド$meta式の 値を指定し、スコアの詳細な内訳を示すことができます。
詳細については、「 結果内のドキュメントにスコアを付ける 」と「 スコアの詳細を返す 」を参照してください。
vectorSearch 演算子の制限
vectorSearchvectorSearch演算子はクエリの最上位演算子である必要があります。したがって、次のMongoDB Search 演算子 内では 演算子は使用できません。
vectorSearch演算子を使用して、 vectorSearch タイプのインデックスを使用してインデックス付けされたフィールドをクエリすることはできません。
$search演算子では、次のvectorSearch オプションは使用できません。
$searchvectorSearch検索テスターを使用して、 演算子で クエリを実行することはできません。
例
次の例では、サンプルデータのsample_mflix.embedded_movies コレクションを使用します。サンプルデータをロードし、コレクションにサンプルインデックスを作成すると、クエリ内の プレースホルダーと プレースホルダーを置き換えた後、コレクションに対して次の ANN クエリと ENN<connection-string> <index-name>クエリを実行できます。