Optimizing RAG at Scale: Chunking, Retrieval, and the Bayesian Search That Cut Latency 40%
개요
RAG(Retrieval-Augmented Generation) 시스템의 지연 시간을 40% 줄이고 검색 정확도를 95%(@10)로 향상시키기 위해 청킹(chunking), 검색(retrieval), 베이지안 최적화(Bayesian optimization)를 포함한 검색 파이프라인을 재구축하는 방법을 설명합니다.
주요 내용
* 청킹(Chunking) 전략:
* 고정된 토큰 수(예: 512 토큰) 기반 청킹은 다양한 문서 유형(법률 계약, API 문서, 고객 티켓)에 부적합하며, 문장 중간 분할, 노이즈 증가, 대화 맥락 손실을 야기합니다.
* 문서 유형별로 최적의 청킹 전략을 적용합니다.
* 법률 계약: 재귀적 청킹 (Clause-aware), 청크 크기 1024, 오버랩 100 (Recall@10: 94%)
* API 참조: 재귀적 청킹 (Function-aware), 청크 크기 768, 오버랩 50 (Recall@10: 96%)
* 지원 티켓: 의미론적 청킹 + 대화 턴, 청크 크기 512, 오버랩 75 (Recall@10: 91%)
* 내부 위키: 에이전트 청킹 (LLM 기반), 청크 크기 1500, 오버랩 200 (Recall@10: 97%)
* 하이브리드 검색(Hybrid Retrieval):
* 단순 벡터 검색은 정확한 매칭(오류 코드, 함수 이름)을 놓치고, BM25는 의미론적 매칭을 놓치므로 두 방식을 결합합니다.
* BM25 + 벡터 검색 + 재랭커(reranker)를 활용하며, Reciprocal Rank Fusion(RRF)으로 결과를 통합합니다.
* 크로스-인코더(cross-encoder) 재랭킹을 통해 50개의 후보를 5개로 줄여 정확도를 15% 향상시키면서 50ms의 지연 시간만 추가됩니다.
* 쿼리 변환(Query Transformation):
* 사용자 쿼리를 LLM을 통해 확장(expansion)하거나 분해(decomposition)하여 검색 정확도를 높입니다.
* 쿼리 확장은 단일 쿼리 대비 Recall@10을 78%에서 94% 이상으로 향상시킵니다.
* 베이지안 최적화(Bayesian Optimization):
* 청크 크기, 오버랩, top-k, 검색 가중치 등의 하이퍼파라미터를 베이지안 최적화(Optuna 활용)를 통해 체계적으로 튜닝합니다.
* 이 최적화 과정은 Recall@10과 지연 시간을 동시에 고려한 파레토 프론티어(Pareto frontier)를 도출합니다.
* 측정 및 개선:
* 검색 지연 시간, Recall@k, 쿼리 확장 횟수, 재랭커 지연 시간 등을 Prometheus로 측정합니다.
* 초기 지점(naive) 대비 최적화된 RAG 시스템은 Recall@10을 78%에서 95%로, p95 지연 시간을 850ms에서 320ms로 개선했으며, 환각(hallucination) 비율은 12%에서 3%로, 쿼리당 비용은 38% 절감했습니다.
* RAG 체크리스트:
* 문서 구조 기반 청킹, 하이브리드 검색, 쿼리 확장, 버전 관리되는 황금 데이터셋(golden dataset), 베이지안 최적화, 자동화된 측정(instrumentation), A/B 테스트 프레임워크 활용을 권장합니다.
시사점
RAG 시스템의 성능은 검색 파이프라인의 각 구성 요소를 체계적으로 최적화하고 측정하며, 이를 인프라스트럭처의 핵심 요소로 관리할 때 극대화될 수 있습니다. 사용자에게는 답변의 정확성이 가장 중요하며, 자동화된 평가와 지속적인 개선이 이를 보장하는 열쇠입니다.
댓글
GitHub Discussions