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