Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wyszukiwanie wektorowe
Uwaga / Notatka
Obsługa wektorów została wprowadzona w programie EF Core 10.0 i jest obsługiwana tylko w programie SQL Server 2025 lub nowszym.
Typ danych wektorów programu SQL Server umożliwia przechowywanie osadzania, które są reprezentacją znaczenia, które mogą być efektywnie wyszukiwane pod kątem podobieństwa, zwiększając obciążenia sztucznej inteligencji, takie jak semantyczne wyszukiwanie i pobieranie rozszerzonej generacji (RAG).
Aby użyć vector typu danych, wystarczy dodać właściwość .NET typu SqlVector<float> do typu jednostki, określając wymiary w następujący sposób:
public class Blog
{
// ...
[Column(TypeName = "vector(1536)")]
public SqlVector<float> Embedding { get; set; }
}
Po dodaniu właściwości i odpowiedniej kolumnie utworzonej w bazie danych możesz rozpocząć wstawianie osadzania. Generowanie osadzania odbywa się poza bazą danych, zwykle za pośrednictwem usługi, a szczegółowe informacje na temat tego działania są poza zakresem tej dokumentacji. Jednak biblioteki platformy .NET Microsoft.Extensions.AI zawierają IEmbeddingGeneratorelement , który jest abstrakcją w przypadku generatorów osadzania, które mają implementacje dla głównych dostawców.
Po wybraniu generatora osadzania i skonfigurowaniu go użyj go do wygenerowania osadzonych elementów i wstawienia ich w następujący sposób
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();
Na koniec użyj EF.Functions.VectorDistance() funkcji , aby wykonać wyszukiwanie podobieństwa dla danego zapytania użytkownika:
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();
Uwaga / Notatka
Wbudowana obsługa programu EF 10 zastępuje poprzednie rozszerzenie EFCore.SqlServer.VectorSearch , które umożliwiło wykonywanie wyszukiwania wektorowego przed wprowadzeniem vector typu danych. W ramach uaktualniania do programu EF 10 usuń rozszerzenie z projektów.
Funkcja VECTOR_SEARCH() (w wersji zapoznawczej) w celu przybliżonego wyszukiwania przy użyciu nazwy DiskANN jest obecnie nieobsługiwana.