Pruning RAG context down to what the answer actually needs
개요
Kapa는 대규모 제품 지식 기반에 대한 복잡한 질문에 답하는 AI 어시스턴트를 구축하며, 검색 API와 자체 어시스턴트를 통해 검색 계층을 활용합니다.
주요 내용
* 컨텍스트 가지치기(Pruning) 도입: 검색된 청크(chunk)와 질문을 작은 LLM이 함께 분석하여, 답변에 필요하지 않은 청크를 제거한 후 비용이 많이 드는 메인 LLM에 전달하는 새로운 단계를 추가했습니다.
* 효과: 이 가지치기 단계는 약 68%의 컨텍스트를 줄이고, 96%의 리콜(recall)을 유지하며, 자체 비용을 제외한 쿼리 비용을 약 3분의 1로 절감합니다.
* 기존 방식의 한계:
* Reranker 점수의 한계: Reranker 점수는 상대적인 순위를 나타낼 뿐, 절대적인 기준점이 아니므로 고정된 임계값(cutoff)으로 청크를 제거하기 어렵습니다.
* 개별 청크의 관련성 평가: 기존 Reranker는 각 청크를 개별적으로 평가하므로, 다른 청크와 함께 있을 때만 관련성이 생기는 경우를 놓칠 수 있습니다.
* 새로운 가지치기 방식:
* Listwise LLM 호출: 질문과 모든 검색된 청크를 한 번에 보고, 5단계 척도(ESSENTIAL, CONTRIBUTING, SUPPORTING, TANGENTIAL, UNRELATED)로 각 청크의 관련성을 평가합니다.
* 이점: 고정된 임계값 사용이 가능해지고, 청크 세트 전체를 보고 평가하므로 부분적 또는 간접적인 관련성도 반영할 수 있습니다.
* 가지치기 과정의 조절 요소:
* 모델: 빠르고 저렴한 소형 LLM 티어를 사용합니다.
* 임계값: 압축률과 리콜 간의 균형을 조절하는 주요 설정입니다.
* Keep-top-k: 가장 관련성이 높은 상위 몇 개의 청크는 등급에 관계없이 유지하여 채점 오류를 방지합니다.
* 실험 결과:
* 모든 LLM 기반 가지치기 전략은 단순한 Top-N 트렁케이션보다 훨씬 우수한 성능을 보였습니다.
* 98% 리콜을 유지할 때, LLM 기반 전략은 30% 이상의 청크를 압축할 수 있으며, 관련성 점수 방식이 가장 효과적이었습니다.
* 최종적으로 96% 리콜을 유지하고 68%의 청크를 제거하는 지점을 선택했으며, 이는 쿼리당 비용을 약 34% 절감합니다.
* 지연 시간(Latency) 고려사항: 가지치기 단계는 쿼리 경로에 추가되므로 약 0.7초의 지연 시간이 발생하지만, 소형 LLM과 낮은 추론 노력으로 1초 미만을 유지했습니다. 에이전트 내부에서는 다른 모델 호출이 많아 상대적으로 영향이 적습니다.
* 적용 사례: 처음에는 여러 도구 중 하나로 검색을 사용하는 에이전트 구축 고객에게 먼저 적용되었으며, 현재 Product Agent SDK의 지식 기반 검색에 기본적으로 활성화되어 있고, 검색 API 및 MCP 서버에도 옵션으로 제공됩니다.
시사점
LLM 기반의 컨텍스트 가지치기는 검색된 정보의 관련성을 정교하게 선별하여 RAG 시스템의 비용 효율성과 성능을 크게 향상시키고, 특히 복잡한 에이전트 환경에서 컨텍스트 창의 효율성을 극대화할 수 있습니다.
댓글
GitHub Discussions