Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Pesquisa vetorial
Observação
O suporte a vetores foi introduzido no EF Core 10.0 e só é suportado com o SQL Server 2025 e superior.
O tipo de dados vetoriais do SQL Server permite armazenar incorporações, que são representações de significado que podem ser pesquisadas com eficiência em busca de semelhança, alimentando cargas de trabalho de IA, como pesquisa semântica e geração aumentada de recuperação (RAG).
Para usar o vector tipo de dados, basta adicionar uma propriedade .NET do tipo SqlVector<float> ao seu 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 incorporações. A geração de incorporaçã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 do .NET Microsoft.Extensions.AI contêm IEmbeddingGenerator, que é uma abstração sobre geradores de incorporação que tem implementações para os principais provedores.
Depois de escolher o gerador de incorporação e configurá-lo, use-o para gerar incorporações e insira-as da seguinte forma
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();
Finalmente, use a função para executar a EF.Functions.VectorDistance() pesquisa de semelhança 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 executar a pesquisa vetorial antes que o vector tipo de dados fosse introduzido. Como parte da atualização para o EF 10, remova a extensão de seus projetos.
A VECTOR_SEARCH() função (na visualização) para pesquisa aproximada com DiskANN não é suportada no momento.