Freigeben über


Vektorsuche

Azure Cosmos DB bietet jetzt Unterstützung für die Vektor-Ähnlichkeitssuche. Die Vektorsuche ist ein grundlegender Bestandteil einiger Anwendungstypen, darunter KI und semantische Suche. Mit Azure Cosmos DB können Vektoren zusammen mit Ihren restlichen Daten direkt in Ihren Dokumenten gespeichert werden, was bedeutet, dass Sie alle Ihre Abfragen für eine einzelne Datenbank ausführen können. Dies kann Ihre Architektur erheblich vereinfachen und dazu führen, dass Sie ohne zusätzliche dedizierte Vektordatenbanklösung in Ihrem Stapel auskommen. Weitere Informationen zur Azure Cosmos DB-Vektorsuche finden Sie in der Dokumentation.

Vector-Eigenschaft kann innerhalb OnModelCreating konfiguriert werden.

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);
        });
    }
}

An diesem Punkt ist Ihr Modell konfiguriert. Das Einfügen von Vektordaten erfolgt wie jeder andere Datentyp mit EF:

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

Verwenden Sie schließlich die EF.Functions.VectorDistance() Funktion in LINQ-Abfragen, um die Vektorgleichheitssuche auszuführen:

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();

Dies gibt die fünf wichtigsten Blogs basierend auf der Ähnlichkeit ihrer Vector Eigenschaft und den extern bereitgestellten anotherVector Daten zurück.

Die Vektorähnlichkeitssuche kann mit der Volltextsuche in derselben Abfrage (d. h. hybride Suche) verwendet werden, indem Ergebnisse von VectorDistance und FullTextScore Funktionen mithilfe der RRF Funktion "reziproke Rangfusion" kombiniert werden.

In der Dokumentation erfahren Sie, wie Sie die Unterstützung der Volltextsuche im EF-Modell aktivieren und die Hybridsuche in Abfragen verwenden.