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

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

このガイドでは、Kotlin 同期ドライバーを使用してMongoDB ベクトル検索の検索クエリを実行する方法を学ぶことができます。Aggregates ビルダクラスには vectorSearch() ヘルパーメソッドが用意されています。このメソッドを使用して $vectorSearchパイプラインステージを作成できます。

重要

機能の互換性

この機能をサポートするMongoDB Atlasのどのバージョンについては、 MongoDB Atlasドキュメントの「 制限 」を参照してください。

MongoDB ベクトル検索の検索クエリを実行する前に、コレクションにMongoDB ベクトル検索インデックスを作成する必要があります。プログラムによってベクトル検索インデックスを作成する方法については、MongoDB Search とベクトル検索インデックスのガイドを参照してください。

次に、集計パイプラインで vectorSearch() メソッドを使用してMongoDB ベクトル検索クエリを実行できます。このメソッドは次のパラメーターを受け入れます:

  • path: 検索するフィールド

  • queryVector:検索クエリーを表すベクトル埋め込み

  • indexName: 使用するMongoDB ベクトル検索インデックスの名前

  • limit: 返される結果の最大数

  • options: (任意)ベクトル検索クエリーを構成するために使用できるオプションのセット

この例では、次のアクションを実行するMongoDB ベクトル検索クエリを実行します。

  • plot_embeddingベクトルフィールドをクエリします。

  • 結果を5ドキュメントに制限します。

  • 150 候補を考慮する近似最近傍(ANN)ベクトル検索を指定します。Ann 検索の詳細については、 MongoDB Atlasドキュメントの ANN 検索 を参照してください。

val vectorValues = FloatArray(1536) { i -> (i % 10).toFloat() * 0.1f }val queryVector = BinaryVector.floatVector(vectorValues)val indexName = "<vector search index>" // Specifies the path of the field to searchval fieldSearchPath: FieldSearchPath = fieldPath("plot_embedding") // Creates the vector search pipeline stage with a limit and numCandidatesval pipeline: List<Bson> = listOf( vectorSearch( fieldSearchPath, queryVector, indexName, 5L, approximateVectorSearchOptions(150) ), project( Projections.fields( Projections.excludeId(), Projections.include("title") ) )) val results = collection.aggregate(pipeline) results.forEach { doc -> println(doc.toJson())}

Tip

クエリ ベクトル型

上記の例では、クエリベクトルとして機能するために BinaryVector のインスタンスを作成していますが、Double インスタンスの List を作成することもできます。 ただし、ストレージ効率を向上させるために、 BinaryVector タイプを使用することをお勧めします。

次の例は、前の例と同じベクトル検索クエリーを実行し、ドキュメントのベクトル検索メタスコアを出力する方法を示しています。このスコアは、クエリベクトルに対する各ドキュメントの関連性を表します。

val pipeline: List<Bson> = listOf( vectorSearch( fieldSearchPath, queryVector, indexName, 5L, approximateVectorSearchOptions(150) ), project( Projections.fields( Projections.excludeId(), Projections.include("title"), Projections.metaVectorSearchScore("score") ) )) val results = collection.aggregate(pipeline) results.forEach { doc -> println("Title: ${doc.getString("title")}, Score: ${doc.getDouble("score")}")}

Tip

ベクトル検索チュートリアル

MongoDB ベクトル検索検索クエリの実行方法を示すその他のチュートリアルについては、MongoDB AtlasドキュメントのMongoDB ベクトル検索チュートリアルを参照してください。

このガイドで言及されているメソッドとタイプの詳細については、次のAPIドキュメントを参照してください。