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.
Observação
O abaixo descreve o suporte de pesquisa vetorial 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 semelhança vetorial. A pesquisa vetorial é uma parte fundamental de alguns tipos de aplicação, incluindo IA, pesquisa semântica e outros. O Azure Cosmos DB permite que você armazene vetores diretamente em seus documentos junto com o restante de seus dados, o que significa que você pode executar todas as suas consultas em um único banco de dados. Isso pode simplificar consideravelmente a sua arquitetura e remover a necessidade de uma solução de base de dados vetorial adicional e dedicada na sua stack. Para saber mais sobre a pesquisa vetorial do Azure Cosmos DB, consulte a documentação.
A propriedade do vetor 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 o EF:
float[] vector = /* generate vector data from text, image, etc. */
context.Add(new Blog { Vector = vector });
await context.SaveChangesAsync();
Finalmente, use a função EF.Functions.VectorDistance() em consultas LINQ para executar a pesquisa de semelhança 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 da sua propriedade Vector e nos dados anotherVector fornecidos externamente.
Pesquisa híbrida
A pesquisa de semelhança vetorial pode ser usada com a pesquisa de texto completo na mesma consulta (ou seja, pesquisa híbrida), combinando resultados das funções VectorDistance e FullTextScore usando a função RRF (Reciprocal Rank Fusion).
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.