Atlas Search と Vector Search インデックス
Overview
PyMongoを使用して、 Atlas SearchおよびAtlas ベクトル検索インデックスを管理できます。インデックスは、検索の動作とインデックスを作成するフィールド を指定します。
Atlas Search を使用すると、MongoDB Atlas でホストされているコレクションに対して全文検索を実行できます。 Atlas Search インデックスは、検索の動作とインデックスを作成するフィールドを指定します。
Atlas Vector Search を使用すると、MongoDB Atlas に保存されているベクトル埋め込みに対してセマンティック検索を実行できます。 ベクトル検索インデックスは、クエリ対象のベクトル埋め込みと、データを事前フィルタリングするために使用するブール値、日付、ObjectId、数値、string、または UUID 値のインデックスを定義します。
コレクションに対して次のメソッドを呼び出して、Atlas Search インデックスと Vector Search インデックスを管理できます。
create_search_index()
create_search_indexes()
list_search_indexes()
update_search_index()
drop_search_index()
注意
Atlas Search インデックス マネジメントのメソッドは非同期で実行されます。ドライバー メソッドは、正常に実行されたことを確認する前に戻ることができます。インデックスの現在のステータスを確認するには、list_search_indexes()
メソッドを呼び出します。
次のセクションでは、前述の各メソッドの使用方法を示すコード例を示します。
検索インデックスを作成
create_search_index() を使用できます および create_search_indexs() メソッドを使用して、Atlas Search インデックスまたは Atlas ベクトル検索インデックスを作成します。
次のコード例は、Atlas Search インデックスを1つ作成する方法を示しています。
index = { "definition": { "mappings": { "dynamic": True } }, "name": "<index name>", } collection.create_search_index(index)
次のコード例は、 SearchIndexModel を使用して単一の Atlas ベクトル検索インデックスを作成する方法を示しています。 オブジェクト:
from pymongo.operations import SearchIndexModel search_index_model = SearchIndexModel( definition={ "fields": [ { "type": "vector", "numDimensions": <number of dimensions>, "path": "<field to index>", "similarity": "<select from euclidean, cosine, dotProduct>" } ] }, name="<index name>", type="vectorSearch", ) collection.create_search_index(model=search_index_model)
create_search_indexs() 複数のインデックスを作成する方法これらのインデックスは、Atlas Search またはベクトル検索インデックスになります。create_search_indexes()
メソッドは、作成する各インデックスに対応するSearchIndexModel
オブジェクトのリストを受け取ります。
次のコード例は、Atlas Searchインデックスと Atlas ベクトル検索インデックスを作成する方法を示しています。
search_idx = SearchIndexModel( definition ={ "mappings": { "dynamic": True } }, name="my_index", ) vector_idx = SearchIndexModel( definition={ "fields": [ { "type": "vector", "numDimensions": <number of dimensions>, "path": "<field to index>", "similarity": "<select from euclidean, cosine, dotProduct>" } ] }, name="my_vector_index", type="vectorSearch", ) indexes = [search_idx, vector_idx] collection.create_search_indexes(models=indexes)
検索インデックスをリストする
list_search_indexs() を使用できます メソッドを使用して、コレクションの Atlas Search インデックスとベクトル検索インデックスに関する情報を取得します。
次のコード例は、コレクションの検索インデックスのリストを出力する方法を示しています。
results = list(collection.list_search_indexes()) for index in results: print(index)
検索インデックスをアップデートする
update_search_index() メソッドを使用して、 Atlas Search またはベクトル検索インデックスを更新します。
次のコード例は、Atlas Searchインデックスを更新する方法を示しています。
new_index_definition = { "mappings": { "dynamic": False } } collection.update_search_index("my_index", new_index)
次のコード例は、Atlas ベクトル検索インデックスを更新する方法を示しています。
new_index_definition = { "fields": [ { "type": "vector", "numDimensions": 1536, "path": "<field to index>", "similarity": "euclidean" }, ] } collection.update_search_index("my_vector_index", new_index_definition)
検索インデックスを削除する
drop_search_index() を使用できます メソッドを使用して、 Atlas Search またはベクトル検索インデックスを削除します。
次のコードは、コレクションから検索インデックスを削除する方法を示しています。
collection.drop_index("my_index")