생성형 AI의 답변은 하나의 정답으로 판단하기 어렵습니다. 그렇다면 LLM, RAG, Agent가 만들어 낸 결과의 품질을 어떻게 객관적으로 평가할 수 있을까요?
이 책은 LLM-as-a-Judge를 직접 만들어 보는 것에서 시작해 RAG 평가, Agent 평가, 평가 자동화까지 단계별로 다룹니다. 핵심은 LLM의 답변을 감이나 인상으로 판단하는 대신, 반복해서 측정하고 비교할 수 있는 평가 시스템을 만드는 것입니다.
처음부터 RAGAS나 DeepEval 같은 평가 도구에 의존하지 않습니다. PASS/FAIL 평가, Rubric 기반 평가, Pairwise Judge를 Python으로 직접 구현하며 LLM 평가가 어떤 원리로 동작하는지 이해합니다. 이후 RAGAS와 DeepEval을 사용하면서 각 점수가 실제로 무엇을 의미하는지, 어떤 한계가 있는지를 살펴봅니다.
LLM-as-a-Judge 자체의 신뢰성도 검증합니다. 답변의 순서, 길이, 문체에 따라 평가가 달라지는 편향을 실험하고, 같은 답변을 반복 평가했을 때 점수가 얼마나 흔들리는지도 확인합니다. 또한 사람의 평가 결과와 비교하면서 Judge를 어떻게 보정해야 하는지도 다룹니다.
RAG 평가는 검색과 생성을 나누어 살펴봅니다. Context Precision, Context Recall, Faithfulness 등의 지표를 이용해 문제가 검색 단계에서 발생했는지, 생성 단계에서 발생했는지를 추적합니다. Chunk Size, Top-K, 임베딩 모델, Reranker와 같은 설정도 감으로 선택하지 않고 평가 결과를 근거로 결정하는 방법을 배웁니다.
Agent 평가에서는 최종 답변만 보지 않습니다. 어떤 도구를 선택했는지, 올바른 인자를 전달했는지, 어떤 실행 경로(Trajectory)를 거쳤는지, 계획은 적절했는지까지 평가 범위를 확장합니다.
평가 시스템을 실제 개발 과정에 적용하는 방법도 다룹니다. pytest를 이용해 평가를 테스트 코드로 만들고, Regression 평가와 GitHub Actions를 연결해 프롬프트나 모델을 변경했을 때 품질이 떨어지는지 자동으로 확인합니다. 더 나아가 운영 중인 서비스에서 지속적으로 평가하는 방법까지 살펴봅니다.
외부 API에만 의존하지 않고 Ollama와 vLLM을 이용해 오픈소스 모델을 Local Judge로 사용하는 방법도 다룹니다. 비용과 품질을 비교하면서 폐쇄망이나 개인정보 보호가 필요한 환경에서 평가 시스템을 구축하는 방법을 확인합니다.
마지막으로 글을 생성하는 것이 아니라 판단에 특화된 TypeSafe AI의 Jev를 Judge로 사용해 봅니다. 기존 LLM Judge를 Jev로 바꾸고, RAGAS-JEV와 DeepEval의 Jev 모드를 이용해 동일한 42문항을 다시 평가합니다. 이를 통해 판단 전용 모델을 사용했을 때 무엇이 달라지고, 어떤 문제는 여전히 남아 있는지를 직접 비교합니다.
이 책은 다음과 같은 독자를 대상으로 합니다.
- LLM, RAG, Agent 애플리케이션을 개발하고 있지만 "잘 동작한다"는 것을 수치로 증명하기 어려운 개발자
- RAGAS나 DeepEval 예제는 실행해 봤지만 평가 점수의 의미와 한계를 설명하기 어려운 실무자
- 프롬프트, 모델, 검색 설정을 감이 아니라 평가 결과를 근거로 결정하고 싶은 팀 리드와 PM
- 폐쇄망이나 개인정보 보호 환경에서 자체적인 AI 평가 체계를 구축해야 하는 기업 개발자
Python 기본 문법과 OpenAI 호환 API 호출 경험이 있다면 충분히 따라갈 수 있습니다.
이 책은 Claude Code(AI)를 활용하여 집필되었습니다. 모든 실습 코드는 실제 실행을 통해 검증하며, 각 페이지 상단에 [검증] 직접 실행 확인 또는 [참고] 공식 문서 기준을 표시하고 사용한 버전도 함께 기록합니다.
기준 버전은 RAGAS v0.4.x(Collections API), DeepEval v4.2.x이며, Jev 관련 절에서는 jev-1.13.0, typesafe-sdk 0.7.1, ragas-jev 0.2.0, DeepEval 4.2.6을 별도 가상환경에서 사용합니다.
예제 코드
- https://github.com/ady95/eval_tutorial
참고 자료
- RAGAS 문서: https://docs.ragas.io
- DeepEval 문서: https://deepeval.com/docs
- G-Eval 논문: https://aclanthology.org/2023.emnlp-main.153/
- Jev 소개(TypeSafe AI): https://typesafe.ai/blog/introducing-system-one-models-and-jev
- DeepEval의 Jev 지원: https://deepeval.com/blog/introducing-jev-in-deepeval
- RAGAS-JEV: https://github.com/ady95/ragas-jev
- 관련 책 「Jev 따라하기」: https://wikidocs.net/book/21376