Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Pencarian vektor
Nota
Dukungan vektor diperkenalkan di EF Core 10.0, dan hanya didukung dengan SQL Server 2025 ke atas.
Jenis data vektor SQL Server memungkinkan penyimpanan penyematan, yang merupakan representasi makna yang dapat dicari secara efisien untuk kesamaan, mendukung beban kerja AI seperti pencarian semantik dan pengambilan-augmented generation (RAG).
Untuk menggunakan vector jenis data, cukup tambahkan properti .NET jenis SqlVector<float> ke jenis entitas Anda, menentukan dimensi sebagai berikut:
public class Blog
{
// ...
[Column(TypeName = "vector(1536)")]
public SqlVector<float> Embedding { get; set; }
}
Setelah properti Anda ditambahkan dan kolom terkait yang dibuat dalam database, Anda bisa mulai menyisipkan penyematan. Pembuatan penyematan dilakukan di luar database, biasanya melalui layanan, dan detail untuk melakukan ini berada di luar cakupan untuk dokumentasi ini. Namun, pustaka .NET Microsoft.Extensions.AI berisi IEmbeddingGenerator, yang merupakan abstraksi atas penyematan generator yang memiliki implementasi untuk penyedia utama.
Setelah Anda memilih generator penyematan dan menyiapkannya, gunakan untuk menghasilkan penyematan dan menyisipkannya sebagai berikut
IEmbeddingGenerator<string, Embedding<float>> embeddingGenerator = /* Set up your preferred embedding generator */;
var embedding = await embeddingGenerator.GenerateVectorAsync("Some text to be vectorized");
context.Blogs.Add(new Blog
{
Name = "Some blog",
Embedding = new SqlVector<float>(embedding)
});
await context.SaveChangesAsync();
Terakhir, gunakan EF.Functions.VectorDistance() fungsi untuk melakukan pencarian kesamaan untuk kueri pengguna tertentu:
var sqlVector = new SqlVector<float>(await embeddingGenerator.GenerateVectorAsync("Some user query to be vectorized"));
var topSimilarBlogs = context.Blogs
.OrderBy(b => EF.Functions.VectorDistance("cosine", b.Embedding, sqlVector))
.Take(3)
.ToListAsync();
Nota
Dukungan bawaan di EF 10 menggantikan ekstensi EFCore.SqlServer.VectorSearch sebelumnya, yang memungkinkan melakukan pencarian vektor sebelum vector jenis data diperkenalkan. Sebagai bagian dari peningkatan ke EF 10, hapus ekstensi dari proyek Anda.
Fungsi VECTOR_SEARCH() (dalam pratinjau) untuk perkiraan pencarian dengan DiskANN saat ini tidak didukung.