Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /
/ / /

Atlas Vector Search 쿼리 실행

MongoDB Vector Search를 EF Core Provider와 함께 사용하여 Atlas 에 저장된 데이터에 대해 시맨틱 검색 수행할 수 있습니다. 벡터 검색 키워드 일치가 아닌 의미론적 의미를 기반으로 데이터를 쿼리하므로 더 관련성이 높은 결과를 조회 할 수 있습니다. MongoDB Vector Search를 사용하여 시맨틱 검색, 하이브리드 검색 , RAG(Retrieval-Augmented 생성) 등의 사용 사례를 지원 수 있습니다.

MongoDB Vector Search에 대해 자세히 학습하려면 Atlas 설명서에서 MongoDB Vector Search 개요 를 참조하세요.

이 가이드 의 예제에서는 sample_mflix 데이터베이스 의 embedded_movies 컬렉션 사용합니다. 이 컬렉션 의 문서는 다음 Movie 클래스를 모델로 사용합니다.

public class Movie
{
public ObjectId Id { get; set; }
public string Title { get; set; } = null!;
public string Plot { get; set; } = null!;
public float[] PlotEmbedding { get; set; } = null!;
}

embedded_movies 컬렉션 Atlas 에서 제공하는 샘플 데이터 세트의 일부입니다. 클러스터 설정하다 하고 이 샘플 데이터를 로드하려면 빠른 시작 가이드 참조하세요.

EF Core Provider와 함께 MongoDB Vector Search를 사용하려면 엔터티 클래스에서 벡터 필드 정의하세요. IsVectorIndex() fluent API 메서드를 사용하여 해당 필드 에 벡터 인덱스 구성합니다.

다음 예시 PlotEmbedding 이라는 벡터 필드 있는 Movie 엔터티를 정의하고 해당 필드 에 벡터 인덱스 구성합니다.

public class MoviesDbContext : DbContext
{
public DbSet<Movie> Movies { get; init; } = null!;
public MoviesDbContext(DbContextOptions options) : base(options) { }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Movie>(entity =>
{
entity.ToCollection("embedded_movies");
entity.Property(m => m.Title).HasElementName("title");
entity.Property(m => m.Plot).HasElementName("plot");
entity.Property(m => m.PlotEmbedding).HasElementName("plot_embedding")
.HasBinaryVectorDataType(BinaryVectorDataType.Float32);
entity.HasIndex(m => m.PlotEmbedding, "vector_index")
.IsVectorIndex(VectorSimilarity.Cosine, 1536);
});
}
}

참고

인덱스를 생성한 후에는 EF Core Provider를 사용하여 인덱스를 변경하거나 삭제 수 없습니다. 인덱스 변경하거나 삭제 하려면 .NET/ C# 드라이버 사용합니다. 자세한 학습 은 .NET/ C# 드라이버 문서에서 MongoDB 검색 및 MongoDB 벡터 검색 인덱스 가이드 를 참조하세요.

EF Core Provider는 다음 유형의 벡터 임베딩을 지원합니다.

EF Core Provider는 다음 배열 유형을 벡터 임베딩으로 지원합니다.

  • float[]

  • double[]

  • Memory<float> 개인정보 정책에 ReadOnlyMemory<float>

  • Memory<double> 개인정보 정책에 ReadOnlyMemory<double>

EF Core Provider는 배열 유형에 비해 저장 줄이고 쿼리 성능을 개선하는 다음과 같은 이진 벡터 유형을 지원합니다.

  • BinaryVectorFloat32 — 완전 정밀도 32비트 부동 소수점

  • BinaryVectorInt8 — 8비트 양자화된 정수

  • BinaryVectorPackedBit — 1비트 압축 이진 값

.NET/ C# 드라이버 의 MongoDB.Driver 네임스페이스 에는 이진 벡터 인덱스를 구성하는 데 사용되는 VectorQuantizationVectorSimilarity 열거형이 포함되어 있습니다.

VectorSearch() 메서드를 사용하여 벡터 검색 쿼리 실행 수 있습니다. 다음 예시 embedded_movies 컬렉션 에 의미적으로 '시간 여행 모험'과 유사한 PlotEmbedding 필드 값을 가진 영화를 쿼리한 다음, 일치하는 문서를 최대 10 개 반환합니다.

// Replace queryVector with a 1536-dimension embedding vector from your model
float[] queryVector = new float[] { 0.1f, -0.2f, 0.3f, ... };
var results = context.Movies
.VectorSearch(m => m.PlotEmbedding, queryVector, limit: 10)
.ToList();

MongoDB Vector Search에 대해 자세히 학습 MongoDB Vector Search 문서를 참조하세요.

API 설명서는 다음 리소스를 참조하세요.

돌아가기

트랜잭션

이 페이지의 내용