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

$vectorSearch 集計ステージ

$vectorSearch ステージは、MongoDB ベクトル検索クエリの結果を使用して、各ストリーミング ドキュメントを強化します。各入力ドキュメントに対して、ステージはコレクションに対して $vectorSearch クエリを実行し、結果を指定したフィールドに接付します。

$vectorSearch パイプラインの中間のステージである必要があります。パイプラインの $source またはシンクとして使用しないでください。

$vectorSearchパイプライン ステージには次のプロトタイプ形式があります。

{ "$vectorSearch": { "from": { "connectionName": "<registered-atlas-connection>", "db": "<database>", "coll": "<collection>" }, "as": "<output-field>", "queryVector": [<number>, ...] | <expression>, "query": { "text": "<string>" | <expression> }, "model": "<embedding-model>", "index": "<vector-index-name>", "path": "<field-containing-vectors>", "numCandidates": <int>, "limit": <int>, "filter": { ... }, "exact": <bool>, "searchNodePreference": { "key": "<preference>" }, "pipeline": [ { $<aggregation-stage>: { ... } }, ... ], "let": { "<variable>": <expression>, . . . } }}

$vectorSearchステージは、次のフィールドを持つドキュメントを取得します。

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

from

ドキュメント

必須

各入力ドキュメントに対して $vectorSearch がクエリを実行する対象 Atlas コレクションを指定するドキュメント。

from.connectionName

string

必須

接続レジストリ内の Atlas 接続の名前。Atlas Stream Processing は、パース時にその他の接続タイプを拒否します。

from.db

literal string

必須

ターゲットデータベースの名前。

from.coll

literal string

必須

MongoDB Vector Search インデックスを含むターゲット コレクションの名前。

as

string

必須

検索結果配列のストリーミング ドキュメントの出力フィールド。MongoDB ベクトル検索 が一致するドキュメントを返さない場合、Atlas Stream Processing はこのフィールドを空の配列に設定します。

警告: このフィールドが空の場合、またはストリーム メタデータ フィールド名と衝突する場合、Atlas Stream Processing は開始時に StreamProcessorInvalidOptions エラーを報告します。

queryVector

配列 | フィールドパス式

条件付き

一致するドキュメントを検索するための明示的な ベクトル埋め込み。

query

ドキュメント

条件付き

自動埋め込みのテキスト クエリを指定するドキュメント。

query.text

string | フィールドパス式

条件付き

自動埋め込みに使用するクエリテキスト。

model

string

任意

MongoDB ベクトル検索が query.text をベクトルに変換するために使用する埋め込みモデル。query と一緒にのみ有効です。

modelを省略すると、MongoDB ベクトル検索は、移行先 MongoDB ベクトル検索インデックスの定義で構成されたモデルを使用します。

index

string

必須

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

path

string

必須

検索対象となるベクトル埋め込みを含むターゲット コレクションのフィールド。

numCandidates

整数

条件付き

検索中に MongoDB ベクトル検索が考慮する候補の数。exact が true でない限り必須です。値の選択方法については、「numCandidates の選択」を参照してください。

limit

整数

必須

返される結果の最大数。numCandidates を超えてはなりません。

警告: limit が numCandidates を超えると、すべてのドキュメントはランタイム時に PlanExecutor エラーで失敗します。

filter

ドキュメント

任意

ベクトル検索の前に適用する事前フィルター式。サポートされている演算子については、フィルターを参照してください。

警告: filter でサポートされていない演算子を使用すると、すべてのドキュメントでランタイム時に PlanExecutor エラーが発生します。

exact

ブール値

任意

近似最近傍探索検索または厳密最近傍探索検索のどちらを実行するかを指定するフラグ。numCandidates を省略する場合は、このフィールドを提供します。

値は次のいずれかになります。

デフォルトは false です。

searchNodePreference

ドキュメント

任意

Atlas Stream Processing がクエリを特定の検索ノードにルーティングするために使用する key フィールドを含むドキュメント。key 値は空ではない string である必要があります。

pipeline

配列

任意

Atlas Stream Processing が検索結果に対して実行する追加の集計ステージ。これらは入力ドキュメントに接続される前に実行されます。

let

ドキュメント

任意

Atlas Stream Processing が各入力ドキュメントに対して評価する変数。各値は、リテラル、フィールドパス、または 式であることができます。pipeline ステージは、解決された値を $$<variable> として参照できます。

$vectorSearch 互いに排除される 2 つのクエリ モードをサポートしています。ベクトル埋め込みの場合は queryVector、自動埋め込みの場合は query.textです。どのモードでも、リテラル値またはフィールドパス式を指定できるため、1 つのストリーム プロセッサーで入力ドキュメントごとに異なるクエリを発行できます。

対象の MongoDB ベクトル検索インデックスが存在しない場合、$vectorSearch が初めて実行されると、ストリーム プロセッサーはエラー状態になります。Atlas Stream Processing は MongoServerError エラーを報告し、ドキュメントのプロセシングを停止します。

ランタイム時に queryVector または query.text が間違った型に評価される場合、Atlas Stream Processing は、構成されている場合は問題のあるドキュメントのみを デッドレターキュー (DLQ) にルーティングします。そうでない場合は削除します。ストリームプロセッサーは後続のドキュメントを引き続き処理します。DLQ ドキュメント スキーマについては、デッドレターキュー (DLQ)。 を参照してください。

Atlas Stream Processing が入力ドキュメントに接続する前に、pipeline を使用して検索結果をさらに処理します。Atlas Stream Processing は pipeline を MongoDB ベクトル検索にそのまま転送します。pipeline 内の入力ドキュメントから値を参照するには、let を介して渡し、$$<variable> として参照します。

次の例では、映画と映画館に関するデータが含まれる sample_mflix データセットにクエリを実行します。これらを実行するには、サンプル データを Atlas クラスターにロードし、embedded_movies コレクションに MongoDB ベクトル検索インデックスを作成します。