하이브리드 RAG (Hybrid Retrieval-Augmented Generation)

하이브리드 RAG는 대규모 언어 모델(LLM)의 성능을 향상시키는 RAG(검색 증강 생성) 기술의 한 종류로, 여러 검색 전략의 장점을 결합하여 더 정확하고 포괄적인 답변을 생성하는 방식입니다.


핵심 개념

하이브리드 RAG는 주로 다음 두 가지 검색 방식을 결합합니다:

1. 키워드 검색 (Lexical Search / Sparse Retrieval)

항목 내용
방식 BM25와 같은 알고리즘을 사용하여 정확한 키워드 일치 및 빈도(TF-IDF 등)를 기반으로 관련 문서를 찾습니다.
장점 특정 용어나 고유 명사 등 구체적인 정보를 빠르게 찾는 데 효과적이며, 빠르고 간단합니다.
도구 Elasticsearch, OpenSearch 등

2. 시맨틱 검색 (Semantic Search / Dense Retrieval)

항목 내용
방식 질의와 문서를 임베딩 벡터로 변환한 후, 벡터 간의 유사도(의미적 유사성)를 계산하여 관련 문서를 찾습니다.
장점 키워드가 정확히 일치하지 않아도 문맥적 의미가 유사한 문서를 찾아낼 수 있어 복잡하거나 대화형 질문에 유리합니다.
도구 Milvus, Pinecone, Chroma 등 Vector DB

하이브리드 RAG를 사용하는 이유

장점 설명
정확도 향상 키워드의 정확성과 문맥의 연관성을 모두 고려하여, 한 가지 방식만 사용했을 때 놓칠 수 있는 문서를 검색해 답변의 정확도를 높입니다.
복잡한 질문 처리 전문적이고 복잡한 도메인의 지식이나, 텍스트 기반 정보와 구조화된 정보(예: 지식 그래프)가 모두 필요한 질문에 대해 더 탁월한 성능을 보입니다.
환각(Hallucination) 감소 더 풍부하고 신뢰할 수 있는 외부 정보를 LLM에 제공함으로써, LLM이 잘못된 정보를 생성하는 것을 줄입니다.

결합 방법

두 가지 검색 결과를 단일 결과 집합으로 결합할 때는 주로 재순위화(Re-ranking) 알고리즘을 사용합니다.

RRF (Reciprocal Rank Fusion)

가장 널리 사용되는 결합 알고리즘으로, 각 검색 결과의 순위를 기반으로 최종 점수를 계산합니다.

공식:

RRF_score(d) = Σ 1 / (k + rank(d))
  • k: 상수 (일반적으로 60)
  • rank(d): 각 검색 결과에서 문서 d의 순위

Python 구현 예시:

def reciprocal_rank_fusion(dense_results, sparse_results, k=60):
    """
    RRF 알고리즘으로 두 검색 결과 통합

    Args:
        dense_results: 시맨틱 검색 결과 (문서 ID 리스트)
        sparse_results: 키워드 검색 결과 (문서 ID 리스트)
        k: RRF 상수 (기본값: 60)

    Returns:
        통합된 결과 (점수 내림차순 정렬)
    """
    scores = {}

    # Dense 검색 결과 점수 계산
    for rank, doc_id in enumerate(dense_results):
        scores[doc_id] = scores.get(doc_id, 0) + 1 / (k + rank + 1)

    # Sparse 검색 결과 점수 계산
    for rank, doc_id in enumerate(sparse_results):
        scores[doc_id] = scores.get(doc_id, 0) + 1 / (k + rank + 1)

    # 점수 내림차순 정렬
    return sorted(scores.items(), key=lambda x: x[1], reverse=True)

아키텍처 흐름

┌─────────────────┐
│   사용자 질문    │
└────────┬────────┘
         │
         ▼
┌────────┴────────┐
│                 │
▼                 ▼
┌─────────┐   ┌─────────┐
│ Vector  │   │ Elastic │
│   DB    │   │ Search  │
│ (Dense) │   │(Sparse) │
└────┬────┘   └────┬────┘
     │             │
     └──────┬──────┘
            │
            ▼
   ┌────────────────┐
   │  RRF Fusion    │
   │  (결과 통합)    │
   └────────┬───────┘
            │
            ▼
   ┌────────────────┐
   │   Re-ranking   │
   │   (재순위화)    │
   └────────┬───────┘
            │
            ▼
   ┌────────────────┐
   │      LLM       │
   │  (답변 생성)    │
   └────────────────┘

요약

검색 방식 특징 적합한 질문
키워드 검색 정확한 단어 매칭 “민법 제45조는?”
시맨틱 검색 의미적 유사성 “계약 위반 시 손해배상 방법은?”
하이브리드 두 방식의 장점 결합 복합적인 질문

하이브리드 RAG는 키워드의 정확성문맥의 연관성을 모두 활용하여 최적의 검색 결과를 제공합니다.