Elasticsearch는 여러분의 사용 사례에 가장 적합한 검색 솔루션을 구축하는 데 도움이 되는 새로운 기능으로 가득 차 있습니다. 최신 검색 AI 경험 구축에 관한 실습형 웨비나에서 이러한 기능을 실제로 활용하는 방법을 배워 보세요. 지금 무료 클라우드 체험을 시작하거나, 내 로컬 기기에서 Elastic을 사용해 볼 수 있습니다.
시맨틱 검색은 검색 정확도 측면에서 무궁무진한 가능성을 열어주었습니다. ELSER, E5, Jina Embedding v4와 같은 고품질의 희소 및 밀집 모델은 키워드 일치가 아닌 단어의 의미를 기반으로 관련성 높은 결과를 제공합니다. 그러나 시맨틱 검색은 때때로 검색 결과의 끝부분이나 인덱스에 관련 결과가 부족한 쿼리에 대해 관련성이 떨어지는 결과를 반환할 수 있습니다. 이러한 희소 및 밀집 모델의 속성으로 인해 사용자가 혼란을 겪거나 대규모 언어 모델(LLM)에서 귀중한 토큰이 낭비될 수 있습니다.
이 글에서는 최소 점수 매개변수를 사용하여 시맨틱 검색 결과의 정밀도를 높이는 방법을 알아봅니다. 이 블로그 게시물에 제공된 예시를 테스트해 보고 싶다면 관련 Jupyter 노트북으로 이동하세요.
배경: 정밀도와 재현율
검색 정확도에서 정밀도와 재현율은 핵심 개념입니다. 아직 익숙하지 않은 독자라면 관련 내용을 알아보기를 강력히 권장합니다. 다음은 간략한 내용입니다.
- 정밀도: 사용자와 관련된 반환된 검색 결과의 비율.
- 재현율: 검색 결과 집합에 포함된 코퍼스 내 모든 관련 문서의 비율.
다시 말해 정밀도는 오직 관련성 있는 결과만 반환하는 것이고, 재현율은 관련성 있는 모든 결과를 반환하는 것입니다. 짐작하시겠지만, 이 두 가지는 종종 상충되는 요구 사항입니다. 시맨틱 검색은 재현율은 매우 높지만, 정밀도는 떨어지는 경향이 있습니다. 이 속성을 해결하는 방법을 알아보려면 계속 읽어보세요.
최소 점수 매개변수 소개
'min_score' 매개변수를 사용하면 최소 점수를 설정하여 정밀도를 향상할 수 있으며, 이 매개변수는 정의된 임계값보다 낮은 점수를 가진 일치 항목을 제거하여 결과 집합을 잘라냅니다. 다음은 간단한 예시입니다.
점수 정규화
최소 점수를 설정하는 것도 좋지만, 모든 시맨틱 모델이 정적 임계값에 적합한 점수를 반환하는 것은 아닙니다. 예를 들어 ELSER는 제한이 없는 점수를 반환합니다. 일부 밀집 모델 점수는 밀집도가 높으며 특정 쿼리의 컨텍스트에서만 의미가 있습니다.
대부분의 시맨틱 검색 사례의 경우 'min_score'를 적용하기 전에 정규화 접근 방식을 사용하는 것이 좋습니다. 정규화는 문서 점수가 정의된 간격 내에 있도록 보장합니다. Elasticsearch 검색기는 'l2_norm'과 'minmax'라는 두 가지 정규화 도구를 제공합니다. 가장 일반적으로 사용되는 것은 'minmax'입니다. 이해하기 쉽고 많은 시나리오에서 잘 작동하기 때문입니다. 'minmax'의 주요 속성은 다음과 같습니다.
- 문서 점수는 0–1점 사이로 분포됩니다.
- 가장 높은 점수를 받은 문서는 항상 1점으로 처리됩니다.
- 가장 낮은 점수를 받은 문서는 항상 0점으로 처리됩니다.
- 이로 인해 키워드 검색에 적합하지 않을 수 있습니다. 자세한 내용은 '하이브리드 검색' 섹션을 참조하세요.
다음은 min_score 을(를) 사용하여 정규화된 시맨틱 쿼리의 예입니다. 검색 결과 목록을 100개부터 시작하는 더 긴 목록으로 반환할 수 있도록 순위 창 크기를 500으로 늘렸습니다.
이 크기는 실제 프로덕션 환경에서 일반적으로 사용되는 값보다 크게 설정되었습니다. 이는 검색 결과의 품질을 검사하고 결과를 조정하기 위한 것입니다.
선형 검색기를 사용한 하이브리드 검색
하이브리드 검색의 경우 가장 간단한 접근 방식은 모든 점수를 정규화하고 가중치를 부여한 다음 최소 점수를 적용하는 것입니다. 합이 1인 가중치를 선택하면 총점이 0–1 범위 내에 유지됩니다. 이렇게 하면 최종 점수를 쉽게 파악하고 min_score 을(를) 조정할 수 있습니다. 다음은 그 예입니다.
RRF를 사용한 하이브리드 검색
BM25에서는 종종 AND 연산자나 minimum_should_match 와(과) 같은 다른 수단을 통해 정밀도를 제어하기도 합니다. 또한 단일하고 정확하며 희귀한 용어로 구성된 쿼리는 자연스럽게 검색 결과 수가 적고, 그 결과가 모두 관련성이 높은 경우가 많습니다. 이는 다음과 같은 결과로 이어질 수 있습니다.
- BM25 검색기에서 결과 뒷부분에 있는 결과는 절대 BM25 점수가 최고 점수에 근접하더라도 낮은 정규화 점수를 받게 됩니다.
- 매우 낮은 BM25 점수를 시맨틱 점수에 더하면 총점이 시맨틱 점수와 거의 같아집니다.
- BM25 점수 기여도가 부족하면
min_score threshold에 의해 문서가 폐기될 수 있습니다.
이에 대한 해결책으로 상호 순위 융합(RRF)을 사용하여 BM25와 시맨틱 결과를 결합할 수 있습니다. RRF는 서로 다른 검색 알고리즘의 점수를 비교하는 문제를 해결하기 위해 각 결과 집합에서의 위치에 초점을 맞춥니다. 이 시나리오에서는 min_score 이(가) 시맨틱 검색기에만 적용됩니다.
결론
min_score을(를) 사용하여 시맨틱 검색 알고리즘의 높은 재현율로 인해 발생하는 결과 집합의 오탐 수를 줄이는 방법을 보여주었습니다. 검색기에 대해 자세히 알아보려면 이 블로그 게시물과 Elasticsearch 설명서를 참조하세요.




