Atlas Search と Vector Search インデックス
Overview
Kotlin Sync ドライバーを使用すると、 Atlas SearchおよびAtlas Vector Searchインデックスをプログラムで管理できます。
Atlas Search を使用すると、MongoDB Atlas でホストされているコレクションに対して全文検索を実行できます。 Atlas Search インデックスは、検索の動作とインデックスを作成するフィールドを指定します。
Atlas Vector Search を使用すると、MongoDB Atlas に保存されているベクトル埋め込みに対してセマンティック検索を実行できます。 ベクトル検索インデックスは、クエリ対象のベクトル埋め込みと、データを事前フィルタリングするために使用するブール値、日付、ObjectId、数値、string、または UUID 値のインデックスを定義します。
コレクションに対して次のメソッドを呼び出して、Atlas Search インデックスと Vector Search インデックスを管理できます。
createSearchIndex()
(Atlas Search インデックスのみに有効)createSearchIndexes()
listSearchIndexes()
updateSearchIndex()
dropSearchIndex()
注意
Atlas Search と Vector Search のインデックスマネジメント メソッドは非同期で実行され、正常に実行されたことを確認する前に戻る可能性があります。 インデックスの現在のステータスを確認するには、 listSearchIndexes()
メソッドを呼び出すか、 Atlas UI でインデックス リストを表示します。
次のセクションでは、前述の各メソッドの使用方法を示すコード例を示します。
検索インデックスを作成
createSearchIndex() メソッドを使用して 1 つの Atlas Search インデックスを作成できます。このメソッドを使用してベクトル検索インデックスを作成することはできません。
createSearchIndexes() メソッドを使用して、複数の Atlas Search またはベクトル検索インデックスを作成できます。各インデックスに対して SearchIndexModelインスタンスを作成し、 インスタンスのリストをSearchIndexModel
createSearchIndexes()
メソッドに渡す必要があります。
次のコード例は、Atlas Search インデックスの作成方法を示しています。
val index = Document("mappings", Document("dynamic", true)) collection.createSearchIndex("mySearchIdx", index)
次のコード例は、1 回の呼び出しで Atlas Search インデックスと Vector Search インデックスを作成する方法を示しています。
val searchIdxMdl = SearchIndexModel( "searchIdx", Document("analyzer", "lucene.standard").append( "mappings", Document("dynamic", true) ), SearchIndexType.search() ) val vectorSearchIdxMdl = SearchIndexModel( "vsIdx", Document( "fields", listOf( Document("type", "vector") .append("path", "embeddings") .append("numDimensions", 1536) .append("similarity", "dotProduct") ) ), SearchIndexType.vectorSearch() ) collection.createSearchIndexes( listOf(searchIdxMdl, vectorSearchIdxMdl) )
Atlas Searchインデックスの定義に使用される構文の詳細については、Atlas ドキュメントの「 Atlas Search インデックス構文の確認」ガイドを参照してください。
検索インデックスをリストする
listSearchIndexes() を使用できます メソッドを使用して、コレクション内のすべての Atlas Search インデックスを返します。
次のコード例は、コレクション内の検索インデックスのリストを出力する方法を示しています。
val results = collection.listSearchIndexes() results.forEach { result -> println(result) }
検索インデックスをアップデートする
updateSearchIndex() を使用できます Atlas Search インデックスを更新する方法。
次のコードは、検索インデックスを更新する方法を示しています。
val newIndex = Document("mappings", Document("dynamic", true)) collection.updateSearchIndex("<index to update>", newIndex)
検索インデックスを削除する
dropSearchIndex() を使用できます メソッドを使用して、Atlas Search インデックスを削除します。
次のコードは、コレクションから検索インデックスを削除する方法を示しています。
collection.dropIndex("<index to delete>")
詳細情報
MongoDB Atlas Search の詳細については、「 Atlas Search インデックス」のドキュメントを参照してください。