Visão geral
Neste guia, você pode aprender como criar e gerenciar índices Atlas Search e Vector Search. Esses índices permitem usar as seguintes funcionalidades:
Atlas Search: realize pesquisas rápidas de texto completo
Atlas Vector Search: Executar pesquisas semânticas (semelhança) em incorporações vetoriais
Os índices do Atlas Search e Vector Search especificam quais campos indexar, especificam como esses campos são indexados e definem outras configurações opcionais.
Este guia explica como executar as seguintes ações para gerenciar seus índices do Atlas Search e Vector Search :
Observação
Dados de amostra
Os exemplos deste guia usam a coleção embedded_movies
no banco de dados sample_mflix
, que é um dos conjuntos de dados de amostra do Atlas . Para obter instruções sobre como importar os dados de amostra do Atlas, consulte Carregar dados de amostra na documentação do Atlas.
Crie um modelo de índice de pesquisa
Para criar um Atlas Search, você deve primeiro construir uma instância do SearchIndexModel
que define seu índice de pesquisa. Para começar a construir uma instância do SearchIndexModel
, chame o método SearchIndexModel::builder()
.
Observação
Instanciação de modelos
O driver Rust implementa o padrão de design Builder para a criação de alguns tipos de estruturas, incluindo SearchIndexModel
. Você pode usar o método builder()
para construir uma instância de cada tipo encadeando métodos de construtor de opção.
O driver Rust fornece os seguintes métodos de construtor SearchIndexModel
:
Método Builder | Parameter Type | Descrição |
---|---|---|
|
| Especifica a definição do índice. Se você omitir essa configuração, o driver criará um Índice de pesquisa do Atlas com mapeamentos dinâmicos. |
|
| Define o nome do índice. Se você omitir esta configuração, o driver definirá o nome para |
|
| Define o tipo de índice. Se você omitir esta configuração, o driver criará um índice do Atlas Search por padrão. |
Para saber mais sobre mapeamentos de campo do Atlas Search, consulte Definir mapeamentos de campo na documentação do Atlas.
Para saber mais sobre como definir índices do Atlas Vector Search, consulte Como indexar campos para o Vector Search na documentação do Atlas.
Modelos de exemplo
O exemplo seguinte cria uma instância SearchIndexModel
para fornecer especificações para um índice denominado search_idx
. O código especifica mapeamentos estáticos dos campos title
e released
:
let def = doc! { "mappings": doc! { "dynamic": false, "fields": { "title": {"type": "string"}, "released": {"type": "date"} } }}; let idx_model = SearchIndexModel::builder() .definition(def) .name("search_idx".to_string()) .index_type(SearchIndexType::Search) .build();
O exemplo a seguir cria uma instância de SearchIndexModel
para fornecer especificações para um índice chamado vs_idx
. O código especifica o caminho de incorporação como plot_embedding
, indexa 1536
dimensões e utiliza a função de similaridade vetorial "euclidean"
:
let def = doc! { "fields": [{ "type": "vector", "path": "plot_embedding", "numDimensions": 1536, "similarity": "euclidean", }] }; let idx_model = SearchIndexModel::builder() .definition(def) .name("vs_idx".to_string()) .index_type(SearchIndexType::VectorSearch) .build();
Criar um índice de pesquisa
Você pode criar um índice do Atlas Search ou do Vector Search em uma coleção chamando o método create_search_index()
em uma instância Collection
. Esse método aceita um modelo de índice como parâmetro, especificado em uma instância SearchIndexModel
.
Exemplo
O exemplo a seguir cria um índice de pesquisa do Atlas Search na collection embedded_movies
. O código cria um SearchIndexModel
que define o nome do índice e habilita o mapeamento dinâmico. Em seguida, o código passa a instância SearchIndexModel
para o método create_search_index()
para criar o índice do Atlas Search:
let idx_model = SearchIndexModel::builder() .definition(doc! { "mappings": doc! {"dynamic": true} }) .name("example_index".to_string()) .build(); let result = my_coll.create_search_index(idx_model).await?; println!("Created Atlas Search index:\n{}", result);
Created Atlas Search index: "example_index"
Criar múltiplos índices de pesquisa
Você pode criar vários índices do Atlas Search e do Vector Search de uma só vez chamando o método create_search_indexes()
em uma instância Collection
. Este método aceita um vetor de instâncias SearchIndexModel
como parâmetro.
Exemplo
Este exemplo executa as seguintes ações:
Cria uma instância
SearchIndexModel
que especifica um índice do Atlas Search chamadoas_idx
Cria uma instância
SearchIndexModel
que especifica um índice do Atlas Vector Search chamadovs_idx
Passa um
vec
de ambas as instâncias doSearchIndexModel
para o métodocreate_search_indexes()
Cria os índices Atlas Search e Vector Search na collection
embedded_movies
let as_idx = SearchIndexModel::builder() .definition(doc! { "mappings": doc! {"dynamic": true} }) .name("as_idx".to_string()) .build(); let vs_idx = SearchIndexModel::builder() .definition(doc! { "fields": [{ "type": "vector", "path": "plot_embedding", "numDimensions": 1536, "similarity": "euclidean", }] }) .name("vs_idx".to_string()) .index_type(SearchIndexType::VectorSearch) .build(); let models = vec![as_idx, vs_idx]; let result = my_coll.create_search_indexes(models).await?; println!("Created indexes:\n{:?}", result);
Created Atlas Search indexes: ["as_idx", "vs_idx"]
Listar índices de pesquisa
Você pode acessar informações sobre os índices existentes do Atlas Search e do Vector Search de uma coleção chamando o método list_search_indexes()
na coleção.
Exemplo
O exemplo a seguir acessa informações sobre os índices do Atlas Search e do Vector Search criados na seção Criar vários índices de pesquisa desta página. O código chama o método list_search_indexes()
e imprime uma lista dos índices de pesquisa do Atlas Search e do Vector Search na coleção:
let mut cursor = my_coll.list_search_indexes().await?; while let Some(index) = cursor.try_next().await? { println!("{}\n", index); }
{ "id": "...", "name": "as_idx", "status": "READY", "queryable": true, "latestDefinitionVersion": {...}, "latestDefinition": { "mappings": { "dynamic": true } }, "statusDetail": [...] } { "id": "...", "name": "vs_idx", "type": "vectorSearch", "status": "READY", "queryable": true, ..., "latestDefinition": { "fields": [{ "type": "vector", "path": "plot_embedding", "numDimensions": 1536, "similarity": "euclidean" }] }, "statusDetail": [...] }
Dica
Para saber mais sobre como iterar por meio de um cursor, consulte o guia Acessar dados usando um cursor .
Atualizar um Índice de Pesquisa
Você pode atualizar um índice do Atlas Search ou Vector Search chamando o método update_search_index()
em uma instância Collection
. Este método aceita os seguintes parâmetros:
Nome do índice a ser atualizado
Documento de definição de índice modificado
Exemplo
O exemplo a seguir atualiza o índice do Vector Search denominado vs_index
criado na seção Criar vários índices de pesquisa desta página. O código cria um novo documento de definição de índice que instrui o índice a usar "dotProduct"
como a função de similaridade vetorial. Em seguida, o código chama o método update_search_index()
para atualizar o índice:
let name = "vs_index"; let updated_def = doc! { "fields": [{ "type": "vector", "path": "plot_embedding", "numDimensions": 1536, "similarity": "dotProduct", }] }; my_coll.update_search_index(name, updated_def).await?;
Excluir um índice de pesquisa
Você pode excluir um índice do Atlas Search ou do Vector Search chamando o método delete_search_index()
em uma instância Collection
. Esse método aceita o nome do índice a ser excluído como parâmetro.
Exemplo
O exemplo seguinte exclui o índice do Atlas Search denominado example_index
criado na seção Criar um Índice do Atlas Search desta página. O código passa o nome do índice para o método delete_search_index()
para excluir o índice:
let name = "example_index"; my_coll.drop_search_index(name).await?;
Informações adicionais
Para saber mais sobre outros índices que você pode criar usando o driver Rust, consulte o guia Índices .
Para saber mais sobre o Atlas Search, consulte a seguinte documentação do Atlas:
Para aprender mais sobre o Atlas Vector Search, consulte a seguinte documentação do Atlas:
Documentação da API
Para saber mais sobre os métodos e tipos mencionados neste guia, consulte a documentação da API abaixo: