Atlas Vector Search
Overview
このガイドでは、 Javaドライバーで Atlas ベクトル検索機能を使用する方法を説明します。Aggregates
ビルダークラスは、vectorSearch()
$vectorSearchパイプラインステージを作成するために使用できる ヘルパーメソッドを提供します。このパイプラインステージでは、ドキュメントに対してセマンティック検索を実行できます。セマンティック検索とは、指定した検索タームやフレーズと意味が似ているが、必ずしも同一ではない情報を検索するタイプの検索です。
ベクトル検索の実行
この機能を使用するには、ベクトル検索インデックスとベクトル埋め込みのインデックスを作成する必要があります。プログラムによってベクトル検索インデックスを作成する方法については、 インデックスガイドの Atlas Search とベクトル検索インデックス のセクションを参照してください。ベクトル埋め込みの詳細については、Atlas ドキュメントの「 ベクトル検索検索用のベクトル埋め込みのインデックス作成方法 」を参照してください。
ベクトル埋め込みにベクトル検索インデックスを作成したら、次のセクションに示すように、パイプラインステージでこのインデックスを参照できます。
ベクトル検索の例
次の例は、 メソッドと メソッドを使用してベクトル検索スコアを計算する集計パイプラインを構築する方法を示しています。vectorSearch()
project()
// Create an instance of the BinaryVector class as the query vector BinaryVector queryVector = BinaryVector.floatVector( new float[]{0.0001f, 1.12345f, 2.23456f, 3.34567f, 4.45678f}); // Specify the index name for the vector embedding index String indexName = "mflix_movies_embedding_index"; // Specify the path of the field to search on FieldSearchPath fieldSearchPath = fieldPath("plot_embedding"); // Limit the number of matches to 1 int limit = 1; // Create a pre-filter to only search within a subset of documents VectorSearchOptions options = exactVectorSearchOptions() .filter(gte("year", 2016)); // Create the vectorSearch pipeline stage List<Bson> pipeline = asList( vectorSearch( fieldSearchPath, queryVector, indexName, limit, options), project( metaVectorSearchScore("vectorSearchScore")));
Tip
クエリ ベクトル型
上記の例では、クエリベクトルとして機能するために BinaryVector
のインスタンスを作成していますが、Double
インスタンスの List
を作成することもできます。ただし、ストレージ効率を向上させるために、 BinaryVector
タイプを使用することをお勧めします。
次の例は、集計を実行し、前述の集計パイプラインの結果からベクトル検索メタスコアを出力する方法を示しています。
Document found = collection.aggregate(pipeline).first(); double score = found.getDouble("vectorSearchScore").doubleValue(); System.out.println("vectorSearch score: " + score);
Tip
Javaドライバーベクトル検索の例
Javaドライバーを使用して Atlas Vector Search を実行する方法に関する詳細なチュートリアルについては、 Atlas のドキュメント を参照してください。
API ドキュメント
このガイドで言及されているメソッドとタイプの詳細については、次のAPIドキュメントを参照してください。