Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Menu Docs
Página inicial do Docs
/ /
/ / /

Executar uma query no Atlas Vector Search

Você pode usar a Vector Search do MongoDB com o provedor de núcleo EF para realizar pesquisas semânticas em dados armazenados no Atlas. A pesquisa vetorial query seus dados com base no significado semântica em vez de correspondências de palavras-chave, permitindo que você recupere resultados mais relevantes. Você pode usar o MongoDB Vector Search 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 na documentação do Atlas.

Os exemplos nesta guia usam a coleção embedded_movies do banco de dados do sample_mflix . Os documentos nesta coleção utilizam a seguinte classe Movie como 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 embedded_movies coleção faz parte dos conjuntos de dados de amostra fornecidos pelo Atlas. Para configurar um cluster e carregar esses dados de amostra, consulte o guia de Início Rápido.

Para usar a Vector Search do MongoDB com o provedor de núcleo EF, defina um campo de vetor em sua classe de entidade. Configure um índice vetorial nesse campo usando o método API fluente IsVectorIndex().

O exemplo seguinte define uma entidade Movie com um campo de vetor denominado PlotEmbedding e configura um índice de vetor neste 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 índices usando o EF Core Provider depois que eles forem criados. Para alterar ou excluir um índice, use o driver .NET/C#. Para saber mais, consulte o guia MongoDB Search e MongoDB Vector Search Indexes na documentação do driver .NET/C#.

O fornecedor EF Core Provider oferece suporte a incorporações vetoriais dos seguintes tipos:

O fornecedor de núcleo EF oferece suporte aos seguintes tipos de array como incorporações vetoriais:

  • float[]

  • double[]

  • Memory<float> e a ReadOnlyMemory<float>

  • Memory<double> e a ReadOnlyMemory<double>

O EF Core Provider é compatível com os seguintes tipos de vetores binários, que reduzem o armazenamento e melhoram o desempenho da consulta em comparação com os tipos de array:

  • BinaryVectorFloat32 — flutuações de 32bits de precisão total

  • BinaryVectorInt8 — 8inteiros quantizados de bits

  • 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 query a coleção embedded_movies em busca de filmes com um valor de campo PlotEmbedding que é semanticamente semelhante a "ventura com 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 Vector Search do MongoDB , consulte a documentação da Vector Search do MongoDB .

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

Voltar

Transações

Nesta página