하이브리드 검색 재조명: Elasticsearch의 리니어 리트리버를 소개합니다!

리니어 리트리버가 가중치 점수와 최소 최대 정규화를 활용하여 보다 정확하고 일관된 랭킹을 위해 하이브리드 검색을 향상시키는 방법을 알아보고 그 사용법을 알아보세요.

Elasticsearch는 여러분의 사용 사례에 가장 적합한 검색 솔루션을 구축하는 데 도움이 되는 새로운 기능으로 가득 차 있습니다. 최신 검색 AI 경험 구축에 관한 실습형 웨비나에서 이러한 기능을 실제로 활용하는 방법을 배워 보세요. 지금 무료 클라우드 체험을 시작하거나, 내 로컬 기기에서 Elastic을 사용해 볼 수 있습니다.

이전 블로그 게시물에서 복잡한 랭킹 파이프라인을 생성할 수 있도록 처음부터 다시 설계된 검색어 프레임워크를 소개했습니다. 또한 상호 순위 융합(RRF) 검색기가 서로 다른 쿼리의 결과를 병합하여 하이브리드 검색을 가능하게 하는 방법도 살펴봤습니다. RRF는 구현하기 쉽지만, 실제 점수를 무시하고 순전히 상대적인 순위에만 초점을 맞춘다는 한계가 있습니다. 따라서 미세 조정과 최적화가 어렵습니다.

리니어 리트리버를 만나보세요!

이 게시물에서는 하이브리드 검색을 지원하는 최신 기능인 linear 리트리버를 소개합니다! rrf 과 달리 linear 검색기는 문서와 일치하는 모든 쿼리에 대해 가중 합계를 계산합니다. 이 접근 방식은 결과 집합 내에서 각 문서의 상대적 중요도를 유지하면서 각 쿼리가 최종 점수에 미치는 영향을 정밀하게 제어할 수 있습니다. 그 결과, 하이브리드 검색을 보다 직관적이고 유연하게 미세 조정할 수 있는 방법을 제공합니다.

최종 점수가 계산될 리니어 리트리버를 정의합니다:

score=5knn+1.5bm25score = 5 * knn + 1.5 * bm25

간단합니다:

얼마나 간단하고 직관적인지 아시나요? (그리고 rrf 와 정말 비슷합니다!) 이 구성을 사용하면 상대 순위에만 의존하는 rrf 과 달리 각 쿼리 유형이 최종 순위에 기여하는 정도를 정밀하게 제어할 수 있습니다.

한 가지 주의할 점은 사용된 유사성 측정지표에 따라 knn 점수가 엄격하게 제한될 수 있다는 점입니다. 예를 들어 코사인 유사도 또는 단위 정규화된 벡터의 도트 곱을 사용하면 점수는 항상 [0, 1] 범위 내에 있습니다. 반면 bm25 점수는 예측 가능성이 낮고 범위가 명확하게 정의되어 있지 않습니다.

점수 확장: kNN 대 BM25

하이브리드 검색의 한 가지 문제점은 검색기마다 다른 척도로 점수를 산출한다는 점입니다. 예를 들어 다음 시나리오를 생각해 보세요:

쿼리 A 점수:

doc1doc2doc3doc4
knn0.3470.350.3480.346
bm251001.510.5

쿼리 B 점수:

doc1doc2doc3doc4
knn0.3470.350.3480.346
bm250.630.010.30.4

kNN 점수는 0에서 1 사이의 범위인 반면 bm25 점수는 매우 다양합니다. 이러한 차이로 인해 결과 결합을 위한 정적 최적 가중치를 설정하기가 까다롭습니다.

구원의 정규화: MinMax 정규화 도구

이 문제를 해결하기 위해 다음 공식을 사용하여 각 쿼리에 대해 독립적으로 점수를 [0, 1] 범위로 확장하는 minmax 정규화기(선택 사항)를 도입했습니다:

normalizedscore=(scoremin)/(maxmin)normalized_score = (score - min) / (max - min)

이렇게 하면 쿼리 결과 집합 내에서 각 문서의 상대적 중요도가 유지되므로 서로 다른 검색기의 점수를 쉽게 결합할 수 있습니다. 정규화를 사용하면 점수는 다음과 같이 됩니다:

쿼리 A 점수:

doc1doc2doc3doc4
knn0.3470.350.3480.346
bm251.000.010.0050.000

쿼리 B 점수:

doc1doc2doc3doc4
knn0.3470.350.3480.346
bm251.000.0000.4650.645

이제 모든 점수는 [0, 1] 범위에 속하며, 절대 점수 대신 결과의 (쿼리 대비) 중요도를 파악하고 쿼리 간 일관성을 유지하므로 가중치 합계를 최적화하는 것이 훨씬 더 간단해졌습니다.

리니어 리트리버 예시

이제 예제를 통해 위의 내용이 어떻게 보이는지, linear 리트리버가 rrf 의 몇 가지 단점을 어떻게 해결하는지 살펴보도록 하겠습니다. RRF는 상대적인 순위에만 의존하며 실제 점수 차이는 고려하지 않습니다. 예를 들어 다음과 같은 점수가 주어집니다:

doc1doc2doc3doc4
knn0.3470.350.3480.346
bm251001.510.5
RRF 점수0.032260.032520.032000.03125

rrf는 문서의 순위를 매깁니다:

doc2>doc1>doc3>doc4doc2 > doc1 > doc3 > doc4

그러나 doc1은 다른 문서보다 bm25 점수가 훨씬 높은데, rrf 은 상대적인 순위만 보기 때문에 이를 포착하지 못합니다. 정규화와 결합된 linear 리트리버는 점수와 그 차이를 모두 정확하게 설명하여 보다 의미 있는 순위를 생성합니다:

doc1doc2doc3doc4
knn0.3470.350.3480.346
bm2510.010.0050

위에서 볼 수 있듯이 doc1의 높은 순위와 scorebm25 이 적절히 고려되어 최종 점수에 반영되었습니다. 또한 모든 점수는 이제 [0, 1] 범위 내에 있으므로 훨씬 더 직관적인 방식으로 비교하고 결합할 수 있으며 오프라인 최적화 프로세스도 구축할 수 있습니다.

모든 것을 종합하기

정규화를 통해 linear 검색기를 최대한 활용하려면 검색 요청은 다음과 같이 표시되어야 합니다:

이 접근 방식은 linear 리트리버의 유연성과 직관적인 채점 방식을 유지하면서 MinMax 정규화를 통해 일관된 점수 확장을 보장하는 두 가지 장점을 결합한 것입니다.

모든 리트리버와 마찬가지로 linear 리트리버는 설명 기능, 일치 항목 강조 표시, 필드 축소 등을 지원하여 계층적 리트리버 트리의 모든 레벨에 통합할 수 있습니다.

리니어 리트리버를 선택해야 하는 시기 및 리니어 리트리버가 차이를 만드는 이유

linear 리트리버:

  • 단순한 순위가 아닌 실제 점수를 활용하여 상대적 중요도를 유지합니다.
  • 다양한 쿼리의 가중치 기여도를 사용하여 미세 조정할 수 있습니다.
  • 정규화를 사용하여 일관성을 향상시켜 하이브리드 검색을 더욱 강력하고 예측 가능하게 만듭니다.

결론

linear 리트리버는 이미 Elasticsearch 서버리스와 8.18 및 9.0 릴리즈에서 사용할 수 있습니다! 더 많은 예제와 구성 매개변수는 문서에서도 확인할 수 있습니다. 직접 사용해보고 하이브리드 검색 환경을 개선하는 방법을 알아보세요. 여러분의 피드백을 기다리겠습니다. 즐거운 검색 되세요!

자주 묻는 질문

리니어 리트리버는 이전의 상호 순위 융합(RRF) 방식에 비해 하이브리드 검색을 어떻게 개선하나요?

리니어 리트리버는 하이브리드 검색에서 RRF에 비해 몇 가지 장점을 제공합니다. RRF는 상대적 순위에만 초점을 맞추고 실제 점수는 무시하는 반면, 선형 검색기는 쿼리 전체에 가중 합계를 계산하여 각 문서의 상대적 중요도를 유지합니다. 이 접근 방식을 사용하면 다양한 쿼리 유형이 최종 순위에 기여하는 방식을 보다 정밀하게 제어할 수 있습니다. 또한 선형 검색기는 MinMax와 같은 정규화 기술을 지원하므로 여러 검색기의 점수를 결합하고 최종 검색 결과를 최적화하는 것이 더 쉬워집니다. 이러한 유연성과 제어 기능은 보다 직관적이고 세밀하게 조정된 하이브리드 검색 환경을 제공합니다.

관련 콘텐츠

최첨단 검색 환경을 구축할 준비가 되셨나요?

충분히 고급화된 검색은 한 사람의 노력만으로는 달성할 수 없습니다. Elasticsearch는 여러분과 마찬가지로 검색에 대한 열정을 가진 데이터 과학자, ML 운영팀, 엔지니어 등 많은 사람들이 지원합니다. 서로 연결하고 협력하여 원하는 결과를 얻을 수 있는 마법 같은 검색 환경을 구축해 보세요.

직접 사용해 보세요