AI Sparkup

최신 AI 쉽게 깊게 따라잡기⚡

RAG 컨텍스트 68% 쳐내고 정확도는 지킨 kapa.ai의 채점 방식

RAG 에이전트가 검색해온 문서 조각 중 실제로 답변에 쓰이는 건 얼마나 될까요? 기술문서 기반 AI 어시스턴트를 만드는 kapa.ai가 확인해봤습니다. 답은 3분의 1도 안 됐죠.

사진 출처: kapa.ai

kapa.ai는 대규모 기술 문서와 API 레퍼런스, 포럼 글을 검색해 답변을 만드는 RAG 서비스를 운영합니다. 자사 파이프라인 비용을 뜯어봤더니 이상한 게 보였습니다. 검색된 문서 조각 상당수가 답변에는 쓰이지도 않는데, 비용은 그대로 청구되고 있었던 것.

그래서 검색기와 생성기 사이에 작은 LLM 하나를 끼워 넣었습니다. 필요 없는 조각을 미리 걸러내는 역할이죠. 그 결과 컨텍스트의 68%가 사라졌는데도 재현율(필요한 정보를 놓치지 않는 비율)은 96%를 유지했고, 쿼리 비용은 34% 줄었습니다.

출처: How we taught a small LLM to throw away 68% of our RAG context – kapa.ai

무시된 조각도 돈이 든다

검색기는 일종의 깔때기입니다. 수십만 개 조각을 후보 몇백 개로 좁히고, 재순위(rerank) 모델이 이걸 얼마나 관련 있는지 기준으로 다시 정렬합니다. 그중 상위 15개 정도가 생성 모델로 넘어가죠.

문제는 이 15개 중 상당수가 실제 답변에는 필요 없다는 것. 검색기는 원래 “혹시 몰라서” 재현율을 최대화하도록 설계돼 있습니다. 필요 없는 조각을 걸러내는 몫은 생성 모델에 떠넘겨져 있는 셈이죠.

정작 생성 모델은 무시한 조각까지 전부 요금으로 청구합니다. kapa.ai 기준으로 검색된 조각의 비용 비중은 답변, 대화 기록, 시스템 프롬프트를 다 합친 것보다 큽니다. 조각 하나를 덜어낼 때마다 쿼리 비용이 약 4%씩 줄어드는 구조네요.

뻔한 해법이 안 통하는 이유

가장 먼저 떠오르는 방법은 재순위 점수에 기준선을 긋는 것입니다. 예를 들어 0.7점 이상만 남기는 식이죠. 하지만 이 방법은 두 가지 이유로 실패합니다.

첫째, 재순위 점수는 절대적인 측정값이 아니라 순서일 뿐입니다. 질문마다 점수 분포가 달라서, 고정된 기준선이 통하지 않습니다.

둘째, 더 근본적인 문제가 있습니다. 관련성이라는 게 조각 하나만의 속성이 아니라는 것.

kapa.ai가 공개한 실제 사례를 보면 이해가 쉽습니다. 두 번째 조각은 “감사 로그”라는 단어를 한 번도 언급하지 않아 노이즈로 채점됐습니다. 그런데 실제로는 답변의 절반을 차지하고 있었죠. 첫 번째 조각과 나란히 있을 때만 의미가 생기는 조각이었던 겁니다. 질문이 여러 부분으로 나뉘어 있을 때도 마찬가지입니다. 각 조각은 혼자서는 쓸모없어 보여도, 세트로는 답이 됩니다.

그래서 LLM에게 채점을 맡겼다

kapa.ai가 내놓은 답은 재순위와 생성 사이에 LLM 호출 하나를 끼워 넣는 것이었습니다.

이 LLM은 질문과 검색된 조각 전체를 한꺼번에 봅니다. 그리고 각 조각을 다섯 단계로 채점하죠. “이 조각 없이는 답을 만들 수 없다”는 필수 단계부터 “아예 무관하다”는 단계까지, 등급마다 말로 정의를 내려뒀습니다.

이렇게 하면 앞선 두 문제가 함께 풀립니다. 등급이 말로 정의돼 있으니, 어느 질문에서든 4점은 같은 의미를 갖습니다. 고정된 기준선이 비로소 통하는 거죠. 그리고 모델이 조각 전체를 한 번에 보기 때문에, 혼자서는 무의미하지만 세트로는 필요한 조각도 제자리를 찾습니다.

채점을 맡는 모델은 절약한 비용으로 자기 몸값을 치러야 합니다. 그래서 자연히 작고 빠른 모델을 골랐습니다. 상위 몇 개는 채점과 무관하게 무조건 통과시키는 안전장치도 뒀네요.

결과와 트레이드오프

kapa.ai는 이 방식을 여러 대안과 나란히 비교했습니다. 그냥 상위 몇 개만 자르는 방식은 재현율 98%를 지키려면 압축률이 7%에 그쳤습니다. 반면 채점 방식은 같은 재현율에서 조각을 절반 가까이 덜어냈죠.

이들이 실제로 택한 지점은 재현율 96%, 압축률 68%입니다. 스물다섯 개 질문 중 하나꼴로 필요한 조각을 놓치는 대신, 컨텍스트 3분의 2를 덜어내고 쿼리당 비용을 34% 줄인 겁니다.

물론 공짜는 아닙니다. 채점 호출 자체가 쿼리마다 약 0.7초를 더하죠. 단발성 응답이 중요한 서비스라면 부담일 수 있습니다. 하지만 이미 여러 번 모델을 호출하는 에이전트 안에서는 크게 문제 되지 않는 수준이네요. kapa.ai는 이 기능을 에이전트용 SDK의 지식베이스 검색에 기본으로 켜뒀습니다.


AI Sparkup 구독하기

최신 게시물 요약과 더 심층적인 정보를 이메일로 받아 보세요! (무료)

Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다