Bagikan melalui


Pencarian vektor

Peringatan

Pencarian vektor Azure Cosmos DB saat ini dalam pratinjau. Akibatnya, menggunakan API pencarian vektor EF akan menghasilkan peringatan "API eksperimental" (EF9103) yang harus ditekan. API dan kemampuan dapat berubah dengan cara yang melanggar di masa mendatang.

Azure Cosmos DB sekarang menawarkan dukungan pratinjau untuk pencarian kesamaan vektor. Pencarian vektor adalah bagian mendasar dari beberapa jenis aplikasi, termasuk AI, pencarian semantik, dan lainnya. Azure Cosmos DB memungkinkan Anda menyimpan vektor langsung di dokumen Anda bersama data lainnya, yang berarti Anda dapat melakukan semua kueri terhadap satu database. Ini dapat sangat menyederhanakan arsitektur Anda dan menghapus kebutuhan akan solusi database vektor khusus tambahan di tumpukan Anda. Untuk mempelajari selengkapnya tentang pencarian vektor Azure Cosmos DB, lihat dokumentasi.

Untuk menggunakan pencarian vektor, Anda harus terlebih dahulu mendaftar di fitur pratinjau. Kemudian, tentukan kebijakan vektor pada kontainer Anda untuk mengidentifikasi properti JSON mana dalam dokumen Anda yang berisi vektor dan informasi terkait vektor untuk properti tersebut (dimensi, jenis data, fungsi jarak).

Setelah kontainer Anda disiapkan dengan benar, tambahkan properti vektor ke model Anda di jalur yang Anda tentukan dalam kebijakan kontainer, dan konfigurasikan dengan EF sebagai vektor:

public class Blog
{
    ...

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

public class BloggingContext
{
    ...

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Blog>()
            .Property(b => b.Embeddings)
            .IsVector(DistanceFunction.Cosine, dimensions: 1536);
    }
}

Pada titik ini model Anda dikonfigurasi. Penyisipan data vektor dilakukan sama seperti jenis data lainnya dengan EF:

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

Terakhir, gunakan EF.Functions.VectorDistance() fungsi dalam kueri LINQ untuk melakukan pencarian kesamaan vektor:

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

Ini akan mengembalikan lima Blog teratas, berdasarkan kesamaan properti mereka Vector dan data yang disediakan anotherVector secara eksternal.