하이브리드 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는 키워드의 정확성과 문맥의 연관성을 모두 활용하여 최적의 검색 결과를 제공합니다.