Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Ricerca vettoriale
Annotazioni
Il supporto dei vettori è stato introdotto in EF Core 10.0 ed è supportato solo con SQL Server 2025 e versioni successive.
Il tipo di dati vettoriale di SQL Server consente di archiviare incorporamenti, che rappresentano una rappresentazione del significato che può essere cercato in modo efficiente per individuare la somiglianza, alimentando i carichi di lavoro di intelligenza artificiale, ad esempio la ricerca semantica e la generazione avanzata del recupero.
Per usare il vector tipo di dati, è sufficiente aggiungere una proprietà .NET di tipo al tipo SqlVector<float> di entità, specificando le dimensioni come indicato di seguito:
public class Blog
{
// ...
[Column(TypeName = "vector(1536)")]
public SqlVector<float> Embedding { get; set; }
}
Dopo aver aggiunto la proprietà e la colonna corrispondente creata nel database, è possibile iniziare a inserire incorporamenti. La generazione di incorporamento viene eseguita all'esterno del database, in genere tramite un servizio e i dettagli per questa operazione non rientrano nell'ambito di questa documentazione. Tuttavia, le librerie di Microsoft.Extensions.AI .NET contengono IEmbeddingGenerator, ovvero un'astrazione sui generatori di incorporamento con implementazioni per i principali provider.
Dopo aver scelto il generatore di incorporamento e configurarlo, usarlo per generare incorporamenti e inserirli come indicato di seguito
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();
Usare infine la EF.Functions.VectorDistance() funzione per eseguire una ricerca di somiglianza per una determinata query utente:
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();
Annotazioni
Il supporto predefinito in EF 10 sostituisce l'estensione EFCore.SqlServer.VectorSearch precedente, che consentiva l'esecuzione della ricerca vettoriale prima dell'introduzione del vector tipo di dati. Come parte dell'aggiornamento a EF 10, rimuovere l'estensione dai progetti.
La VECTOR_SEARCH() funzione (in anteprima) per la ricerca approssimativa con DiskANN non è attualmente supportata.