Docs 菜单
Docs 主页
/ / /
pymongo
/ /

Atlas Search和 Vector Search 索引

在此页面上

  • Overview
  • 创建搜索索引
  • 搜索索引列表
  • 更新搜索索引
  • 删除搜索索引

您可以使用 PyMongo 管理您的 Atlas SearchAtlas Vector Search 索引。索引指定了搜索行为以及要索引的字段。

Atlas Search 功能使您能够对 MongoDB Atlas 上托管的集合执行全文搜索。Atlas Search 索引指定了搜索行为以及要索引的字段。

Atlas Vector Search 使您能够对存储在 MongoDB Atlas 中的向量嵌入执行语义搜索。向量搜索索引定义要查询的向量嵌入的索引,以及要用于预过滤数据的布尔值、日期、objectId、数字、字符串或 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_indexes() 方法创建 Atlas Search 索引或 Atlas Vector Search 索引。

以下代码示例展示了如何创建单个 Atlas Search 索引:

index = {
"definition": {
"mappings": {
"dynamic": True
}
},
"name": "<index name>",
}
collection.create_search_index(index)

下面的代码示例展示了如何使用 SearchIndexModel 对象创建单个 Atlas Vector Search 索引:

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_indexes() 方法来创建多个索引。这些索引可以是 Atlas Search 或 Vector Search 搜索索引。create_search_indexes() 方法采用与要创建的每个索引对应的 SearchIndexModel 对象的列表。

以下代码示例展示了如何创建 Atlas Search 索引和 Atlas Vector Search 索引:

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_indexes() 方法来获取有关集合的 Atlas Search 和 Vector Search 索引的信息。

以下代码示例显示如何打印集合的搜索索引列表:

results = list(collection.list_search_indexes())
for index in results:
print(index)

您可以使用 update_search_index() 方法更新 Atlas Search 或 Vector Search 索引。

以下代码示例展示如何更新 Atlas Search 索引:

new_index_definition = {
"mappings": {
"dynamic": False
}
}
collection.update_search_index("my_index", new_index)

以下代码示例展示如何更新 Atlas Vector Search 索引:

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 或 Vector Search 索引。

以下代码展示了如何从集合中删除搜索索引:

collection.drop_index("my_index")

后退

Multikey