Vector Search
query vector의 출처와 ANN/ENN 실행 방식을 명시하고 pre-filter와 post-filter를 구분합니다.
Atlas automated embedding text query
vector 제공 방식
vector(List<? extends Number>)
이미 계산한 vector를 직접 전달
query(String) + model(String)
Atlas automated embedding index용 text query
query(String, VectorEmbeddingFunction)
애플리케이션 embedding function으로 vector를 비동기 생성
query(Mono<List<Double>>)
외부 provider 호출 결과를 publisher로 전달
ANN과 ENN
approximate(numCandidates)
ANN 검색. 후보 수와 limit을 지정
exact()
ENN 정확 검색
limit
최종 반환 개수
filter 구분
filterFields(...)는 $vectorSearch.filter에 들어가는 pre-filter입니다. 일반 fields(...)는 vector search 뒤 aggregation $match로 적용되는 post-filter입니다. 성능에 중요한 고정 조건은 index가 지원하는 pre-filter로 두는 편이 좋습니다.
score와 terminal
addFieldsVectorSearchScore(name)은 $meta: vectorSearchScore를 결과 field에 추가합니다. findAll, find, count, existsQuery terminal을 제공하지만 count는 vector search가 반환한 후보 집합의 의미라는 점을 구분해야 합니다.