본문 바로가기

AI

Fusion과 Reranking

Fusion  개념

Fusion은 여러 검색 알고리즘이나 검색 엔진에서 나온 결과들을 결합하여 최종적으로 더 나은 검색 결과를 얻는 방법을 말한다. 단순히 하나의 알고리즘이나 기법을 사용해 검색하는 것보다, 다양한 방법을 조합하여 더 정확하고 다양한 검색 결과를 얻고자 할 때 사용한다. 이는 검색 엔진이나 정보 검색 시스템에서 주로 사용되는 기술이다.

왜 Fusion을 사용하는가?

각 검색 알고리즘은 각기 다른 강점과 약점을 가지고 있다.

예를 들어, BM25 같은 전통적인 텍스트 기반 검색은 키워드 일치에는 강하지만, 문장의 의미적 유사성에는 약하다.

반면, 벡터 기반의 유사성 검색은 문장의 의미를 잘 파악하지만, 특정 키워드의 중요성을 놓칠 수 있다.

이처럼 서로 다른 방식이 가진 강점을 결합하여 최종적으로 더 나은 검색 성능을 내기 위해 Fusion 방식을 사용한다.

Fusion의 원리

  1. 다양한 검색 결과 생성: 여러 검색 알고리즘이나 인덱스를 사용하여 각각 독립된 검색 결과를 얻는다.
    • 예를 들어, BM25로 키워드 기반 검색 결과를 얻고, 벡터 임베딩을 사용해 문장의 의미 기반 검색 결과를 얻을 수 있다.
  2. 결과 결합: 각 알고리즘이 반환한 결과들을 결합하여, 모든 검색 방식의 결과를 통합한다.
    • 단순하게 두 결과를 합치는 방식도 있고, 가중치를 적용해 특정 검색 결과에 더 높은 점수를 부여하는 방법도 있다.
  3. 재정렬: 통합된 결과를 특정 기준에 따라 다시 정렬하여 최종 검색 결과를 생성한다. 이 과정에서 결과를 다시 평가하고 최종적으로 사용자에게 적합한 순서를 제공한다.

Fusion 방식의 종류

1. Rank Fusion (순위 기반 퓨전)

  • 각 검색 알고리즘이 반환한 순위를 기준으로 결합한다.
  • 예를 들어, BM25에서 1위로 나온 문서와 벡터 검색에서 1위로 나온 문서가 있다면, 이 두 순위를 결합하여 최종 순위를 결정한다.
  • Borda Count, Condorcet Fusion 같은 기법들이 여기에 속한다.

2. Score Fusion (점수 기반 퓨전)

  • 각 검색 방식에서 나온 점수를 결합하여 최종 점수를 계산한다.
  • 예를 들어, BM25에서 얻은 점수와 벡터 유사성에서 얻은 점수를 더하거나 가중치를 적용해 최종 점수를 산출한 뒤, 그 점수에 따라 결과를 정렬한다.
  • 가중치 적용이 가능하며, 특정 알고리즘이 더 중요한 경우 그 알고리즘에 높은 가중치를 줄 수 있다.

3. Linear Combination (선형 결합)

  • 각 검색 알고리즘의 결과를 선형 결합하여 최종 점수를 만든다.
  • 예를 들어, 검색 점수의 70%는 BM25에서 가져오고, 30%는 벡터 유사성 검색 결과에서 가져오는 방식이다.

4. Hybrid Approach (하이브리드 접근)

  • 여러 Fusion 방식을 결합한 방법이다. 점수 기반과 순위 기반을 함께 사용하여 더 정교한 결과를 도출할 수 있다.

Fusion의 실제 사용 사례

  • 검색 엔진: 구글, 엘라스틱서치(Elasticsearch)와 같은 검색 엔진에서 여러 검색 방법(BM25, 벡터 검색 등)을 결합하여 더 정확한 검색 결과를 제공한다.
  • 추천 시스템: 사용자의 과거 행동 데이터와 콘텐츠의 유사성 데이터를 결합하여 더 나은 추천을 제공할 때 Fusion 방식을 사용한다.
  • 문서 검색 시스템: 뉴스나 학술 논문 검색 시스템에서 키워드 기반 검색과 의미 기반 검색을 결합하여 더 의미 있는 결과를 제공한다.

Fusion의 장점

  1. 다양한 방식의 장점 활용: 서로 다른 검색 방식의 강점을 결합하여 보다 다양한 검색 요구를 만족할 수 있다.
  2. 유연한 결과: 하나의 알고리즘에 의존하지 않으므로, 특정 상황에서 더 유연한 검색 결과를 제공할 수 있다.
  3. 높은 정확도: 여러 알고리즘의 결합으로 검색 결과의 정확도와 품질이 향상될 수 있다.

Fusion의 단점

  1. 복잡성 증가: 여러 알고리즘을 결합하므로 시스템이 복잡해지고, 검색 속도가 느려질 수 있다.
  2. 조정 필요: 각 알고리즘의 가중치를 적절히 설정하는 것이 어려울 수 있으며, 이를 잘못 설정하면 성능이 오히려 떨어질 수 있다.

결론

Fusion은 하나의 검색 방식만으로는 부족한 결과를 보완하기 위해 여러 검색 방식을 결합하여 최종적으로 더 나은 검색 결과를 도출하는 방법이다. 이를 통해 검색의 정확성다양성을 모두 확보할 수 있다.

 

====================================================

 

Reranking(리랭킹)은 검색 결과를 처음 나온 순서대로 사용하지 않고, 다른 기준에 따라 다시 순위를 매기는 과정이다. 검색 시스템에서는 처음 반환된 결과가 최종적으로 사용자에게 적합하지 않거나 더 나은 기준으로 정렬할 필요가 있을 때 Reranking을 사용한다.

Reranking의 필요성

검색 엔진이나 정보 검색 시스템은 주로 다음과 같은 이유로 Reranking을 사용한다:

  1. 다양한 검색 방법 결합: 첫 번째 검색 단계에서 BM25와 같은 전통적인 역색인 기반 검색 방법이나, 벡터 기반 검색(예: dense vector)을 사용할 수 있다. 이러한 검색 방법의 결과를 결합하여, 더 높은 품질의 결과를 얻기 위해 Reranking을 진행한다.
  2. 정확도 향상: 첫 번째 검색 단계에서 나오는 결과는 충분히 정확하지 않을 수 있다. 특히 사용자가 원하는 정보가 상위에 없을 때, 더 정확한 순위를 제공하기 위해 Reranking을 적용할 수 있다.
  3. 다양한 점수 기준 적용: Reranking은 처음 검색 결과의 점수를 여러 요소(예: 클릭 데이터, 사용자 피드백, 다른 검색 방식의 가중치)를 적용하여 다시 평가하고, 이를 바탕으로 정렬할 수 있다.
  4. 사용자 맞춤화: 검색 시스템에서 사용자의 과거 검색 기록, 선호도, 관심사 등을 반영하여 결과를 재정렬함으로써 개인화된 검색 결과를 제공할 수 있다.

Reranking의 적용 방식

  1. 다중 모델 기반 Reranking:
    • BM25TF-IDF와 같은 전통적인 역색인 기반 검색 모델이 초기 검색을 처리하고, 신경망 기반 모델(예: BERT, SBERT)이 후속 Reranking을 수행한다.
    • 예를 들어, 처음에는 BM25로 검색된 결과에서 상위 100개 문서를 선택하고, 이들을 벡터 기반 모델로 다시 평가하여 최종 순위를 매긴다.
  2. Fusion 후 Reranking:
    • 여러 검색 방식(BM25, dense vector 등)을 통해 나온 검색 결과를 먼저 Fusion(결합)하고, 그 후에 다시 점수를 조정해 재정렬한다.
    • 이 방식에서는 서로 다른 점수(예: BM25의 점수와 벡터 유사도)를 결합*한 후, 최종적으로 사용자에게 적합한 순위로 Reranking을 수행하게 된다.
  3. 문서 특성 기반 Reranking:
    • 문서의 길이, 작성일, 문서의 중요도 등 문서 자체의 특성을 기반으로 Reranking을 수행할 수 있다. 예를 들어, 더 최근에 작성된 문서나 더 짧고 간결한 문서를 상위에 노출시키는 방식이다.
  4. 사용자 피드백 기반 Reranking:
    • 사용자가 과거에 클릭한 문서, 클릭하지 않은 문서 등 사용자 피드백을 활용하여 Reranking을 진행할 수 있다. 이를 Learning to Rank 방식이라고 하며, 사용자 행동 데이터를 학습하여 보다 정확한 Reranking을 수행한다.

Reranking 알고리즘의 종류

  1. Pointwise 방식:
    • 각 문서의 점수를 독립적으로 평가한 후 순위를 매기는 방식이다. 각 문서에 대해 점수를 계산하고, 그 점수를 기준으로 정렬한다.
    • 예를 들어, BM25 점수와 벡터 유사도를 결합해 점수를 부여하는 방식이다.
  2. Pairwise 방식:
    • 문서 쌍 간의 상대적 순서를 평가하는 방식이다. 각 문서 쌍을 비교하여 어느 문서가 더 상위에 있어야 할지를 판단하고, 그 결과에 따라 전체 순위를 매긴다.
    • RankNet, RankBoost 같은 알고리즘들이 여기에 해당한다.
  3. Listwise 방식:
    • 전체 문서 리스트에 대한 점수를 평가하고, 최종 순위를 매기는 방식이다. 단순히 개별 문서나 문서 쌍이 아닌, 전체 문서 목록을 하나의 단위로 보고 Reranking을 수행한다.
    • ListNet이나 LambdaMART 같은 알고리즘이 여기에 속한다.

Reranking 과정의 예시

  1. 초기 검색: 사용자가 "금성이 밝게 보이는 이유"라는 검색어를 입력하면, BM25 기반 검색에서 상위 100개의 결과가 반환된다.
  2. 첫 번째 점수 계산: 각 문서에 대해 BM25로 계산된 점수와 벡터 기반 검색으로 얻은 점수를 결합하여 하나의 점수를 만든다. 예를 들어 BM25 점수에 1:500의 가중치를 줘서 결합할 수 있다.
  3. Reranking: 결합된 점수를 기준으로 다시 문서들을 정렬한다. 이때 사용자가 선호하는 문서 유형(최근 문서, 더 많은 조회 수를 가진 문서 등)에 따라 추가적인 점수 조정을 할 수 있다.
  4. 최종 결과: 최종적으로 순위가 매겨진 문서가 사용자에게 제공된다.

Reranking의 장점

  • 정확한 결과 제공: 여러 검색 방식을 결합하여 검색 정확도를 높일 수 있다.
  • 유연성: 다양한 점수 기준을 결합하여 보다 사용자 맞춤형 검색 결과를 제공할 수 있다.
  • 검색 효율성: 첫 번째 단계에서는 많은 문서를 필터링하고, 후속 단계에서 상위 문서들만 다시 정렬하므로 효율적으로 검색 성능을 개선할 수 있다.

결론적으로, Reranking은 초기 검색 결과를 더 나은 방식으로 정렬하여 최종적으로 사용자에게 적합한 정보를 제공하는 중요한 기술이다. Fusion과 함께 사용되어 검색 정확도를 극대화할 수 있다.

 

 

 

 

 

 

*서로 다른 점수(예: BM25의 점수와 벡터 유사도)를 결합* 한다는 것의 의미

: 서로 다른 점수(예: BM25의 점수와 벡터 유사도)를 결합하는 과정은, 두 개의 서로 다른 검색 방식에서 반환된 결과의 점수 체계가 다르기 때문에, 이를 동일한 기준으로 맞추어 결합한 후 최종 순위를 재정렬하는 과정을 의미한다. 이 결합을 어떻게 하느냐에 따라 최종 검색 결과의 순위가 달라지며, 일반적으로 다음과 같은 방식으로 이루어진다:

1. 정규화(Normalization)

BM25의 점수는 주로 **스칼라 값(숫자 값)**으로 나오고, 벡터 유사도는 보통 유사도 또는 거리 값으로 나오는데, 이 두 점수는 값의 크기 범위가 다를 수 있다. 따라서 **두 점수를 같은 범위로 변환(정규화)**하는 것이 필요하다. 주로 0에서 1 사이로 값을 변환하는 방식이 많이 사용된다. 이를 통해 두 다른 점수를 비교 가능하게 만들어준다.

예를 들어:

  • BM25 점수는 일반적으로 문서와 검색어가 얼마나 일치하는지를 나타내며 값이 클수록 좋다.
  • 벡터 유사도(코사인 유사도 등)는 0에서 1 사이의 값으로 나와서 값이 클수록 두 벡터 간의 유사성이 높다.

정규화 방법:

2. 가중치 적용 (Weighting)

정규화된 점수에 가중치를 적용하여 두 점수를 결합할 수 있다. 예를 들어, BM25 점수와 벡터 유사도 점수 중 하나를 더 중요하게 생각할 경우, 해당 점수에 더 높은 가중치*를 부여할 수 있다.

 

이처럼 가중치를 적용한 점수 합산을 통해 두 가지 서로 다른 기준을 반영하여 최종적으로 각 문서의 점수를 계산할 수 있다.

3. 결합 후 정렬

가중치가 적용된 최종 점수를 기반으로 **재정렬(Reranking)**이 이루어진다. 예를 들어, 각각의 문서에 대해 두 점수를 결합한 후 최종적으로 그 점수를 기준으로 내림차순으로 정렬하면 된다.

과정 예시:

  1. BM25 결과:
    • 문서 A: 3.5점
    • 문서 B: 2.8점
    • 문서 C: 4.0점
  2. 벡터 유사도 결과:
    • 문서 A: 0.85
    • 문서 B: 0.75
    • 문서 C: 0.90
  3. 정규화 후 결합 (BM25 가중치 0.3, 벡터 유사도 가중치 0.7):
    • 문서 A: (3.5 * 0.3) + (0.85 * 0.7) = 1.05 + 0.595 = 1.645
    • 문서 B: (2.8 * 0.3) + (0.75 * 0.7) = 0.84 + 0.525 = 1.365
    • 문서 C: (4.0 * 0.3) + (0.90 * 0.7) = 1.2 + 0.63 = 1.83
  4. 재정렬 결과:
    • 문서 C: 1.83
    • 문서 A: 1.645
    • 문서 B: 1.365

요약

  1. 정규화: BM25와 벡터 유사도 점수를 동일한 범위로 변환.
  2. 가중치 적용: 각 점수에 비율을 달리 적용하여 최종 점수를 계산.
  3. 재정렬: 결합된 점수를 기준으로 문서를 재정렬.

이 과정은 Fusion 후 Reranking의 본질이며, 이를 통해 서로 다른 기준에서 얻은 검색 결과를 결합하여 더 효율적인 검색을 할 수 있게 된다.

 

 

 

 

BM25 점수와 벡터 유사도 점수 중 하나를 더 중요하게 생각할 경우, 해당 점수에 더 높은 가중치* 를 부여한다는 것의 의미

: 정규화를 완료한 상태에서 가중치를 설정하는 방법은 결과에서 어떤 요소에 더 큰 중요성을 부여할지에 따라 달라진다. 가중치 설정은 주관적일 수 있지만, 몇 가지 기준을 가지고 결정할 수 있다.

1. BM25와 벡터 유사성의 상대적 중요성에 기반한 설정

  • BM25는 텍스트 기반 검색(키워드 검색)에서 성능이 좋기 때문에, 정확한 키워드 매칭을 더 중시하고 싶다면 BM25에 더 높은 가중치를 부여해야 한다.(예: 70:30)
  • 벡터 유사성(임베딩)은 문장의 의미적 유사성을 더 잘 반영하므로, 의미 유사성을 더 중시하고 싶다면 벡터 유사성에 더 높은 가중치를 부여한다.(예: 30:70)

2. 실험적인 조정

  • 가중치는 일반적으로 데이터를 기반으로 실험적으로 결정할 수 있다. 처음에는 1:1 비율로 설정한 후, 검색 결과를 보고 원하는 대로 조정해가며 최적의 가중치를 찾을 수 있다.
  • 예를 들어, BM25의 결과가 너무 강하게 반영된다면 BM25 가중치를 줄이고, 벡터 유사성 가중치를 더 높이는 식으로 조정할 수 있다.

3. 품질 평가

  • 평가 기준: 검색 결과의 품질을 사용자 피드백이나 평가 점수(예: Precision, Recall)를 통해 평가한 후 가중치를 조정하는 방법도 있다.

요약:

  • BM25 vs 벡터 유사성의 상대적 중요성을 먼저 고려한다.
  • 1:1 비율로 시작해보고, 결과를 평가하면서 가중치를 조정해 최적의 비율을 찾는다.
  • 가중치를 너무 높게 주는 대신, 점진적으로 조정하면서 검색 결과를 모니터링하는 것이 효과적이다.

'AI' 카테고리의 다른 글

추천시스템 - 협업필터링(메모리 기반)  (0) 2024.10.18
인덱싱의 의미 - 한줄 요약  (0) 2024.10.15
Faiss와 Elasticsearch 비교  (0) 2024.10.08
ElasticSearch의 검색 결과  (0) 2024.10.07
ElasticSearch의 다양한 검색방법들  (0) 2024.10.07