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

$vectorSearch 集計ステージ

$vectorSearch ステージは、各ストリーミングドキュメントに MongoDB Vector Search クエリの結果を追加します。入力ドキュメントごとに、このステージはコレクションに対して $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 でない限り、必須です。値を選択する方法については、「 numKeys の選択 」を参照してください。

limit

整数

必須

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

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

filter

ドキュメント

任意

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

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

exact

ブール値

任意

Ann 検索または ENN 検索のどちらを実行するかを指定するフラグ。numCandidates を省略する場合は、このフィールドを指定します。

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

デフォルトは false です。

searchNodePreference

ドキュメント

任意

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

pipeline

配列

任意

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

let

ドキュメント

任意

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

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

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

queryVectorquery.textまたは が実行時に間違ったタイプと評価された場合、Atlas Stream Processing は、競合ドキュメントのみをデッドレターキュー(DLQ)にルーティングするか、そうでない場合は削除します。ストリーム プロセッサは、後のドキュメントの処理を続行します。 DLQドキュメントスキーマについては、「 デッド文字キュー 」を参照してください。

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

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