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.
Observação
A seguir, descreve o suporte à pesquisa de vetor no EF 10. O EF 9 inclui suporte experimental semelhante com nomenclatura de método ligeiramente diferente.
O Azure Cosmos DB agora oferece suporte para pesquisa de similaridade de vetor. A busca em vetores é uma parte fundamental de alguns tipos de aplicativos, incluindo IA, pesquisa semântica e outros. O Azure Cosmos DB permite que você armazene vetores diretamente em seus documentos junto com o restante dos dados, ou seja, é possível executar todas as suas consultas em um único banco de dados. Isso pode simplificar consideravelmente sua arquitetura e eliminar a necessidade de uma solução adicional de banco de dados vetorial dedicada em sua pilha. Para saber mais sobre a busca em vetores do Azure Cosmos DB, consulte a documentação.
A propriedade Vector pode ser configurada dentro de OnModelCreating.
public class Blog
{
...
public float[] Vector { get; set; }
}
public class BloggingContext
{
...
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>(b =>
{
b.Property(b => b.Vector).IsVectorProperty(DistanceFunction.Cosine, dimensions: 1536);
b.HasIndex(x => x.Vector).IsVectorIndex(VectorIndexType.Flat);
});
}
}
Neste ponto, seu modelo está configurado. A inserção de dados vetoriais é feita como qualquer outro tipo de dados com EF:
float[] vector = /* generate vector data from text, image, etc. */
context.Add(new Blog { Vector = vector });
await context.SaveChangesAsync();
Por fim, use a função EF.Functions.VectorDistance() em consultas LINQ para executar a pesquisa de similaridade vetorial:
float[] anotherVector = /* generate vector data from text, image, etc. */
var blogs = await context.Blogs
.OrderBy(s => EF.Functions.VectorDistance(s.Vector, anotherVector))
.Take(5)
.ToListAsync();
Isso retornará os cinco principais Blogs, com base na semelhança de sua propriedade Vector e nos dados anotherVector fornecidos externamente.
Pesquisa híbrida
A pesquisa de similaridade de vetor pode ser usada com a pesquisa de texto completo na mesma consulta (ou seja, pesquisa híbrida), combinando os resultados das funções VectorDistance e FullTextScore usando a função RRF (Fusão de Classificação Recíproca).
Consulte a documentação para saber como habilitar o suporte à pesquisa de texto completo no modelo EF e como usar a pesquisa híbrida em consultas.