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

MongoDB ベクトル検索クエリを実行する

このガイドでは、MongoDB ベクトル検索機能を使用して、ドキュメントに対して検索する方法を学べます。PHPライブラリでは、集計ビルダを使用してMongoDBのベクトル検索の検索クエリを実行できます。

MongoDB ベクトル検索 の詳細については、「 MongoDB ベクトル検索 の概要 」を参照してください。 PHPライブラリのMongoDB ベクトル検索実装は、クエリを実行するために$vectorSearch 集計演算子を内部的に使用します。この演算子の詳細については、Atlas ドキュメントの $vectorSearch参照を参照してください。

注意

MongoDB Search

ドキュメントに対して高度な全文検索を実行するには、 MongoDB Search API を使用できます。この機能について詳しくは、MongoDB 検索クエリを実行するガイドを参照してください。

MongoDB ベクトル検索の検索クエリを実行する前に、コレクションにMongoDB ベクトル検索インデックスを作成する必要があります。このインデックスタイプの作成の詳細については、MongoDB 検索インデックス ガイドを参照してください。

集計ビルダを使用してMongoDB検索クエリを実行するには、次のクラスをアプリケーションにインポートします。

use MongoDB\Builder\Stage;

集計パイプラインに $vectorSearch ステージを作成するには、次のアクションを実行します。

  1. パイプラインステージを保存するための配列を作成します。

  2. MongoDB ベクトル検索ステージを作成するには、Stage::vectorSearch() メソッドを呼び出します。

  3. vectorSearch() メソッドの本体内で、ベクトルクエリの基準を指定します。

次のコードは、基本的なMongoDB ベクトル検索検索クエリを構築するためのテンプレートを示しています。

$pipeline = [
Stage::vectorSearch(
/* MongoDB Vector Search query specifications
index: '<index name>',
path: '<path to embeddings>', ...*/
),
];

次のパラメータをvectorSearch()メソッドに渡す必要があります。

Parameter
タイプ
説明

index

string

ベクトル検索インデックスの名前

path

array or string

ベクトル埋め込みを保存するフィールド

queryVector

array

クエリのベクトル表現

limit

int

返される結果の数

このセクションでは、集計ビルダを使用してMongoDBベクトル検索検索クエリを実行する方法を学びます。このセクションの例では、 sample_mflix.embedded_moviesコレクションのサンプルデータを使用します。

注意

クエリベクトルの長さ

デモンストレーションのため、このセクションの例では、 実行可能なアプリケーションで使用するクエリベクトルと比較して、非常に少ない要素を含むサンプルクエリ ベクトルを使用します。完全長クエリベクトルを含む例を表示するには、 MongoDB ベクトル検索クイック PHPSelect your languageスタート を参照し、ページ右上隅の ドロップダウンから を選択します。

次のコードは、plot_embeddingベクトルフィールドに対してMongoDBベクトル検索クエリを実行します。

$pipeline = [
Stage::vectorSearch(
index: 'vector',
path: 'plot_embedding',
queryVector: [-0.0016261312, -0.028070757, -0.011342932],
numCandidates: 150,
limit: 5,
),
Stage::project(
_id: 0,
title: 1,
),
];
$cursor = $collection->aggregate($pipeline);
foreach ($cursor as $doc) {
echo json_encode($doc), PHP_EOL;
}

次のコードは 、前の例と同じクエリを実行しますが、ドキュメントがクエリベクトルにどの程度一致するかを示す titleフィールドと vectorSearchScore メタフィールドのみを出力します。

$pipeline = [
Stage::vectorSearch(
index: 'vector',
path: 'plot_embedding',
queryVector: [-0.0016261312, -0.028070757, -0.011342932],
numCandidates: 150,
limit: 5,
),
Stage::project(
_id: 0,
title: 1,
score: ['$meta' => 'vectorSearchScore'],
),
];
$cursor = $collection->aggregate($pipeline);
foreach ($cursor as $doc) {
echo json_encode($doc), PHP_EOL;
}

vectorSearch() メソッドを使用して、さまざまなタイプのMongoDB ベクトル検索の検索クエリを実行できます。ご希望のクエリに応じて、次の任意パラメータを vectorSearch() に渡すことができます。

任意のパラメーター
タイプ
説明
デフォルト値

exact

bool

完全最近傍(true)検索または近似近傍(false)検索を実行するかどうかを指定します

false

filter

QueryInterface or array

検索するドキュメントの事前フィルターを指定します

フィルタリングなし

numCandidates

int or null

検索中に使用する最近傍の数を指定します

null

To learn more about these parameters, see the Fields section of the $vectorSearch operator reference in the Atlas documentation.