MongoDB.local SF, Jan 15: See the speaker lineup & ship your AI vision faster. Use WEB50 to save 50%
Find out more >
Menu Docs
Página inicial do Docs
/ /

Índices de Pesquisa e Índices de Pesquisa Vetorial do MongoDB

Neste guia, você pode aprender como criar e gerenciar índices de pesquisa MongoDB e índices de pesquisa MongoDB Vector. Esses índices permitem usar as seguintes funcionalidades:

  • MongoDB pesquisa: realize pesquisas rápidas e de texto completo

  • pesquisa vetorial MongoDB: Executa pesquisas semânticas (semelhança) em incorporações vetoriais

Os índices MongoDB Pesquisa e MongoDB Vector Pesquisa 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 de pesquisa MongoDB e índices de pesquisa vetorial MongoDB:

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.

Para criar um índice de pesquisa MongoDB, você deve primeiro criar uma instância do SearchIndexModel que define suas especificações de índice. 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

definition()

Document

Especifica a definição do índice. Se você omitir essa configuração, o driver criará um índice de pesquisa com mapeamentos dinâmicos.

name()

String

Define o nome do índice. Se você omitir esta configuração, o driver definirá o nome para default.

index_type()

SearchIndexType

Define o tipo de índice. Se você omitir essa configuração, o driver criará um índice de pesquisa por padrão.

Para saber mais sobre mapeamentos de campo do MongoDB pesquisa, veja Definir mapeamentos de campo na documentação do Atlas.

Para saber mais sobre como definir índices de pesquisa vetorial do MongoDB, consulte Como indexar campos para pesquisa vetorial na documentação do Atlas.

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();

Você pode criar um índice do MongoDB pesquisa ou do MongoDB pesquisa vetorial em uma coleção chamando o método create_search_index() em uma instância Collection. Este método aceita um modelo de índice como um parâmetro, especificado em uma instância do SearchIndexModel.

O exemplo a seguir cria um índice de pesquisa MongoDB na coleção 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 de pesquisa MongoDB :

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 MongoDB Search index:\n{}", result);
Created MongoDB Search index:
"example_index"

Você pode criar vários índices de pesquisa do MongoDB e Vector Search chamando o método create_search_indexes() em uma instância Collection. Este método aceita um vetor de instâncias do SearchIndexModel como um parâmetro.

Este exemplo executa as seguintes ações:

  1. Cria uma instância SearchIndexModel que especifica um índice de pesquisa chamado as_idx

  2. Cria uma instância SearchIndexModel que especifica um índice do MongoDB pesquisa vetorial chamado vs_idx

  3. Passa um vec de ambas as instâncias do SearchIndexModel para o método create_search_indexes()

  4. Cria os índices de pesquisa MongoDB Search e MongoDB Vector Search na coleção 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 MongoDB Search indexes:
["as_idx", "vs_idx"]

Você pode acessar informações sobre os índices de pesquisa MongoDB e MongoDB Vector Search existentes de uma coleção chamando o método list_search_indexes() na coleção.

O exemplo a seguir acessa informações sobre os índices de pesquisa MongoDB e os índices de pesquisa vetorial MongoDB criados na 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 MongoDB pesquisa e MongoDB Vector pesquisa 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 .

Você pode atualizar um índice da MongoDB pesquisa ou da MongoDB pesquisa vetorial 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

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?;

Você pode excluir um índice do MongoDB pesquisa ou do MongoDB pesquisa vetorial chamando o método delete_search_index() em uma instância Collection. Este método aceita o nome do índice a ser excluído como um parâmetro.

O exemplo seguinte excluir o índice de pesquisa do MongoDB denominado example_index criado na seção Criar um Índice de Pesquisa 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?;

Para saber mais sobre outros índices que você pode criar usando o driver Rust, consulte o guia Índices .

Para aprender mais sobre a pesquisa MongoDB, consulte a seguinte documentação do Atlas:

Para saber mais sobre MongoDB pesquisa vetorial, consulte a seguinte documentação do Atlas:

Para saber mais sobre os métodos e tipos mencionados neste guia, consulte a documentação da API abaixo:

Voltar

Indexes

Nesta página