Docs Menu
Docs Home
/ /

MongoDB ベクトル検索

このガイドでは、 Kotlinドライバーで MongoDB Vector Search 機能を使用する方法を説明します。Aggregatesビルダクラスは、$vectorSearchパイプラインステージを作成するために使用できる vectorSearch()ヘルパーメソッドを提供します。このパイプラインステージでは、ドキュメントに対してセマンティック検索を実行できます。セマンティック検索とは、指定した検索タームやフレーズと意味が似ているが、必ずしも同一ではない情報を検索するタイプの検索です。

重要

機能の互換性

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

この機能を使用するには、ベクトル検索インデックスとベクトル埋め込みのインデックスを作成する必要があります。プログラムによってベクトル検索インデックスを作成する方法については、 インデックスガイドの MongoDB Search とMongoDB ベクトル検索インデックスのセクションを参照してください。ベクトル埋め込みの詳細については、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ドライバーを使用してMongoDB Vector Search を実行する方法に関するその他のチュートリアルについては、Atlas のドキュメント を参照してください。

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

戻る

MongoDB Search

項目一覧