전체 그래프
RAG

Dartboard Retrieval

ai-mlrag

상위: Advanced RAG Techniques

RAG 검색 결과가 서로 중복되거나 유사하여 정보 가치가 떨어지는 문제를 해결하기 위한 기법. 검색 결과를 선택할 때, 질문과의 '관련성' 뿐만 아니라 이미 선택된 문서들과의 '다양성' 을 함께 고려하여 최종 컨텍스트의 질을 높임

-> 마치 다트보드에 다트를 던질 때, 중앙(최고 관련성)을 노리면서도 이미 꽂힌 다트와는 다른 위치(다양성)를 고려하는 것

  • 작동방식
    1. 초기 후보군 검색: 필요한 결과(k)보다 더 많은 수의 후보 문서를 일반적인 Vector Search로 미리 확보
    2. 최초 문서 선택: 후보군 중에서 질문과 가장 관련성이 높은 문서를 첫 번째 결과로 선택
    3. 반복적 점수 계산: 나머지 후보 문서들을 대상으로, (1) 질문과의 관련성 점수와 (2) 이미 선택된 문서들과의 차이(거리) 점수를 가중합하여 '종합 점수'를 계산
    4. 다음 문서 선택: '종합 점수'가 가장 높은 문서를 다음 결과로 선택하고, 이 과정을 k개의 문서가 모일 때까지 반복
  • 장점
    • 정보 중복성 감소: 검색 결과에 동일하거나 매우 유사한 내용이 반복되는 것을 효과적으로 방지
    • 포괄적인 컨텍스트 제공: 하나의 주제에 대해 다양한 측면이나 관점을 담은 문서들을 제공하여 LLM이 더 풍부하고 깊이 있는 답변을 생성하도록 도움
    • 컨텍스트 효율성 증대: 한정된 컨텍스트 창을 낭비 없이, 밀도 높은 정보로 채울 수 있음
  • 구현
    • 탐욕적 선택(Greedy Selection) 알고리즘을 통해 관련성과 다양성의 균형을 맞춤
    1. 초기 문서 선택: 먼저, 수많은 후보 문서 중에서 질문과 의미적으로 가장 유사한(거리가 가장 가까운) 단 하나의 문서를 첫 번째 결과로 확정
    2. 반복적 최적 선택: 선택해야 할 문서 개수에 도달할 때까지 다음 과정을 반복
      • 아직 선택되지 않은 모든 후보 문서를 대상으로 '종합 점수'를 계산
      • 종합 점수 = w1 * 질문과의 관련성 + w2 * 이미 선택된 모든 문서들과의 거리
        • 여기서 '거리'는 후보 문서가 이미 선택된 문서들 중 가장 유사한 것과의 거리를 의미하며, 클수록 다양성이 높다고 판단.
        • w1 = RELEVANCE_WEIGHT, w2 = DIVERSITY_WEIGHT
      • 계산된 '종합 점수'가 가장 높은 후보 문서를 다음 결과로 선택하여 목록에 추가