Docs Menu
Docs Home
/ / /
PHP ライブラリ マニュアル
/

Atlas Vector Search

項目一覧

  • Overview
  • Atlas Vector Search インデックス
  • ベクトル検索集計ステージ
  • Atlas Search クエリの例
  • 基本的なベクトル検索クエリ
  • ベクトル検索スコア
  • ベクトル検索オプション

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

注意

配置の互換性

Atlas ベクトル検索機能は、 MongoDB Atlasクラスターに接続する場合にのみ使用できます。 この機能は、自己管理型の配置では使用できません。

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

注意

Atlas Search

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

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

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

use MongoDB\Builder\Pipeline;
use MongoDB\Builder\Stage;

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

  1. パイプラインステージを保存するには、Pipelineインスタンスを作成します。

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

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

次のコードは、基本的な Atlas Search クエリを作成するためのテンプレートを示しています。

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

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

Parameter
タイプ
説明

index

string

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

path

array or string

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

queryVector

array

クエリのベクトル表現

limit

int

返される結果の数

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

注意

クエリベクトルの長さ

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

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

$pipeline = new 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":"Thrill Seekers"}
{"title":"About Time"}
{"title":"Timecop"}
// Results truncated

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

$pipeline = new 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;
}
{"title":"Thrill Seekers","score":0.927734375}
{"title":"About Time","score":0.925750732421875}
{"title":"Timecop","score":0.9241180419921875}
// Results truncated

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

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

exact

bool

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

false

filter

QueryInterface or array

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

フィルタリングなし

numCandidates

int or null

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

null

これらのパラメータの詳細については、Atlas ドキュメントの $vectorSearch 演算子参照の「フィールド」セクションを参照してください。

戻る

Atlas Search