Vector Search
Vector Search の手動/自動埋め込みクエリ、ANN/ENN、前処理/後処理フィルタ、Driver 5.10 のネストされたベクトルオプションと Bson 拡張パスを説明します。
基本的な Vector Search
Vector Search には明示的なインデックス名が必要で、$vectorSearch が集約の最初のステージになります。
クエリベクトル / 自動埋め込み
queryVector(float[]/double[]/Collection<Double>)
アプリケーションで生成したベクトルを渡します。
queryVector(BinaryVector)
MongoDB ドライバのコンパクトなバイナリベクトル表現を直接使用します。
query(String)
MongoDB 自動埋め込みインデックスにクエリテキスト自体を渡します。
query(VectorSearchQuery)
ドライバネイティブのクエリタイプを直接渡す未来互換のエスケープハッチです。
DSL コアは外部埋め込みプロバイダーを呼び出してベクトルを生成する機能を含んでいません。手動ベクトルは呼び出しアプリケーションで生成し、queryVector(...) に渡します。
ANN / ENN
ANN
approximate(numCandidates) または numCandidates(...) を使用します。ANN では候補のカウントが必要です。
ENN
exact() または exact(true) を使用します。exact を有効にすると、既存の numCandidates 値は削除されます。
前処理 / 後処理
filter()/filterFields()
$vectorSearch.filter に入る前処理として、候補の選択自体に影響を与えます。
fields(...)
$vectorSearch の後の一般的な $match 後処理です。
ネストされた / 配列埋め込み (Driver 5.10)
filter / filterFields
ネストされた埋め込みのリーフドキュメントフィルタです。
parentFilter / parentFilterFields
root documentに適用されるDriver 5.10のparentFilterです。
nestedScoreMode
1つのdocumentの複数のmatching embedding scoreをAVGまたはMAXで結合します。
Score / projection / terminal
findAll / find
Vector resultをFlux/Monoで返します。
count().execute()
vector limit後のpipeline結果数をカウントします。コーパス全体のカウントではありません。
existsQuery().execute()
Vector pipeline結果が存在するか確認します。
Driver-native post stage / options
stage(Bson)は$vectorSearchの直後に、post-filter/metadata/projectionよりも先に実行されます。driverOptions(...)は便利なAPIにまだない現在/未来のDriverオプションをそのまま使用できるescape hatchです。