Docs Menu
Docs Home
/ /

MongoDB ベクトル検索

このガイドでは、MongoDB ベクトル検索機能を使用して、ドキュメントに対して検索する方法を学べます。MongoDB は、モデルに対して MongoDB ベクトル検索クエリを直接実行するための API を提供します。このガイドでは、MongoDB ベクトル検索インデックスの作成方法と、Laravel 統合を使用して検索する方法の例を示します。

注意

配置の互換性

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

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

注意

このガイドで説明されているメソッドは、すべてのタイプのMongoDB ベクトル検索クエリで使用できない場合があります。より複雑なユースケースについては、集計ビルダを使用して集計パイプラインを作成します。

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

MongoDB Search インデックスは、次のいずれかの方法で作成できます。

  • Schema ファサード上の create() メソッドを呼び出し、インデックス作成の詳細を含む vectorSearchIndex() ヘルパーメソッドを渡します。この戦略について詳しくは、スキーマビルダガイドの「MongoDB Search と MongoDB Vector 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']);

このセクションでは、Laravel 統合でMongoDB ベクトル検索 API を使い方を学ぶことができます。Lambda 統合では、クエリ ビルダー メソッドとして、および Eloqueent モデル メソッドとして vectorSearch() メソッドが提供されます。vectorSearch() メソッドを使用して、コレクション内のドキュメントに対してMongoDB ベクトル検索クエリを実行できます。

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

Parameter
タイプ
説明

index

string

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

path

string

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

queryVector

array

クエリのベクトル表現

limit

int

返される結果の数

次のコードでは、前述のMongoDB ベクトル検索インデックスの作成セクションで作成されたvectorインデックスを使用して、moviesコレクションに対してMongoDB ベクトル検索クエリを実行します。

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

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

exact

bool

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

false

filter

QueryInterface or array

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

フィルタリングなし

numCandidates

int or null

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

null

注意

QueryInterfaceインスタンスを構築するには、MongoDB\Builder\Queryクラスをアプリケーションにインポートする必要があります。

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

戻る

MongoDB Search

項目一覧