RAG 챗봇 평가 결과, 가장 비싼 모델이 최악의 성능을 보였다. 성능 개선을 위한 핵심 노트.
Evaluated a RAG chatbot and the most expensive model was the worst performer. Notes on what actually moved the needle.
핵심 요약
RAG 챗봇 성능 개선을 위해 모델 교체보다 검색 품질과 평가 방식 최적화가 훨씬 중요하다는 점을 강조함.
- 검색 품질 최적화 — LLM 문제로 보이지만 실제로는 검색 단계에서 데이터가 제대로 전달되지 않는 경우가 많음.
- 평가 방식 개선 — 키워드 기반의 단순 수치보다는 LLM 기반의 평가를 도입하여 실제 유용성을 측정해야 함.
- 데이터 전처리 — 중복된 청크를 제거하여 컨텍스트를 깔끔하게 만들고 모델의 환각 현상을 줄여야 함.
- 모델 스윕 수행 — 기본 설정 모델에 의존하지 말고 여러 모델을 테스트하여 비용 대비 성능이 최적인 모델을 찾아야 함.
고객 지원용 RAG 봇을 운영하고 있었습니다. ChromaDB, 시스템 프롬프트, 생성용 LLM을 사용하는 표준 설정이었죠. 아무도 응답 품질을 실제로 측정해본 적은 없었습니다.
평가를 위해 제가 가진 건 숫자처럼 보이지만 실제로는 아무 의미도 없는 키워드 매칭 스크립트뿐이었습니다.
제대로 고쳐보기로 했습니다. 대부분 제가 예상했던 곳과는 다른 곳에서 문제가 발견되었기에 공유합니다.
1. 검색 문제는 LLM 문제로 위장합니다.
사용자가 "너희들 뭐 하는 곳이야?"라고 물으면 봇은 "우리 회사의 서비스에 대한 구체적인 정보에 접근할 수 없습니다."라고 답합니다. 다들 프롬프트를 수정하거나 모델을 바꾸려는 본능이 들겠지만, 틀렸습니다. ChromaDB의 유사도 임계값이 0.7(코사인 거리, 낮을수록 유사함, 즉 엄격한 설정)로 설정되어 있었습니다. 일상적인 질문은 어떤 청크와도 임계값을 통과할 만큼 가까운 임베딩을 생성하지 못했습니다. 검색된 문서가 0개였던 거죠. 모델은 정직하게 아무것도 없다고 보고한 것입니다.
교훈: LLM을 탓하기 전에 실제로 어떤 컨텍스트를 받았는지 항상 로그를 남기세요. 검색 결과가 없으면 프롬프트 엔지니어링으로 해결할 수 있는 건 아무것도 없습니다.
2. 휴리스틱 평가기는 없는 것보다 못합니다.
키워드와 소스 참조를 세는 것은 숫자를 제공합니다. 하지만 그 숫자는 사용자가 도움을 받았는지 여부와 아무런 상관이 없습니다. 더 나쁜 점은 무언가를 측정하고 있다는 잘못된 확신을 준다는 것입니다. 결국 LLM 판사(OpenRouter를 통한 Claude Haiku 4.5)를 사용하여 관련성, 정확성, 유용성, 전반적인 만족도를 0-10점으로 평가했습니다. 전체 실행당 몇 센트밖에 안 듭니다. 저렴한 보험인 셈이죠.
3. 모델에 보내기 전에 청크를 중복 제거하세요.
우리의 대화 중 두 번은 컨텍스트 윈도우에 거의 동일한 FAQ 청크가 세 개나 들어있었습니다. 같은 소스 파일에서 80% 이상의 토큰 중복이 발생하는지 확인하는 체크를 추가했습니다. 컨텍스트가 더 깔끔해지고 토큰도 줄었으며, 한 대화에서는 에이전트가 제품 이름을 환각하는 현상이 멈췄습니다(아마도 노이즈가 사라졌기 때문일 것입니다).
4. 더 엄격한 그라운딩은 유용성과 정확성을 맞바꿉니다.
에이전트가 검색된 문서에 존재하는 사실만 말하도록 규칙을 추가했습니다. 정확도는 올라갔습니다. 하지만 지식 격차가 있는 질문에서는 봇이 추측하는 대신 "문서에 명시되어 있지 않으니 고객 지원팀에 문의하세요"라고 말하기 시작하면서 유용성은 떨어졌습니다. 사실 기반의 지원 봇에게는 옳은 결정이지만, 의식적으로 선택해야 합니다. 그렇지 않으면 점수는 좋아졌는데 사용자는 봇이 더 나빠졌다고 불평하게 될 것입니다.
5. 모델 스윕을 실행하세요. 기본값은 보통 틀립니다.
저는 Gemini 3.1 Flash Lite Preview를 사용하고 있었습니다. 동일한 평가 도구로 5개의 모델을 테스트했습니다. Gemma 4 26B가 더 높은 점수를 받았고(7.88 vs 7.33), 세션당 비용은 75% 저렴했습니다. Mistral Small 3.2가 근소한 차이로 2위였습니다. Nova Micro가 가장 저렴했지만, 너무 간결한 응답 때문에 실행 가능성이 부족하다는 평가를 받았습니다.
요점은 Gemma가 최고의 모델이라는 것이 아닙니다. 요점은 현재 운영 중인 모델이 파레토 최적(Pareto frontier)에 있지 않을 가능성이 높으며, 이를 확인하는 유일한 방법은 측정뿐이라는 것입니다.
품질 6.62에서 7.88로 상승(+19%), 비용 세션당 $0.002420에서 $0.000509로 감소(−79%). 동일한 실행 환경에서의 결과입니다.

