Menu Docs
Página inicial do Docs
/ / /
PyMongo
/ /

Atlas Search e índices de Vector Search

Nesta página

  • Visão geral
  • Criar um índice de pesquisa
  • Listar índices de pesquisa
  • Atualizar um Índice de Pesquisa
  • Excluir um índice de pesquisa

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.

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)

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)

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)

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")

Voltar

Multichave