Delen via


Zoeken met vectoren

Azure Cosmos DB biedt nu ondersteuning voor vector-overeenkomsten zoeken. Vector zoeken is een fundamenteel onderdeel van sommige toepassingstypen, waaronder AI, semantische zoekopdrachten en andere. Met Azure Cosmos DB kunt u vectoren rechtstreeks in uw documenten opslaan naast de rest van uw gegevens, wat betekent dat u al uw query's op één database kunt uitvoeren. Dit kan uw architectuur aanzienlijk vereenvoudigen en de noodzaak voor een extra toegewezen vectordatabaseoplossing in uw stack verwijderen. Zie de documentatievoor meer informatie over het zoeken naar Azure Cosmos DB-vectoren.

Vectoreigenschap kan worden geconfigureerd binnen OnModelCreating:

public class Blog
{
    ...

    public float[] Vector { get; set; }
}

public class BloggingContext
{
    ...

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Blog>(b =>
        {
            b.Property(b => b.Vector).IsVectorProperty(DistanceFunction.Cosine, dimensions: 1536);
            b.HasIndex(x => x.Vector).IsVectorIndex(VectorIndexType.Flat);
        });
    }
}

Op dit moment is uw model geconfigureerd. Het invoegen van vectorgegevens gebeurt net als elk ander gegevenstype met EF:

float[] vector = /* generate vector data from text, image, etc. */
context.Add(new Blog { Vector = vector });
await context.SaveChangesAsync();

Gebruik ten slotte de EF.Functions.VectorDistance() functie in LINQ-query's om vector-overeenkomsten te zoeken:

float[] anotherVector = /* generate vector data from text, image, etc. */
var blogs = await context.Blogs
    .OrderBy(s => EF.Functions.VectorDistance(s.Vector, anotherVector))
    .Take(5)
    .ToListAsync();

Hiermee worden de vijf belangrijkste blogs geretourneerd op basis van de gelijkenis van hun Vector eigenschap en de extern verstrekte anotherVector gegevens.

Zoeken naar vectorovereenkomsten kan worden gebruikt samen met zoeken in volledige tekst in dezelfde query (bijvoorbeeld hybride zoekopdrachten), door de resultaten van VectorDistance en FullTextScore functies te combineren met behulp van de RRF functie (Wederzijdse rangschikkingsfusie).

Zie de documentatie voor meer informatie over het inschakelen van ondersteuning voor zoeken in volledige tekst in ef-modellen en het gebruik van hybride zoekopdrachten in query's.