Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Busca em vetores
Observação
O suporte ao vetor foi introduzido no EF Core 10.0 e só tem suporte com o SQL Server 2025 e superior.
O tipo de dados de vetor do SQL Server permite armazenar inserções, que são representações de significado que podem ser pesquisadas com eficiência quanto à similaridade, alimentando cargas de trabalho de IA, como RAG (pesquisa semântica e geração aumentada por recuperação).
Para usar o vector tipo de dados, basta adicionar uma propriedade .NET do tipo SqlVector<float> ao tipo de entidade, especificando as dimensões da seguinte maneira:
public class Blog
{
// ...
[Column(TypeName = "vector(1536)")]
public SqlVector<float> Embedding { get; set; }
}
Depois que sua propriedade for adicionada e a coluna correspondente criada no banco de dados, você poderá começar a inserir inserções. A geração de inserção é feita fora do banco de dados, geralmente por meio de um serviço, e os detalhes para fazer isso estão fora do escopo desta documentação. No entanto, as bibliotecas de Microsoft.Extensions.AI do .NET contêm IEmbeddingGenerator, que é uma abstração sobre geradores de inserção que tem implementações para os principais provedores.
Depois de escolher o gerador de inserção e configurá-lo, use-o para gerar inserções e inseri-las da seguinte maneira
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();
Por fim, use a EF.Functions.VectorDistance() função para executar a pesquisa de similaridade para uma determinada consulta de usuário:
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();
Observação
O suporte interno no EF 10 substitui a extensão EFCore.SqlServer.VectorSearch anterior, que permitia a execução da pesquisa de vetor antes da introdução do vector tipo de dados. Como parte da atualização para o EF 10, remova a extensão de seus projetos.
A VECTOR_SEARCH() função (em versão prévia) para pesquisa aproximada com DiskANN não tem suporte no momento.