EncouRAGe - 로컬 RAG 평가 치트시트
EncouRAGe는 검색-증강 생성 (RAG) 파이프라인을 평가하기 위한 오픈소스 프레임워크로, 로컬에서, 빠르게, 안정적으로 실행하는 것을 강조한다. 많은 RAG 평가기가 호스팅된 심판 모델을 호출하는 반면, EncouRAGe는 자신의 하드웨어에서 검색 및 생성 메트릭을 계산하도록 설계되었으므로 평가 데이터를 비공개로 유지하고 결과를 재현 가능하게 한다. 2026 패턴에 맞추어 RAG 품질이 분위기가 아닌 측정 가능한 엔지니어링 속성으로 취급되는 경우다.
평가 프레임워크는 빠르게 발전한다. 아래 명령을 워크플로우의 형태로 취급하고 정확한 플래그에 대해 현재 문서를 확인하라.
설치
| 방법 | 명령어 |
|---|
| pip | pip install encourage |
| 소스에서 | 리포지토리를 git clone한 다음 pip install -e . |
| 로컬 심판 모델 | 로컬 런타임 (예: Ollama/vLLM)을 통해 모델 가져오기 |
| 확인 | python -c "import encourage; print('ok')" |
로컬 평가의 이유
| 이점 | 중요한 이유 |
|---|
| 프라이버시 | 문서/쿼리가 머신을 떠나지 않음 |
| 재현성 | 동일한 모델 + 시드 → 동일한 점수 |
| 비용 | 평가당 API 청구 없음 |
| 속도 | 속도 제한 없이 로컬에서 배치 |
측정되는 것
RAG 평가는 파이프라인의 두 절반으로 분할된다.
| 절반 | 메트릭 |
|---|
| 검색 | 컨텍스트 정확도, 컨텍스트 재현율, 히트율, MRR/NDCG |
| 생성 | 충실도 (근거), 답변 관련성, 정확도 |
| 종단 간 | 최종 답변이 맞는지 및 지원되는지 |
핵심 워크플로우
# 개념적 흐름: 데이터 세트 조립, RAG 실행, 점수 지정
import encourage
dataset = encourage.load_dataset("eval_questions.jsonl") # question, ground_truth, contexts
results = encourage.evaluate(
dataset=dataset,
metrics=["faithfulness", "answer_relevance",
"context_precision", "context_recall"],
judge_model="local/llama-3.1-8b-instruct", # 로컬에서 실행
)
print(results.summary()) # 메트릭별 점수
results.to_json("eval.json")
| 단계 | 목적 |
|---|
| Dataset | 질문 + (선택적) 근거 진실 + 검색된 컨텍스트 |
| Metrics | 점수할 검색/생성 측면 |
| Judge model | LLM-as-judge 메트릭에 사용할 로컬 LLM |
| Results | 집계 + 개별 예 점수, 내보낼 수 있음 |
평가 데이터 세트 빌드
| 필드 | 의미 |
|---|
question | 사용자 쿼리 |
contexts | 검색기가 반환한 청크 |
answer | 파이프라인의 생성된 답변 |
ground_truth | 참고 답변 (정확도/재현율용) |
프로덕션 추적에서 실제 질문을 수집하여 평가를 대표적으로 만들자.
결과 해석
| 증상 | 가능한 원인 |
|---|
| 낮은 컨텍스트 재현율 | 검색기가 관련 청크 놓침 (청킹/임베딩) |
| 낮은 컨텍스트 정확도 | 너무 많은 관련 없는 컨텍스트 검색 (순위 재지정 추가) |
| 낮은 충실도 | 모델이 컨텍스트 너머로 환각 (프롬프트/쿼리 문제) |
| 낮은 답변 관련성 | 답변이 질문에서 벗어남 |
CI에 맞추기
# 평가 점수에 대한 RAG 변경 게이트
python run_eval.py --dataset eval.jsonl --min-faithfulness 0.85 \
--min-context-recall 0.8 || exit 1
모든 검색/프롬프트/모델 변경에서 동일한 평가 세트를 실행하여 회귀가 배송 전에 포착되도록 하자.
EncouRAGe vs 다른 RAG 평가기
| 측면 | EncouRAGe | RAGAS | TruLens | DeepEval |
|---|
| 강조 | 로컬, 빠름, 재현 가능 | 참고 없는 RAG 메트릭 | 모니터링 + OTel 추적 | 유닛 테스트 마인드셋, CI |
| Judge | 로컬 모델 | 설정 가능 | 설정 가능 | 설정 가능 |
| 최고 | 프라이빗, 온프레미스 평가 | 빠른 RAG 점수 | 프로덕션 모니터링 | Pytest-스타일 CI 게이트 |
RAGAS, TruLens, DeepEval과 개념적으로 페어링 — 로컬 프라이버시, 빠른 메트릭, 모니터링 또는 CI 게이팅이 필요한지에 따라 선택.
자료