Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Vektorové vyhledávání
Poznámka:
Podpora vektorů byla zavedena v EF Core 10.0 a je podporována pouze s SQL Serverem 2025 a novějším.
Datový typ vektoru SQL Serveru umožňuje ukládání vložených objektů, které představují význam, které lze efektivně vyhledávat z hlediska podobnosti, což podporuje úlohy AI, jako je sémantické vyhledávání a načítání rozšířené generace (RAG).
Pokud chcete datový typ použít vector , jednoduše přidejte do typu entity vlastnost SqlVector<float> .NET, která určuje dimenze následujícím způsobem:
public class Blog
{
// ...
[Column(TypeName = "vector(1536)")]
public SqlVector<float> Embedding { get; set; }
}
Po přidání vlastnosti a vytvoření odpovídajícího sloupce v databázi můžete začít vkládat vložené položky. Generování vkládání se provádí mimo databázi, obvykle prostřednictvím služby, a podrobnosti o tom, jak to udělat, jsou mimo rozsah této dokumentace. Knihovny .NET Microsoft.Extensions.AI však obsahují IEmbeddingGenerator, což je abstrakce nad vložené generátory, které mají implementace pro hlavní poskytovatele.
Jakmile zvolíte generátor vkládání a nastavíte ho, použijte ho ke generování vkládání a jejich vložení následujícím způsobem:
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();
Nakonec použijte EF.Functions.VectorDistance() funkci k vyhledání podobnosti pro daný uživatelský dotaz:
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();
Poznámka:
Integrovaná podpora v EF 10 nahrazuje předchozí rozšíření EFCore.SqlServer.VectorSearch , které umožňovalo provádět vektorové vyhledávání před zavedením datového vector typu. V rámci upgradu na EF 10 odeberte rozšíření z projektů.
Funkce VECTOR_SEARCH() (ve verzi Preview) pro přibližné vyhledávání pomocí DiskANN se v současné době nepodporuje.