Overview
In this guide, you can learn how to use the MongoDB Vector Search feature in the Kotlin driver. The Aggregates builders class provides the the vectorSearch() helper method that you can use to create a $vectorSearch pipeline stage. This pipeline stage allows you to perform a semantic search on your documents. A semantic search is a type of search which locates information that is similar in meaning, but not necessarily identical, to your provided search term or phrase.
ベクトル検索の実行
この機能を使用するには、ベクトル検索インデックスとベクトル埋め込みのインデックスを作成する必要があります。プログラムによってベクトル検索インデックスを作成する方法の詳細については、インデックスガイドのMongoDB Search と MongoDB Vector 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ベクトル検索の例
Visit the Atlas documentation to find more tutorials on using the Kotlin driver to perform a MongoDB Vector Search.
API ドキュメント
このガイドで言及されているメソッドとタイプの詳細については、次のAPIドキュメントを参照してください。