랭킹 및 리랭킹

원본 보기

랭킹 및 리랭킹

많은 검색 시스템은 다단계 검색 파이프라인 위에 구축됩니다.

앞 단계에서는 비용이 낮고 빠른 알고리즘을 사용해 가능한 매칭 후보를 폭넓게 찾습니다.

이후 단계에서는 주로 머신러닝 기반의 더 강력한 모델을 사용해 문서 순서를 재정렬합니다. 이 단계를 리랭킹(re-ranking)이라고 합니다. 리소스를 많이 사용하는 모델이 사전 필터링된 더 작은 결과 집합에만 적용되기 때문에, 이 방식은 검색 성능과 연산 비용을 최적화하면서도 더 관련성 높은 결과를 반환합니다.

Elasticsearch는 검색 관련성과 성능을 최적화하기 위해 다양한 랭킹 및 리랭킹 기법을 지원합니다.

Elasticsearch는 용어 빈도와 역문서 빈도를 기준으로 문서 길이를 반영해 문서 순위를 매깁니다. BM25는 Elasticsearch의 기본 통계 기반 스코어링 알고리즘입니다.

벡터 검색은 데이터를 밀집(dense) 또는 희소(sparse) 벡터 임베딩으로 변환해 의미를 포착하고, 쿼리 벡터에 대한 유사도 점수를 계산하는 방식입니다. 자동 추론과 벡터화를 원한다면 semantic_text 필드에 벡터를 저장하고, 기반 임베딩 모델을 더 세밀하게 제어하고 싶다면 dense_vectorsparse_vector 필드를 사용하세요. 유사도 점수를 계산하려면 semantic, knn, sparse_vector 쿼리로 벡터 필드를 조회합니다. 자세한 내용은 시맨틱 검색을 참고하세요.

하이브리드 검색 기법은 전문 검색(full-text)과 벡터 검색 파이프라인의 결과를 결합합니다. Elasticsearch는 Reciprocal Rank Fusion(RRF) 알고리즘을 사용해 어휘 기반 매칭(BM25) 점수와 벡터 검색 점수를 결합할 수 있습니다.

다음의 고급 리랭킹 파이프라인을 사용할 때, 1단계 검색 메커니즘이 후보 집합을 효과적으로 생성합니다. 이 후보들이 리랭커로 전달되어 연산 비용이 더 큰 리랭킹 작업을 수행합니다.

시맨틱 리랭킹은 머신러닝 모델을 사용해 쿼리와의 의미적 유사도를 기준으로 검색 결과를 재정렬합니다. 모델은 Elasticsearch 클러스터에 직접 호스팅할 수도 있고, 추론 엔드포인트를 사용해 서드파티 서비스가 제공하는 모델을 호출할 수도 있습니다. 시맨틱 리랭킹을 사용하면 기존 전문 검색 인덱스에서 별도 설정 없이 시맨틱 검색 기능을 활용할 수 있습니다.

Elasticsearch는 두 가지 인터페이스를 통해 시맨틱 리랭킹을 지원합니다:

Learning To Rank은 고급 사용자를 위한 기능입니다. Learning To Rank는 머신러닝 모델을 학습시켜 시간이 지남에 따라 갱신되는 랭킹 함수를 검색 경험에 맞게 구축하는 방식입니다. LTR은 충분한 학습 데이터가 있고 고도로 맞춤화된 관련성 튜닝이 필요한 경우에 가장 적합합니다.