Menu Docs
Página inicial do Docs
/ / /
Driver C#/ .NET
/

Atlas Search e índices de Vector Search

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.

Observação

Os métodos de gerenciamento de índice do Atlas Search são executados de forma assíncrona. Os métodos do driver podem retornar um resultado antes que a ação desejada seja concluída no servidor.

Este guia explica como executar as seguintes ações para gerenciar seus índices do Atlas Search e Vector Search :

  • Crie um modelo de índice de pesquisa

  • Criar um índice de pesquisa

  • Criar múltiplos índices de pesquisa

  • Listar índices de pesquisa

  • Atualizar um Índice de Pesquisa

  • Excluir um índice de pesquisa

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 do Atlas Search ou Vector Search , você deve primeiro construir uma instância do CreateSearchIndexModel que define suas especificações de índice.

O CreateSearchIndexModel tem as seguintes propriedades:

Propriedade
Tipo
Descrição

definition

BsonDocument

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.

name

string

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

type

SearchIndexType

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.

O exemplo seguinte cria uma instância CreateSearchIndexModel para fornecer especificações para um índice denominado search_idx. O código especifica mapeamentos estáticos dos campos title e released:

var def = new BsonDocument {
{ "mappings", new BsonDocument {
{ "dynamic", false },
{ "fields", new BsonDocument {
{ "title", new BsonDocument { {"type", "string" } } },
{ "released", new BsonDocument { { "type", "date" } } } } }
} }
};
var indexModel = new CreateSearchIndexModel(
"search_idx",
SearchIndexType.Search,
def
);

O exemplo a seguir cria uma instância de CreateSearchIndexModel 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":

var def = new BsonDocument
{
{ "fields", new BsonArray
{
new BsonDocument
{
{ "type", "vector" },
{ "path", "plot_embedding" },
{ "numDimensions", 1536 },
{ "similarity", "euclidean" }
}
}
}
};
var indexModel = new CreateSearchIndexModel(
"vs_idx",
SearchIndexType.VectorSearch,
def
);

Você pode criar um índice do Atlas Search ou Vector Search em uma coleção chamando o método SearchIndexes.CreateOne() em uma instância IMongoCollection . Este método aceita um modelo de índice como um parâmetro, especificado em uma instância do CreateSearchIndexModel.

O exemplo a seguir cria um índice de pesquisa do Atlas Search na collection embedded_movies . O código cria um CreateSearchIndexModel que define o nome do índice e habilita o mapeamento dinâmico. Em seguida, o código passa a instância CreateSearchIndexModel para o método SearchIndexes.CreateOne() para criar o índice do Atlas Search:

var indexModel = new CreateSearchIndexModel(
"example_index",
SearchIndexType.Search,
new BsonDocument {
{ "mappings", new BsonDocument {
{ "dynamic", true },
} }
}
);
var result = movieCollection.SearchIndexes.CreateOne(indexModel);
Console.WriteLine("Created Atlas Search index:\n{0}", result);
Created Atlas Search index:
"example_index"

Você pode criar vários índices do Atlas Search e Vector Search chamando o método SearchIndexes.CreateMany() em uma instância IMongoCollection. Este método aceita um IEnumerable de CreateSearchIndexModel instâncias como um parâmetro.

Este exemplo executa as seguintes ações:

  1. Cria uma instância CreateSearchIndexModel que especifica um índice do Atlas Search chamado as_idx

  2. Cria uma instância CreateSearchIndexModel que especifica um índice do Atlas Vector Search chamado vs_idx

  3. Passa um List de ambas as instâncias do CreateSearchIndexModel para o método SearchIndexes.CreateMany()

  4. Cria os índices Atlas Search e Vector Search na collection embedded_movies

var searchModel = new CreateSearchIndexModel(
"as_idx",
SearchIndexType.Search,
new BsonDocument {
{ "mappings", new BsonDocument {
{ "dynamic", true },
} }
}
);
var vectorModel = new CreateSearchIndexModel(
"vs_idx",
SearchIndexType.VectorSearch,
new BsonDocument
{
{ "fields", new BsonArray
{
new BsonDocument
{
{ "type", "vector" },
{ "path", "plot_embedding" },
{ "numDimensions", 1536 },
{ "similarity", "euclidean" }
}
}
}
}
);
var models = new List<CreateSearchIndexModel> { searchModel, vectorModel };
var indexes = movieCollection.SearchIndexes.CreateMany(models);
Console.WriteLine("Created Search indexes:\n{0} {1}", indexes.ToArray());
Created Search indexes:
as_idx vs_idx

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

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 SearchIndexes.List() e imprime uma lista dos índices de pesquisa do Atlas Search e do Vector Search na coleção:

var indexesList = movieCollection.SearchIndexes.List().ToList();
foreach (var i in indexesList)
{
Console.WriteLine(i);
}
{ "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": [...] }

Você pode atualizar um índice do Atlas Search ou Vector Search chamando o método SearchIndexes.Update() em uma instância IMongoCollection. 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 SearchIndexes.Update() para atualizar o índice:

var updatedDef = new BsonDocument
{
{ "fields", new BsonArray
{
new BsonDocument
{
{ "type", "vector" },
{ "path", "plot_embedding" },
{ "numDimensions", 1536 },
{ "similarity", "dotProduct" }
}
}
}
};
movieCollection.SearchIndexes.Update("vs_index", updatedDef);

Você pode excluir um índice do Atlas Search ou Vector Search chamando o método SearchIndexes.DropOne() em uma instância IMongoCollection. Este método aceita o nome do índice a ser excluído como um parâmetro.

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 SearchIndexes.DropOne() para excluir o índice:

movieCollection.SearchIndexes.DropOne("example_index");

Para saber mais sobre outros índices que você pode criar usando o driver .NET/C#, consulte o guia Criar e gerenciar í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:

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

Voltar

Indexes

Nesta página