Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Zoeken met vectoren
Opmerking
Vector-ondersteuning is geïntroduceerd in EF Core 10.0 en wordt alleen ondersteund met SQL Server 2025 en hoger.
Het gegevenstype SQL Server-vector maakt het mogelijk om insluitingen op te slaan, wat een weergave is van betekenis die efficiënt kan worden doorzocht op overeenkomsten, waardoor AI-workloads zoals semantische zoekopdrachten en het ophalen van augmented generation (RAG) mogelijk zijn.
Als u het vector gegevenstype wilt gebruiken, voegt u gewoon een .NET-eigenschap van het type SqlVector<float> toe aan uw entiteitstype, waarbij u de dimensies als volgt opgeeft:
public class Blog
{
// ...
[Column(TypeName = "vector(1536)")]
public SqlVector<float> Embedding { get; set; }
}
Zodra uw eigenschap is toegevoegd en de bijbehorende kolom die in de database is gemaakt, kunt u beginnen met het invoegen van insluitingen. Het genereren van insluiten wordt buiten de database uitgevoerd, meestal via een service, en de details hiervoor vallen buiten het bereik van deze documentatie.
De .NET-Microsoft.Extensions.AI bibliotheken bevatten IEmbeddingGeneratorechter een abstractie ten opzichte van insluitingsgeneratoren met implementaties voor de belangrijkste providers.
Nadat u de insluitingsgenerator hebt gekozen en deze hebt ingesteld, gebruikt u deze om insluitingen te genereren en deze als volgt in te voegen
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();
Gebruik ten slotte de EF.Functions.VectorDistance() functie om overeenkomsten uit te voeren voor een bepaalde gebruikersquery:
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();
Opmerking
De ingebouwde ondersteuning in EF 10 vervangt de vorige EFCore.SqlServer.VectorSearch-extensie , die vectorzoekopdrachten toestaat voordat het vector gegevenstype werd geïntroduceerd. Als onderdeel van een upgrade naar EF 10 verwijdert u de extensie uit uw projecten.
De VECTOR_SEARCH() functie (in preview) voor een geschatte zoekopdracht met DiskANN wordt momenteel niet ondersteund.