본문 바로가기
WIKI 기술 지식 베이스

Vector search performance tuning

원문 보기 위키 갱신

출처: 문서

본문

벡터 검색 성능 튜닝

이 항목은 근사 k-NN(ANN) 검색의 인덱싱 및 검색 성능을 개선하기 위한 성능 튜닝 권장 사항을 제공해요. 높은 수준에서 k-NN은 다음 원칙에 따라 작동해요:

  • 벡터 인덱스는 knn_vector 필드/루씬 세그먼트 쌍별로 생성돼요.
  • 쿼리는 샤드 내 세그먼트에서 순차적으로 실행돼요(다른 OpenSearch 쿼리와 마찬가지로).
  • 조정 노드는 각 샤드에서 반환된 이웃 중 최종 size 개의 이웃을 선택해요.

다음 섹션에서는 ANN을 스코어링 스크립트를 사용한 정확한 k-NN과 비교하는 방법에 대한 권장 사항을 제공해요.

엔진 및 클러스터 노드 크기 조정에 대한 권장 사항

ANN 검색에 사용되는 세 가지 엔진은 각각 특정 상황에서 다른 엔진보다 더 적합하게 만드는 속성을 가지고 있어요. 다음 정보를 사용하여 요구 사항에 가장 적합한 엔진을 결정하는 데 도움을 받으세요.

인덱싱 처리량을 최적화하려면 Faiss가 좋은 선택이에요. 상대적으로 작은 데이터 세트(최대 수백만 개의 벡터)의 경우 Lucene 엔진이 더 나은 지연 시간과 재현율을 보여줘요. 동시에 인덱스 크기가 다른 엔진에 비해 가장 작아서 데이터 노드에 더 작은 AWS 인스턴스를 사용할 수 있어요. 자세한 내용은 Choosing the right method and engine 및 Memory estimation을 참조하세요.

클러스터 노드 크기 조정을 고려할 때 일반적인 접근 방식은 먼저 클러스터 전체에 인덱스를 균등하게 분배하는 것이에요. 그러나 다른 고려 사항도 있어요. 이러한 선택을 하는 데 도움을 받으려면 Sizing domains 섹션에서 OpenSearch 관리 서비스 지침을 참조할 수 있어요.

재현율 개선

재현율은 벡터 수, 차원, 세그먼트 등 여러 요인에 따라 달라져요. 많은 수의 작은 세그먼트를 검색하고 결과를 집계하면 적은 수의 큰 세그먼트를 검색하고 결과를 집계하는 것보다 더 나은 재현율을 얻을 수 있어요. 더 작은 알고리즘 매개변수를 사용하는 경우 더 큰 네이티브 라이브러리 인덱스는 재현율을 잃을 가능성이 더 높아요. 알고리즘 매개변수에 더 큰 값을 선택하면 이 문제를 해결하는 데 도움이 되지만 검색 지연 시간과 인덱싱 시간이 희생돼요. 시스템의 지연 시간 및 정확도 요구 사항을 이해하고 실험을 기반으로 세그먼트 수를 선택하는 것이 중요해요.

기본 매개변수는 더 넓은 사용 사례에 적용되지만, 자신의 데이터 세트에서 직접 실험을 실행하고 적절한 값을 선택해야 해요. 인덱스 수준 설정은 Index settings을 참조하세요.

ANN과 스코어링 스크립트 비교

표준 k-NN 쿼리와 사용자 정의 스코어링 옵션은 다르게 수행돼요. 대표적인 문서 집합으로 테스트를 실행하여 검색 결과와 지연 시간이 기대에 부합하는지 확인하세요.

사용자 정의 스코어링은 초기 필터가 문서 수를 20,000개 이하로 줄이는 경우 가장 잘 작동해요. 샤드 수를 늘리면 지연 시간을 개선할 수 있지만, 샤드 크기를 recommended guidelines 내로 유지해야 해요.

더 알아보기 (Learn more)