Skip to main content
이 문서는 한국어 RAG 최적화 의 일부입니다.

3. Kiwi 기반 BM25 Retriever

기본 BM25는 공백 기반으로 텍스트를 분절하므로, 한국어에서는 조사가 붙은 채로 토큰화됩니다. Kiwi로 형태소 분석 후 명사/동사/외국어만 추출 하면 검색 품질이 크게 향상됩니다.

Kiwi + Ensemble Retriever

한국어 RAG에서 가장 효과적인 조합은 Kiwi BM25 + Dense (Vector Search) 앙상블입니다:
한국어 전문 용어가 많은 도메인(법률, 의료 등)에서는 BM25 가중치를 0.5~0.6으로 높이면 정확한 용어 매칭이 강화됩니다.

RRF (Reciprocal Rank Fusion) 직접 구현

LangChain 없이 BM25와 Vector Search 결과를 직접 결합하는 방법입니다. 각 검색기의 점수 스케일이 달라도 순위(rank) 기반으로 통합하므로 별도의 정규화가 필요 없습니다.
  • RRF의 k 파라미터: 기본값 60은 원래 RRF 논문의 권장값입니다. k를 줄이면(예: 10) 상위 순위 문서에 더 큰 가중치가 부여됩니다.
  • 가중 RRF: BM25와 Vector Search에 서로 다른 가중치를 주고 싶다면, 각각의 RRF 점수에 가중치를 곱하면 됩니다 (예: BM25에 0.4, Vector에 0.6).

4. 한국어 청킹 전략

KSS (Korean Sentence Splitter) 활용

RecursiveCharacterTextSplitter + 한국어 구분자

참고 한국어에서 RecursiveCharacterTextSplitter를 사용할 때는 종결어미(다. , 요. )를 구분자에 추가하면 문장 중간에서 잘리는 것을 방지할 수 있습니다.

이전: 과제 & Kiwi 형태소 분석

한국어 RAG의 구조적 어려움과 형태소 분석 기초

다음: 임베딩 모델 & 베스트 프랙티스

한국어 임베딩 모델 선택, Re-ranking, 트러블슈팅