Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Menu Docs

Executar uma query no Atlas Vector Search

Você pode usar o MongoDB pesquisa vetorial com o provedor EF Core para realizar pesquisas semânticas em dados armazenados no Atlas. A query de pesquisa vetorial seus dados com base no significado semântico, em vez de correspondências de palavras-chave, permitindo que você recupere resultados mais relevantes. Você pode usar o MongoDB pesquisa vetorial para oferecer suporte a casos de uso como pesquisa semântica, pesquisa híbrida e geração aumentada de recuperação (RAG).

Para saber mais sobre a pesquisa vetorial do MongoDB, consulte a Visão geral da pesquisa vetorial do MongoDB na documentação do Atlas.

Os exemplos neste guia usam a coleção embedded_movies do banco de dados sample_mflix . Os documentos nesta coleção utilizam a seguinte classe Movie como um modelo:

public class Movie
{
public ObjectId Id { get; set; }
public string Title { get; set; } = null!;
public string Plot { get; set; } = null!;
public float[] PlotEmbedding { get; set; } = null!;
}

A coleção embedded_movies faz parte dos conjuntos de dados de amostra fornecidos pelo Atlas. Para configurar um cluster e carregar esses dados de amostra, consulte o guia Início rápido.

Para usar o MongoDB pesquisa vetorial com o EF Core provedor, defina um campo vetorial em sua classe de entidade. Configure um índice vetorial nesse campo usando o método de API fluente IsVectorIndex().

O exemplo a seguir define uma entidade Movie com um campo vetorial chamado PlotEmbedding e configura um índice vetorial nesse campo.

public class MoviesDbContext : DbContext
{
public DbSet<Movie> Movies { get; init; } = null!;
public MoviesDbContext(DbContextOptions options) : base(options) { }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Movie>(entity =>
{
entity.ToCollection("embedded_movies");
entity.Property(m => m.Title).HasElementName("title");
entity.Property(m => m.Plot).HasElementName("plot");
entity.Property(m => m.PlotEmbedding).HasElementName("plot_embedding")
.HasBinaryVectorDataType(BinaryVectorDataType.Float32);
entity.HasIndex(m => m.PlotEmbedding, "vector_index")
.IsVectorIndex(VectorSimilarity.Cosine, 1536);
});
}
}

Observação

Você não pode alterar ou excluir índice usando o provedor EF Core depois que eles são criados. Para alterar ou excluir um índice, use o driver .NET/C#. Para aprender mais, consulte o guia MongoDB Search e MongoDB Vector Search índices de pesquisa na documentação do driver .NET/C#.

O provedor do EF Core suporta embedding vetorial dos seguintes tipos:

O provedor do EF Core suporta os seguintes tipos de array como embedding de vetor:

  • float[]

  • double[]

  • Memory<float> e a ReadOnlyMemory<float>

  • Memory<double> e a ReadOnlyMemory<double>

O provedor EF Core oferece suporte aos seguintes tipos de vetor binário, que reduzem o armazenamento e melhoram o desempenho da query em comparação com os tipos de array:

  • BinaryVectorFloat32 — floats de 32bits de precisão total

  • BinaryVectorInt8 — Inteiros quantizados de 8bits

  • BinaryVectorPackedBit — valores binários compactados de 1bits

O namespace MongoDB.Driver do driver .NET/C# contém os enums VectorQuantization e VectorSimilarity usados para configurar índices de vetor binário.

Você pode usar o método VectorSearch() para executar uma query de pesquisa vetorial. O exemplo a seguir consulta a coleção embedded_movies para filmes com um valor de campo PlotEmbedding semanticamente semelhante a "aventura de viagem no tempo" e, em seguida, retorna até 10 documentos correspondentes.

// Replace queryVector with a 1536-dimension embedding vector from your model
float[] queryVector = new float[] { 0.1f, -0.2f, 0.3f, ... };
var results = context.Movies
.VectorSearch(m => m.PlotEmbedding, queryVector, limit: 10)
.ToList();

Para saber mais sobre a pesquisa vetorial do MongoDB, consulte a documentação da pesquisa vetorial do MongoDB.

Para documentação da API, consulte os seguintes recursos: