Optimizing RAG at Scale: Chunking, Retrieval, and the Bayesian Search That Cut Latency 40%
개요
Retrieval-Augmented Generation (RAG) 시스템의 성능을 향상시키기 위해 청킹(chunking), 검색(retrieval), 베이지안 최적화를 적용하여 지연 시간을 40% 단축하고 95%의 recall@10을 달성한 방법을 설명합니다.
주요 내용
* 청킹 전략의 다양성: 고정된 토큰 크기 청킹은 실제 프로덕션 환경에서 법률 계약서, API 문서, 고객 티켓 등 다양한 문서 유형의 맥락을 제대로 반영하지 못합니다. 따라서 문서 구조를 존중하는 RecursiveChunker, 임베딩 유사도를 활용하는 SemanticChunker, LLM을 이용해 경계를 결정하는 AgenticChunker 등 문서 유형별로 최적화된 청킹 전략을 적용해야 합니다.
* 하이브리드 검색: 순수 벡터 검색은 정확한 매칭을 놓치고, 순수 BM25는 의미론적 매칭을 놓칩니다. BM25와 벡터 검색 결과를 Reciprocal Rank Fusion(RRF)으로 결합하고, Cross-encoder를 사용한 재랭킹(reranking)을 통해 정확도와 의미론적 이해도를 모두 높여 95%의 recall@10을 달성했습니다.
* 쿼리 변환: 사용자의 질문을 LLM을 통해 다양한 검색 쿼리로 확장하거나, 복잡한 질문을 하위 질문으로 분해하여 검색 정확도를 높입니다. 쿼리 확장 시 3개에서 5개의 쿼리로 확장할 경우 recall@10이 78%에서 96%로 크게 향상됩니다.
* 베이지안 최적화: 청크 크기, 오버랩, top-k, 가중치 등 검색 관련 하이퍼파라미터를 블랙박스 함수로 간주하고, 베이지안 최적화 기법(Optuna)을 사용하여 목표(recall 극대화, 지연 시간 최소화)를 달성하는 최적의 구성을 찾습니다. 이를 통해 보수적, 균형적, 공격적 구성에 따라 다른 recall@10과 지연 시간을 확보할 수 있습니다.
* 성능 측정 및 개선: 프로메테우스(Prometheus)를 활용하여 검색 지연 시간, recall@10, 쿼리 확장 횟수, 재랭킹 지연 시간 등을 측정하고, 지속적인 A/B 테스트와 CI/CD 파이프라인 통합을 통해 검색 파이프라인 변경 사항을 관리합니다.
시사점
RAG 시스템의 성능은 청킹, 검색, 쿼리 처리 방식의 최적화에 크게 좌우되며, 이를 위해 문서 구조를 고려한 청킹, 하이브리드 검색, 쿼리 변환, 베이지안 최적화, 자동화된 측정 및 평가 시스템 구축이 필수적입니다.
댓글
GitHub Discussions