Evals — RAG 답변 품질 자동 측정하기
요약
RAG 시스템의 답변 품질을 수동 검증 대신 자동으로 측정하는 Evals(평가) 방법론을 소개합니다. 충실도, 문맥 재현율, 답변 관련성 등 세 가지 차원을 통해 시스템 성능을 정량적으로 평가하는 가이드를 제공합니다.
핵심 포인트
- RAG 평가의 3대 핵심 차원: 충실도, 문맥 재현율, 답변 관련성
- LLM-as-a-Judge 패턴을 활용한 자동 채점 방식 구현
- 지표별 점수 하락 시 해결 방안(청킹 개선, 프롬프트 수정 등) 제시
- 평가 데이터셋 구축 및 자동화된 평가 프로세스 구축 방법
서론 (Introduction)
이전의 RAG 구현에서는 작동하는 시스템을 구축했지만, "이것이 실제로 정확한가?"를 확인하기 위해서는 답변을 수동으로 읽어야만 했습니다.
[이전] 수동 검증
"F1 스코어를 어떻게 계산하나요?"라고 질문 → 답변을 눈으로 직접 확인
...
Evals(평가)란 "평가 데이터셋 (evaluation dataset)"(질문 및 예상 답변)을 준비하고 시스템의 응답을 자동으로 채점하는 것을 의미합니다.
세 가지 평가 차원 (Three Evaluation Dimensions)
RAG 시스템 평가는 세 가지 차원으로 나뉩니다:
| 차원 (Dimension) | 의미 (Meaning) | 측정 항목 (What It Measures) |
|---|---|---|
| Faithfulness (충실도) | Grounding (근거 설정) | 답변이 검색된 문서에 기반하고 있는가? (환각 (hallucinations)이 없는가?) |
| ... |
디렉토리 구조 (Directory Structure)
pgvector-tutorial/
├── 기존 파일들 (01–13)
|
...
1. 라이브러리 설치 (Install Libraries)
pip install pandas tabulate
pip freeze > requirements.txt
2. 평가 데이터셋 — evals/dataset.py (Evaluation Dataset)
평가 데이터셋은 "질문, 예상 답변 요소, 그리고 예상 참조 문서"의 세트로 구성됩니다.
# evals/dataset.py
EVAL_DATASET = [
...
3. RAG 평가 — evals/eval_rag.py (RAG Evaluation)
# evals/eval_rag.py
import sys
import os
...
python evals/eval_rag.py
출력 샘플:
Starting RAG evaluation...
============================================================
...
4. 결과 읽기 (Reading the Results)
| 점수 (Score) | 의미 (Meaning) |
|---|---|
| 0.9+ | 우수함. 프로덕션 적용 가능 (Production-ready). |
| ... |
각 지표가 낮을 때 대처 방법
Context Recall (문맥 재현율)이 낮을 때
→ 검색 (Retrieval)이 예상된 문서를 찾지 못하고 있음
→ top_k를 늘리거나, 문서 청킹 (chunking) 방식을 재검토하거나, 메타데이터 필터 (metadata filters)를 추가하십시오.
Answer Relevancy (답변 관련성)가 낮을 때
→ 답변이 질문에서 벗어나고 있음
→ 프롬프트 (prompt)를 개선하거나, 시스템 프롬프트 (system prompt)를 추가하십시오.
Faithfulness (충실도)가 낮을 때
→ 답변에 검색된 문서에 없는 정보가 포함됨 (환각 (hallucination))
→ 프롬프트에 "문서에 포함되지 않은 질문에는 답변하지 마세요"라고 명시적으로 작성하십시오.
5. LLM-as-a-Judge 패턴 (The LLM-as-a-Judge Pattern)
eval_faithfulness()에서와 같이 LLM이 스스로 점수를 매기도록 하는 것을 LLM-as-a-Judge (판사로서의 LLM) 패턴이라고 부릅니다.
전통적인 평가 방식:
사람이 정답을 정의함 → 규칙 기반 (rule-based) 점수 산출
→ 빠르고 안정적임 → 미묘한 차이를 판단하는 데 어려움이 있음
...
이 구현 방식은 두 가지를 결합합니다:
| 지표 (Metric) | 접근 방식 (Approach) | 이유 (Reason) |
|---|---|---|
| Context Recall (문맥 재현율) | 규칙 기반 (title match) | 명확한 정답 (ground truth) 존재 |
| ... |
6. 일반적인 오류 (Common Errors)
| 오류 (Error) | 원인 (Cause) | 해결책 (Fix) |
|---|---|---|
ValueError: could not convert string to float | LLM이 숫자가 아닌 출력을 반환함 | 프롬프트 (prompt) 강화, 기본값으로 처리 |
| ... |
다음 단계 (Next Steps)
- [Chapter 3: Observability (관측 가능성)] — Langfuse를 사용하여 각 RAG 단계를 추적(trace)하고 동작을 시각화합니다.
- RAGAS 통합 — 더 발전된 평가 프레임워크를 위해
pip install ragas를 설치하세요. - 지속적 평가 (Continuous evaluation, CI/CD) — Chapter 5에서 GitHub Actions와 결합하는 방법을 다룹니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기