Optimizing RAG at Scale: Chunking, Retrieval, and the Bayesian Search That Cut Latency 40%

개요

Retrieval-Augmented Generation (RAG) 시스템의 성능 최적화는 고정된 청킹 방식, 단순 벡터 검색, 비효율적인 하이퍼파라미터 튜닝에서 벗어나, 문서 유형별 맞춤 전략, 하이브리드 검색, 베이지안 최적화를 통해 지연 시간을 40% 단축하고 검색 정확도를 95%@10으로 향상시켰습니다.

주요 내용

* 청킹 전략의 다양화:
* 고정된 토큰 크기(512 토큰) 청킹은 계약서의 문장 분할, API 문서의 신호 손실, 티켓의 대화 맥락 부족 등 다양한 문제점을 야기합니다.
* 문서 유형에 따라 RecursiveChunker(구조 존중), SemanticChunker(임베딩 유사도 기반), AgenticChunker(LLM 기반) 등 다양한 청킹 전략을 적용하여 법률 계약서는 1024 토큰, API 참조는 768 토큰, 지원 티켓은 512 토큰, 내부 위키는 1500 토큰을 사용하며, 각각 100, 50, 75, 200 토큰의 오버랩을 설정하여 Recall@10을 91%~97%까지 확보했습니다.

* 하이브리드 검색 도입:
* 순수 벡터 검색은 정확한 매칭(에러 코드, 함수명)을 놓치고, 순수 BM25는 의미론적 매칭을 놓치는 단점이 있습니다.
* BM25, 벡터 검색, Cross-encoder Reranker를 결합한 하이브리드 검색 방식을 사용하여 Reciprocal Rank Fusion (RRF)으로 결과를 융합하고, 50개의 결과를 5개로 줄이는 Cross-encoder Reranker를 통해 50ms의 추가 시간으로 15%의 정확도 향상을 얻었습니다.

* 쿼리 변환 및 베이지안 최적화:
* 사용자 질문을 LLM을 통해 여러 개의 검색 쿼리로 확장(Query Expansion)하거나 다단계 질문을 하위 질문으로 분해(Query Decomposition)하여 검색 정확도를 높였습니다. Query Expansion은 단일 쿼리 Recall@10 78%에서 3개 확장 쿼리 사용 시 94%, 5개 확장 쿼리 사용 시 96%까지 향상시켰습니다.
* 청크 크기, 오버랩, top_k, 검색 가중치 등 다양한 하이퍼파라미터를 베이지안 최적화 기법(Optuna)을 사용하여 탐색함으로써, Recall@10과 지연 시간의 트레이드오프를 고려한 최적의 설정을 도출했습니다.

* 성능 측정 및 지속적인 개선:
* Prometheus를 활용하여 검색 지연 시간, Recall@k, 쿼리 확장 횟수, Reranker 지연 시간 등을 측정하고, Golden Dataset을 구축하여 주기적으로 성능을 평가합니다.
* 이러한 최적화 과정을 통해 Baseline 대비 Recall@10 78%에서 95%로, p95 지연 시간 850ms에서 320ms로 개선되었으며, 환각(Hallucination) 발생률은 12%에서 3%로 감소하고, 쿼리당 비용은 38% 절감되었습니다.

시사점

RAG 시스템의 성공은 데이터 처리(청킹), 검색 방법론, 하이퍼파라미터 튜닝에 대한 체계적인 접근과 지속적인 자동화된 평가를 통해 달성되며, 이는 사용자 경험과 시스템 효율성을 극대화하는 핵심 요소입니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions