Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Ejecuta una query de búsqueda vectorial de Atlas

Puedes usar MongoDB Búsqueda vectorial con el proveedor EF Core para realizar búsquedas semánticas en datos almacenados en Atlas. Las búsquedas vectoriales interrogan los datos según su significado semántico, no solo por coincidencias de palabras clave, permitiéndote recuperar resultados más relevantes. Puede utilizar la Búsqueda Vectorial de MongoDB para respaldar casos de uso como la búsqueda semántica, la búsqueda híbrida y la generación de recuperación aumentada (RAG).

Para obtener más información sobre MongoDB Vector Search, consulta la Descripción general de MongoDB Vector Search en la documentación de Atlas.

Los ejemplos de esta guía utilizan la colección embedded_movies de la base de datos sample_mflix. Los documentos de esta colección utilizan la siguiente clase 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!;
}

La colección embedded_movies forma parte de los datasets de muestra proporcionados por Atlas. Para configurar un clúster y cargar estos datos de muestra, consulta la guía de inicio rápido.

Para usar MongoDB búsqueda vectorial con el proveedor EF Core, define un campo vectorial en tu clase de entidad. Configure un índice vectorial en ese campo utilizando el método de la API fluida IsVectorIndex().

El siguiente ejemplo define una entidad Movie con un campo vectorial llamado PlotEmbedding y configura un índice vectorial en ese 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);
});
}
}

Nota

No se puede cambiar ni borrar índices utilizando el proveedor EF Core después de haber sido creados. Para cambiar o borrar un índice, use el Driver .NET/C#. Para obtener más información, consulte la guía MongoDB Search y MongoDB Vector Search índices de búsqueda en la documentación del driver .NET/C# .

El proveedor de EF Core admite incrustaciones vectoriales de los siguientes tipos:

El Proveedor de EF Core admite los siguientes tipos de arreglos como incrustaciones vectoriales:

  • float[]

  • double[]

  • Memory<float> y ReadOnlyMemory<float>

  • Memory<double> y ReadOnlyMemory<double>

El proveedor de EF Core admite los siguientes tipos de vectores binarios, que reducen el almacenamiento y mejoran el rendimiento de las query en comparación con los tipos de arreglo:

  • BinaryVectorFloat32 - Números de punto flotante de 32bits de precisión total

  • BinaryVectorInt8 — Enteros cuantificados de 8bits

  • BinaryVectorPackedBit — valores binarios empaquetados de 1bits

El MongoDB.Driver namespace del driver .NET/C# incluye los enums VectorQuantization y VectorSimilarity utilizados para configurar los índices de vectores binarios.

Puedes usar el método VectorSearch() para ejecutar una consulta de búsqueda vectorial. El siguiente ejemplo query la colección embedded_movies para películas con un valor en el campo PlotEmbedding que sea semánticamente similar a "aventura de viajes en el tiempo", y luego devuelve hasta 10 documentos coincidentes.

// 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 obtener más información sobre MongoDB búsqueda vectorial, consulta la documentación de MongoDB búsqueda vectorial.

Para documentación de API, consulta los siguientes recursos: