Atlas Search e índices de Vector Search
Nesta página
Visão geral
Você pode gerenciar seus índices do Atlas Search e Atlas Vector Search usando o PyMongo. Os índices especificam o comportamento da busca e quais campos indexar.
O Atlas Search permite realizar pesquisas de texto completo em coleções hospedadas no MongoDB Atlas. Os índices do Atlas Search especificam o comportamento da pesquisa e quais campos indexar.
O Atlas Vector Search permite que você realize pesquisas semânticas em incorporações vetoriais armazenadas no MongoDB Atlas. Os índices de pesquisa de vetores definem os índices para as incorporações vetoriais nas quais você deseja fazer query e os valores booleanos, de data, objectId, numéricos, de string ou UUID que você deseja usar para pré-filtrar seus dados.
Você pode chamar os seguintes métodos em uma coleção para gerenciar seus índices Atlas Search e Vector Search :
create_search_index()
create_search_indexes()
list_search_indexes()
update_search_index()
drop_search_index()
Observação
Os métodos de gerenciamento do Atlas Search Index são executados de forma assíncrona. Os métodos do driver podem ser gerados antes de confirmar que foram executados corretamente. Para determinar o status atual dos índices, chame o método list_search_indexes()
.
As seções a seguir fornecem exemplos de código que demonstram como usar cada um dos métodos anteriores.
Criar um índice de pesquisa
Você pode usar os métodos create_search_index() e create_search_indexes() para criar índices do Atlas Search ou índices do Atlas Vector Search.
O seguinte exemplo de código mostra como criar um único índice do Atlas Search:
index = { "definition": { "mappings": { "dynamic": True } }, "name": "<index name>", } collection.create_search_index(index)
O seguinte exemplo de código mostra como criar um único índice do Atlas Vector Search usando o objeto SearchIndexModel:
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)
Você pode usar o método create_search_indexes() para criar múltiplos índices. Esses índices podem ser índices do Atlas Search ou do Vector Search. O método create_search_indexes()
usa uma lista de objetos SearchIndexModel
que correspondem a cada índice que você deseja criar.
O seguinte exemplo de código mostra como criar um índice do Atlas Search e um índice do 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)
Listar índices de pesquisa
Você pode usar o método list_search_indexes() para obter informações sobre os índices do Atlas Search e do Vector Search de uma coleção.
O seguinte exemplo de código mostra como imprimir uma lista dos índices de pesquisa de uma coleção:
results = list(collection.list_search_indexes()) for index in results: print(index)
Atualizar um Índice de Pesquisa
Você pode usar o método update_search_index() para atualizar um índice do Atlas Search ou do Vector Search.
O seguinte exemplo de código mostra como atualizar um índice do Atlas Search:
new_index_definition = { "mappings": { "dynamic": False } } collection.update_search_index("my_index", new_index)
O seguinte exemplo de código mostra como atualizar um índice do 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)
Excluir um índice de pesquisa
Você pode usar o método drop_search_index() para remover um índice do Atlas Search ou do Vector Search.
O seguinte código mostra como excluir um índice de pesquisa de uma coleção:
collection.drop_index("my_index")