🧪
AI 평가 도구 카탈로그 — evaluate, lm-eval-harness, RAGAS, DeepEval
단일 지표 측정부터 LLM 벤치마크, RAG 평가, 자동 테스트 파이프라인까지
평가 도구도 용도가 다르다
| 도구 | 용도 | 비유 |
|---|---|---|
| evaluate | 단일 지표 측정 | 체온계 (체온 하나 측정) |
| lm-eval-harness | LLM 벤치마크 | 종합 건강검진 (수십 개 항목) |
| RAGAS | RAG 파이프라인 평가 | 특정 기능 검사 (RAG 전용) |
| DeepEval | AI 앱 자동 테스트 | CI/CD 테스트 (자동화) |
1. evaluate (HuggingFace) — 체온계
가장 기본. 지표 하나를 측정한다.
pip install evaluate
from evaluate import load
metric = load("accuracy")
result = metric.compute(predictions=[1,0,1], references=[1,0,0])
# → {'accuracy': 0.67}
지원 지표: accuracy, f1, bleu, rouge, cer, wer, bertscore 등 수십 개.
언제 쓰나: 파인튜닝 중 Trainer에 넣어서 에폭마다 측정. 가장 자주 쓴다.
2. lm-eval-harness (EleutherAI) — 종합 건강검진
LLM을 수십 개 벤치마크로 한번에 평가한다. MMLU, HellaSwag, ARC, TruthfulQA 등.
pip install lm-eval
# GPT-2를 HellaSwag 벤치마크로 평가
lm_eval --model hf --model_args pretrained=gpt2 --tasks hellaswag --batch_size 8
# → hellaswag: acc=0.2893, acc_norm=0.3122
# Python에서
import lm_eval
results = lm_eval.simple_evaluate(
model="hf",
model_args="pretrained=gpt2",
tasks=["hellaswag", "arc_easy"],
batch_size=8
)
print(results["results"])
언제 쓰나: 내 LLM이 다른 모델 대비 어느 수준인지 비교할 때. HuggingFace Open LLM Leaderboard가 이 도구로 측정한다.
3. RAGAS — RAG 전용
RAG 파이프라인(검색 + 생성)의 품질을 평가한다.
pip install ragas
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_precision
from datasets import Dataset
data = Dataset.from_dict({
"question": ["우리 회사 연차가 며칠이야?"],
"answer": ["연차는 15일입니다."],
"contexts": [["우리 회사 연차는 15일이다. 반차 사용 가능."]],
"ground_truth": ["15일"]
})
result = evaluate(data, metrics=[faithfulness, answer_relevancy, context_precision])
print(result)
# → {'faithfulness': 1.0, 'answer_relevancy': 0.95, 'context_precision': 1.0}
| 지표 | 뭘 측정 |
|---|---|
| faithfulness | 답변이 검색된 문서에 충실한가 (환각 없는지) |
| answer_relevancy | 답변이 질문에 관련 있는가 |
| context_precision | 검색된 문서가 적절한가 |
| context_recall | 필요한 정보가 검색되었는가 |
언제 쓰나: RAG 파이프라인(문서 검색 + LLM 답변)을 만들었을 때. 검색 품질과 답변 품질을 동시에 평가.
4. DeepEval — AI 앱 자동 테스트
pytest처럼 AI 출력을 자동으로 테스트한다.
pip install deepeval
from deepeval import assert_test
from deepeval.test_case import LLMTestCase
from deepeval.metrics import AnswerRelevancyMetric
test_case = LLMTestCase(
input="우리 회사 휴가 정책이 뭐야?",
actual_output="연차는 15일이고 반차도 가능합니다.",
retrieval_context=["연차 15일, 반차 가능, 3일 전 신청"]
)
metric = AnswerRelevancyMetric(threshold=0.7)
assert_test(test_case, [metric])
# → PASSED (relevancy: 0.92 > threshold: 0.70)
# pytest처럼 실행
deepeval test run test_chatbot.py
언제 쓰나: AI 기반 제품(챗봇, QA 등)의 품질을 CI/CD에서 자동 검증할 때. 코드 테스트의 AI 버전.
도구 선택 가이드
| 상황 | 도구 |
|---|---|
| 파인튜닝 중 정확도 추적 | evaluate |
| 내 LLM이 몇 점인지 | lm-eval-harness |
| RAG 파이프라인 품질 | RAGAS |
| AI 앱 자동 테스트 (CI/CD) | DeepEval |
| OCR/STT 오류율 | evaluate (cer, wer) |
| 음원 분리 품질 | mir_eval |
핵심 개념
1
evaluate — pip install evaluate. 지표 하나 측정. Trainer에 넣어서 사용
2
lm-eval-harness — pip install lm-eval. LLM을 수십 개 벤치마크로 종합 평가
3
RAGAS — pip install ragas. RAG의 검색 품질 + 답변 품질 동시 평가
4
DeepEval — pip install deepeval. pytest처럼 AI 출력을 자동 테스트
사용 사례
파인튜닝 품질 관리 — evaluate로 에폭마다 정확도/CER 추적
LLM 리더보드 — lm-eval-harness로 MMLU/HellaSwag 점수 측정
RAG 챗봇 검증 — RAGAS로 환각 비율, 검색 정확도, 답변 관련성 측정