비고
아래는 EF 10의 벡터 검색 지원에 대해 설명합니다. EF 9에는 약간 다른 메서드 명명과 유사한 실험적 지원이 포함되어 있습니다.
Azure Cosmos DB는 이제 벡터 유사성 검색을 지원합니다. 벡터 검색은 AI, 의미 체계 검색 및 기타를 비롯한 일부 애플리케이션 유형의 기본 부분입니다. Azure Cosmos DB를 사용하면 나머지 데이터와 함께 문서에 직접 벡터를 저장할 수 있습니다. 즉, 단일 데이터베이스에 대해 모든 쿼리를 수행할 수 있습니다. 이렇게 하면 아키텍처가 상당히 간소화되고 스택에 전용 벡터 데이터베이스 솔루션이 추가로 필요하지 않습니다. Azure Cosmos DB 벡터 검색 에 대한 자세한 내용은 설명서를 참조하세요.
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);
});
}
}
이 시점에서 모델이 구성됩니다. 벡터 데이터 삽입은 EF를 사용하여 다른 데이터 형식과 마찬가지로 수행됩니다.
float[] vector = /* generate vector data from text, image, etc. */
context.Add(new Blog { Vector = vector });
await context.SaveChangesAsync();
마지막으로 LINQ 쿼리의 EF.Functions.VectorDistance() 함수를 사용하여 벡터 유사성 검색을 수행합니다.
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();
이렇게 하면 Vector 속성과 외부에서 제공하는 anotherVector 데이터의 유사성을 기준으로 상위 5개 블로그가 반환됩니다.
하이브리드 검색
벡터 유사성 검색은 VectorDistance 및 FullTextScore 함수의 결과를 RRF (상호 순위 Fusion) 함수를 사용하여 결합함으로써 동일한 쿼리(예: 하이브리드 검색) 내에서 전체 텍스트 검색과 함께 사용할 수 있습니다.
EF 모델에서 전체 텍스트 검색 지원을 사용하도록 설정하는 방법과 쿼리에서 하이브리드 검색을 사용하는 방법을 알아보려면 설명서를 참조하세요.
.NET