Elastic Stack의 정보 검색 개선: 하이브리드 검색

info-retrieval-blog-720x420-v1.jpeg

지난 번 블로그 포스팅에서는 효과적인 제로샷 텍스트 검색을 위해 학습된 모델인 Elastic Learned Sparse EncodeR(ELSER)를 소개했습니다. Elasticsearch®에는 또한 뛰어난 어휘 검색 기능과 다양한 쿼리 결과를 결합하기 위한 풍부한 도구가 있습니다. 이 블로그에서는 하이브리드 검색의 개념을 소개하고 Elasticsearch에서 사용할 수 있는 두 가지 구체적인 구현을 살펴봅니다. 특히, 상호 순위 결합 및 점수의 가중치 합계를 사용해 Elastic Learned Sparse Enco deR를 BM25와 결합하여 성능을 향상시키는 방법을 살펴봅니다.

또한 몇 가지 일반적인 연구 문제를 탐구하기 위해 수행한 실험에 대해서도 논의해 보겠습니다. 여기에는 상호 순위 결합을 매개변수화하는 가장 좋은 방법과 점수의 가중치 합계를 보정하는 방법이 포함됩니다.

Video thumbnail

하이브리드 검색

제로샷 시나리오에서 좋은 성능을 보이는 검색 모델을 생성하는 최신 학습 파이프라인에도 불구하고, 어휘 검색기(예: BM25)와 시맨틱 검색기(예: ELSER)는 어느 정도 보완적인 것으로 알려져 있습니다. 특히, 이러한 검색기들이 검색하는 관련 없는 문서들 간에 발생하는 일치보다 이러한 검색기들이 검색하는 관련있는 문서들 간에 더 많은 일치가 발생한다고 가정하면, 검색 방법의 결과를 결합하는 것이 정확도를 향상시키게 됩니다.

대부분의 쿼리 및 말뭉치에는 관련 있는 문서보다 관련 없는 문서가 더 많기 때문에 매우 다른 검색 메커니즘을 사용하는 방법의 경우 이 가설이 타당합니다. 방법이 관련 있는 문서와 관련 없는 문서를 독립적이고 균일하게 무작위로 검색하는 경우, 이러한 불균형은 관련 없는 문서보다 관련 있는 문서가 일치할 가능성이 훨씬 더 높다는 것을 의미합니다. 표 1에 표시된 대로 ELSER, BM25 및 다양한 밀집 검색기 간에 이 가설을 확인하기 위해 몇 가지 중첩 측정을 수행했습니다. 이는 소위 하이브리드 검색을 사용하는 데 대한 몇 가지 근거를 제공합니다. 다음에서는 하이브리드 검색의 두 가지 명시적 구현을 조사합니다.

표 1: 3개의 검색기의 중첩 계수
표 1: ArguAna의 상위 1,000개 문서에 대해 ELSER와 비교한 3개의 검색기의 중첩 계수

상호 순위 결합

상호 순위 결합 논문에서 제안되었습니다. 사용하기 쉽고, 완전히 감독되지 않으며 점수 보정도 필요하지 않습니다. BM25와 모델을 양쪽 모두 사용하여 문서 d의 순위를 매기고, 두 방법의 순위 위치를 기반으로 점수를 계산하는 방식으로 작동합니다. 문서는 점수 내림차순으로 정렬됩니다. 점수는 다음과 같이 정의됩니다.

상호 순위 결합

이 방법은 상수 k를 사용하여 순위가 낮은 문서의 중요도를 조정합니다. 이는 각 방법으로 검색된 상위 N개 문서 세트에 적용됩니다. 두 가지 방법 중 하나에 대해 이 세트에서 문서가 누락되는 경우, 해당 용어는 0으로 설정됩니다.

상호 순위 결합을 소개하는 논문에서는 k에 대해 60의 값을 제안하고 N이 검색할 문서 수에 대해서는 논의하지 않습니다. 분명히 순위 품질은 N을 높이면 영향을 받을 수 있고, 어느 방법에 대해서도 Recall@N은 증가합니다. 질적으로, k가 클수록 순위가 낮은 문서가 최종 순서에 더 중요합니다. 그러나 첨단 어휘 시맨틱 하이브리드 검색을 위한 k와 N의 최적 값이 무엇일지는 선험적으로 명확하지 않습니다. 또한, 우리는 결과가 이러한 매개변수의 선택에 얼마나 민감한지, 그리고 최적 조건이 데이터 세트와 모델 간에 일반화되는지를 이해하고 싶었습니다. 이는 제로샷 설정에서 방법에 대한 자신감을 갖는 데 있어 중요합니다.

이러한 질문을 탐색하기 위해, 우리는 다양한 모델에 대한 BEIR 벤치마크 하위 집합의 가중 평균 NDCG@10을 최대화하기 위해 그리드 검색을 수행했습니다. 우리는 단일 텍스트 필드와 벡터로 각 문서를 나타내는 이 실험에서 검색을 위해 Elasticsearch를 사용했습니다. BM25 검색은 match 쿼리와 script_score 쿼리를 통해 정확한 벡터 검색을 사용한 밀집 검색을 사용해 수행되었습니다.

시맨틱 검색
표 2: 시맨틱 검색을 위해 이중 인코더 roberta-base-ance-firstp를 사용해 다양한 k 및 상위 N 매개변수에 대해 쿼리 수별로 가중치가 부여된 BEIR 데이터 세트(webis-touche2020, scidocs, nq, hotpotqa, fiqa, dbpedia-entity, arguana, trec-covid, nfcorpus)의 하위 집합에 대한 평균 NDCG@10

표 2를 참조하면, roberta-base-ance-firstp경우 k와 N의 최적 값은 각각 20과 1000임을 알 수 있습니다. 우리는 대부분의 개별 데이터 세트에 대해, 동일한 매개변수 조합이 최적이었다는 점을 강조합니다. 우리는 distilbert-base-v3 minilm-l12-v3에 대해 동일한 그리드 검색을 수행했으며, 각 모델에 대해 동일한 결론을 내렸습니다. 또한 최상의 매개변수 조합과 최악의 매개변수 조합 간의 차이가 약 5%에 불과하다는 점도 주목할 가치가 있습니다. 따라서 이러한 매개변수를 잘못 설정해도 페널티가 상대적으로 적습니다.

또한 상호 순위 결합을 사용하여 제로샷 설정에서 ELSER의 성능을 향상할 수 있는지 확인하고 싶었습니다. BEIR 벤치마크의 결과는 표 3에 나와 있습니다.

NDCG@10 비교
표 3: BM25(기본 영어 분석기와 함께 Elasticsearch 8.8 사용), k=20 및 N=1,000인 상호 순위 결합(RRF)을 통해 결합된 BM25 및 ELSER 간의 NDCG@10 비교

상호 순위 결합은 평균 NDCG@10을 ELSER 단독에 비해 1.4%, BM25 단독에 비해 18% 증가시킵니다. 또한 중요한 것은 결과가 모든 테스트 데이터 세트에 대해 BM25 단독보다 더 좋거나 비슷하다는 것입니다. 향상된 순위는 모델 튜닝, 훈련 데이터 세트 또는 특정 보정 없이도 달성됩니다. 유일한 단점은 현재 Elasticsearch에서 두 쿼리가 순차적으로 수행되므로 쿼리 대기 시간이 증가한다는 것입니다. 이는 BM25 검색이 일반적으로 시맨틱 검색보다 빠르다는 사실로 인해 완화됩니다.

우리의 조사 결과에 따르면 상호 순위 결합은 효과적인 '플러그 앤 플레이' 전략으로 안전하게 사용될 수 있습니다. 또한 BM25, ELSER 및 자신의 데이터에 대한 순위 결합을 통해 얻은 결과의 품질을 검토할 가치가 있습니다. BEIR 제품군의 각 개별 데이터 세트에 대해 가장 성능이 좋은 접근 방식을 선택하는 경우, 평균 NDCG@10의 증가는 ELSER 및 BM25 단독에 비해 각각 3% 및 20%입니다.

이 작업의 일환으로 우리는 키워드 검색과 자연 질문 검색을 구별하기 위해 몇 가지 간단한 검색어 분류도 수행했습니다. 이는 특정 방법이 가장 잘 수행되도록 하는 메커니즘을 이해하려는 것이었습니다. 아직까지는 이에 대한 명확한 설명이 없으며 이에 대해 더 자세히 알아볼 계획입니다. 그러나 우리는 두 방법 모두 전체적인 정확도가 비슷할 때 하이브리드 검색이 강력한 성능을 발휘한다는 사실을 발견했습니다.

마지막으로, 상호 순위 결합은 세 가지 이상의 방법과 함께 사용하거나 다양한 필드의 순위를 결합하는 데 사용할 수 있습니다. 지금까지 우리는 이쪽으로는 연구를 진행하지 않았습니다.

점수의 가중치 합계

Elasticsearch에서 지원하는 하이브리드 검색을 수행하는 또 다른 방법은 선형 함수를 사용하여 BM25 점수와 모델 점수를 결합하는 것입니다. 이 접근 방식은 이 논문에서 연구되었으며, 잘 보정되면 상호 순위 결합보다 더 효과적인 것으로 나타났습니다. 우리는 다음과 같이 정의된 점수의 볼록 선형 조합을 통해 하이브리드 검색을 탐색했습니다.

점수의 가중치 합계

여기서 α는 모델 점수 가중치이며 0과 1 사이입니다.

선형 조합의 이상적인 보정은 모델 미세 조정에 사용되는 것과 유사한 주석이 필요하므로 간단하지 않습니다. 일련의 쿼리 및 연관된 관련 문서가 주어지면, 모든 최적화 방법을 사용하여 해당 문서를 검색하기 위한 최적의 조합을 찾을 수 있습니다. 실험에서는 BEIR 데이터 세트와 베이지안 최적화를 사용하여 NDCG@10을 최적화하는 최적의 조합을 찾았습니다. 이론적으로, 점수 척도의 비율은 α에 대해 학습된 값에 통합될 수 있습니다. 그러나 다음 실험에서는 최소-최대 정규화를 사용하여 데이터 세트당 BM25 점수와 ELSER 점수를 정규화하고, 각 데이터 세트의 일부 대표 쿼리에 대한 상위 1,000개 점수 중 최소값과 최대값을 계산했습니다. 희망은 정규화된 점수를 통해 알파 전송의 최적 값을 얻는 것이었습니다. 이에 대한 증거는 찾지 못했지만, 훨씬 더 일관성이 있으므로 정규화를 통해 보정의 견고성이 향상될 가능성이 높습니다.

주석을 얻는 데는 비용이 많이 들기 때문에, 상호 순위 결합(RRF)보다 낫다는 확신을 가지려면 얼마나 많은 데이터를 수집해야 하는지 아는 것이 유용합니다. 그림 1은 ArguAna 데이터 세트에 대한 주석이 달린 쿼리 수의 함수로서 BM25와 ELSER 점수의 선형 조합에 대한 NDCG@10을 보여줍니다. 참고로, BM25, ELSER, RRF NDCG@10도 표시되어 있습니다. 이러한 종류의 곡선은 데이터 세트 전체에서 일반적입니다. 실험에서, 정확한 임계값은 데이터 세트마다 조금씩 다르지만 약 40개의 주석이 달린 쿼리를 사용하여 RRF보다 뛰어난 성능을 발휘할 수 있다는 사실을 발견했습니다.

NDCG@10 진화
그림 1: 알파를 최적화하는 데 사용되는 쿼리 수에 따라 NDCG@10이 진화합니다(ArguAna 데이터 세트에서).

또한 다양한 데이터 세트(그림 2 참조)와 다양한 검색 모델에 따라 최적의 가중치가 크게 다르다는 사실도 관찰했습니다. 이는 점수를 정규화한 후에도 마찬가지입니다. 최적의 조합은 주어진 데이터 세트에서 개별 방법이 얼마나 잘 수행되는지에 따라 달라지기 때문에 이를 예상할 수 있습니다.

제로샷 매개변수화 가능성을 탐색하기 위해 우리는 벤치마크 세트의 모든 데이터 세트에 대해 단일 가중치 α 를 선택하는 실험을 했습니다. 이를 위해 동일한 지도 접근 방식을 사용했지만, 이번에는 전체 데이터 세트에 대해 평균 NDCG@10을 최적화하기 위해 가중치를 선택했습니다. 결과는 제로샷 성능을 대표할 수 있을 만큼 데이터 세트 간에 충분한 변동이 있다는 것입니다. 

요약하면, 이 접근 방식은 RRF보다 평균 NDCG@10이 더 좋습니다. 그러나 우리는 또한 결과가 RRF보다 덜 일관적이라는 점을 발견했으며 최적의 가중치는 모델에 따라 다르다는 점을 강조합니다. 이러한 이유로, 특정 모델에 대해 보정된 경우에도 접근 방식이 새로운 설정으로 이전된다는 확신이 약합니다. 우리의 견해로는 선형 결합은 "플러그 앤 플레이" 접근 방식이 아닙니다. 대신, 최적의 설정을 결정하려면 자체 데이터 세트에서 조합의 성능을 신중하게 평가하는 것이 중요하다고 생각합니다. 그러나 아래에서 볼 수 있듯이 잘 보정되면 매우 좋은 결과를 얻을 수 있습니다.

 BEIR 데이터 세트의 가변성
그림 2: BEIR 데이터 세트 전반의 알파 변동성. 이는 베이지안 최적화 및 테스트 분할을 사용하여 얻습니다.

정규화가 없으면 점수가 많이 달라질 수 있으므로, 정규화는 다양한 데이터 세트와 모델 간의 점수를 비교하는 데 필수적입니다. 특히 쿼리가 이루어질 때까지 점수 범위를 알 수 없는 Okapi BM25의 경우에는 항상 쉬운 일이 아닙니다. 밀집 모델 점수는 벡터를 정규화할 수 있으므로 정규화하기가 더 쉽습니다. 그러나 일부 밀집 모델은 정규화 없이 훈련되며 내적을 사용하면 더 나은 성능을 발휘할 수 있다는 점은 주목할 가치가 있습니다.

ELSER는 크로스 인코더 점수 마진을 복제하도록 훈련되었습니다. 보장되지는 않지만, 일반적으로 0~20 범위의 점수가 생성되는 것을 볼 수 있습니다. 일반적으로 쿼리 기록과 상위 N개 문서 점수를 사용하여 분포를 근사화하고 최소 및 최대 추정치로 점수 함수를 정규화할 수 있습니다. 비선형 정규화는 예를 들어 점수 이상값이 있는 경우 선형 조합을 개선할 수 있지만 이를 테스트하지는 않았습니다.

상호 순위 결합의 경우, 이번에는 가능한 최상의 시나리오에서 BM25와 ELSER의 선형 조합의 정확성을 이해하고 싶었습니다. 이 시나리오에서는 선형 조합을 사용하여 이상적인 NDCG@10을 얻기 위해 데이터 세트당 하나의 가중치 α를 최적화합니다. 우리는 보정을 위해 300개의 쿼리를 사용했습니다. 이는 모든 데이터 세트에 대한 최적의 가중치를 추정하는 데 충분하다는 것을 알았습니다. 프로덕션에서 이 시나리오는 정확한 최소-최대 정규화와 가중치 조정을 위한 대표 주석이 달린 데이터 세트가 모두 필요하기 때문에 현실적으로 달성하기 어렵습니다. 문서와 쿼리가 크게 드리프트하는 경우에도 새로 고쳐야 합니다. 그럼에도 불구하고 최선의 성능을 제한하는 것은 노력의 가치가 있는지 판단하는 데 여전히 유용합니다. 결과는 표 4에 표시됩니다. 이 접근 방식은 ELSER 단독에 비해 평균 NDCG@10이 6% 향상되고 BM25 단독에 비해 24% 개선됩니다.

Elastic Learned Sparse Encoder
표 4: BM25(기본 영어 분석기와 함께 elasticsearch 8.8 사용), ELSER, RRF(k=20 및 상위 N = 1,000) 및 선형 조합(평가 데이터에 최적화됨) 간의 NDCG@10 비교

결론

다양한 검색 접근 방식을 결합하여 성능을 향상하고 특히 어휘 및 시맨틱 검색이 서로 보완할 수 있음을 보았습니다. 우리가 탐구한 접근 방식 중 하나는 상호 순위 결합이었습니다. 이는 주석이나 점수 분포에 대한 사전 지식 없이도 좋은 결과를 얻을 수 있는 간단한 방법입니다. 또한, 우리는 성능 특성이 모델과 데이터 세트 전반에 걸쳐 매우 안정적이라는 것을 알았으므로 우리가 관찰한 결과가 다른 데이터 세트에도 일반화될 것이라고 확신합니다.

또 다른 접근 방식은 설정하기가 더 어려운 점수의 가중치 합계입니다. 그러나 실험에서는 올바른 설정으로 매우 좋은 순위를 얻었습니다. 이 접근 방식을 사용하려면 점수를 정규화해야 하며, BM25의 경우 일반적인 쿼리에 대한 점수 분포가 필요하고, 주석이 달린 일부 데이터를 방법 가중치 훈련에 사용해야 합니다.

이 시리즈의 최종 포스팅으로 계획된 블로그에서는 text_expansion 기능의 정식 버전 출시를 향해 나아가면서 유추 및 인덱스 성능과 관련하여 수행해 온 작업을 소개해드릴 예정입니다.

이 정보 검색 시리즈의 다른 포스팅을 살펴보세요.

이 포스팅에 설명된 기능의 릴리즈 및 시기는 Elastic의 단독 재량에 따릅니다. 현재 이용할 수 없는 기능은 정시에 또는 전혀 제공되지 않을 수 있습니다.