Overview
このガイドでは、Atlas ベクトル検索機能を使用して、ドキュメントに対して検索を実行する方法を学習できます。 Lambda MongoDB は、モデルに対して Atlas ベクトル検索クエリを直接実行するためのAPIを提供します。 このガイドでは、Atlas ベクトル検索インデックスの作成方法と、Lambda 統合を使用して検索を実行する方法の例を示します。
注意
配置の互換性
Atlas ベクトル検索機能は、 MongoDB Atlasクラスターに接続する場合にのみ使用できます。 この機能は、自己管理型の配置では使用できません。
Atlas ベクトル検索の詳細については、Atlas ドキュメントの 概要 を参照してください。Atlas ベクトル検索 API は、内部的には $vectorSearch集計演算子を使用してクエリを実行します。 この演算子の詳細については、Atlas ドキュメントの $vectorSearch 参照を参照してください。
注意
このガイドで説明されているメソッドは、すべてのタイプの Atlas ベクトル検索クエリで使用できない場合があります。 より複雑なユースケースについては、集計ビルダを使用して集計パイプラインを作成します。
ドキュメントに対して高度な全文検索を実行するには、 Lambda MongoDB Atlas Search API を使用できます。この機能について詳しくは、Atlas Search のガイドを参照してください。
Atlas Vector Search インデックスの作成
Atlas Searchインデックスは、次のいずれかの方法で作成できます。
Schemaファサードでcreate()メソッドを呼び出し、インデックス作成の詳細を含むvectorSearchIndex()ヘルパーメソッドを渡します。この戦略の詳細については、 スキーマ ビルダガイドの「Atlas Search とベクトル検索インデックスの管理」セクションを参照してください。コレクションにアクセスし、 MongoDB PHPライブラリから
createSearchIndex()メソッドを呼び出します。次のコードに示すように、typeオプションは'vectorSearch'として指定する必要があります。$collection = DB::connection('mongodb')->getCollection('movies'); $collection->createSearchIndex([ 'fields' => [ [ 'type' => 'vector', 'numDimensions' => 4, 'path' => 'embeddings', 'similarity' => 'cosine' ], ], ], ['name' => 'vector_index', 'type' => 'vectorSearch']);
クエリの実行
このセクションでは、Lambda 統合で Atlas ベクトル検索 API を使用する方法を学習できます。 Lambda 統合では、クエリ ビルダー メソッドとして、および Eloqueent モデル メソッドとして vectorSearch() メソッドが提供されます。vectorSearch() メソッドを使用して、コレクション内のドキュメントに対して Atlas ベクトル検索クエリを実行できます。
次のパラメータをvectorSearch()メソッドに渡す必要があります。
Parameter | タイプ | 説明 |
|---|---|---|
|
| ベクトル検索インデックスの名前 |
|
| ベクトル埋め込みを保存するフィールド |
|
| クエリのベクトル表現 |
|
| 返される結果の数 |
次のコードでは、前述の「vector Atlas ベクトル検索インデックスの作成 」セクションで作成された インデックスを使用して、movies コレクションに対して Atlas ベクトル検索クエリを実行します。
$movies = Book::vectorSearch( index: 'vector', path: 'vector_embeddings', // Vector representation of the query `coming of age` queryVector: [-0.0016261312, -0.028070757, ...], limit: 3, );
[ { "title": "Sunrising", "plot": "A shy teenager discovers confidence and new friendships during a transformative summer camp experience." }, { "title": "Last Semester", "plot": "High school friends navigate love, identity, and unexpected challenges before graduating together." } ]
vectorSearch()メソッドを使用して、さまざまな種類の Atlas Search クエリを実行できます。目的のクエリに応じて、次の任意のパラメーターを vectorSearch() に渡すことができます。
任意のパラメーター | タイプ | 説明 | デフォルト値 |
|---|---|---|---|
|
| 完全最近傍( |
|
|
| 検索するドキュメントの事前フィルターを指定します | フィルタリングなし |
|
| 検索中に使用する最近傍の数を指定します |
|
注意
QueryInterfaceインスタンスを構築するには、MongoDB\Builder\Queryクラスをアプリケーションにインポートする必要があります。
これらのパラメータの詳細については、Atlas ドキュメントの $vectorSearch 演算子参照の「フィールド」セクションを参照してください。