Atlas Vector Search
Overview
このガイドでは、 Kotlinドライバー で Atlas ベクトル検索機能を使用する方法を学習できます。Aggregates
ビルダークラスは、vectorSearch()
$vectorSearchパイプラインステージを作成するために使用できる ヘルパーメソッドを提供します。このパイプラインステージでは、ドキュメントに対してセマンティック検索を実行できます。セマンティック検索とは、指定した検索タームやフレーズと意味が似ているが、必ずしも同一ではない情報を検索するタイプの検索です。
ベクトル検索の実行
この機能を使用するには、ベクトル検索インデックスとベクトル埋め込みのインデックスを作成する必要があります。 プログラムによってベクトル検索インデックスを作成する方法の詳細については、 インデックスガイドの「 Atlas Search とベクトル検索インデックス 」のセクションを参照してください。ベクトル埋め込みの詳細については、Atlas ドキュメントの「 ベクトル検索検索用のベクトル埋め込みのインデックス作成方法 」を参照してください。
ベクトル埋め込みにベクトル検索インデックスを作成したら、次のセクションに示すように、パイプラインステージでこのインデックスを参照できます。
ベクトル検索の例
このセクションの例では、次の Kotlin データ クラスでモデル化されたデータを使用します。
data class MovieAlt( val title: String, val year: Int, val plot: String, val plotEmbedding: List<Double> )
この例では、 vectorSearch()
メソッドを使用して次の仕様で正確なベクトル検索を実行する集計パイプラインを構築する方法を示します。
string値のベクトル埋め込みを使用して
plotEmbedding
フィールド値を検索しますmflix_movies_embedding_index
ベクトル検索インデックスを使用します1 つのドキュメントを返します
year
の値が少なくとも2016
であるドキュメントをフィルタリングする
Aggregates.vectorSearch( SearchPath.fieldPath(MovieAlt::plotEmbedding.name), BinaryVector.floatVector(floatArrayOf(0.0001f, 1.12345f, 2.23456f, 3.34567f, 4.45678f)), "mflix_movies_embedding_index", 1.toLong(), exactVectorSearchOptions().filter(Filters.gte(MovieAlt::year.name, 2016)) )
Tip
クエリ ベクトル型
上記の例では、クエリベクトルとして機能するために BinaryVector
のインスタンスを作成していますが、Double
インスタンスの List
を作成することもできます。 ただし、ストレージ効率を向上させるために、 BinaryVector
タイプを使用することをお勧めします。
Tip
Kotlinベクトル検索の例
Kotlinドライバーを使用して Atlas Vector Search を実行する方法に関する詳細なチュートリアルについては、 Atlas のドキュメント を参照してください。
API ドキュメント
このガイドで言及されているメソッドとタイプの詳細については、次のAPIドキュメントを参照してください。