Phase 20: RAGAS evaluation suite

- eval/run_ragas.py: collect contexts (RetrieverService) + answers (/chat API),
  evaluate with faithfulness / answer_relevancy / context_recall / context_precision
- eval/dataset.jsonl: 5 Korean Q&A pairs for initial evaluation
- eval/requirements.txt: ragas==0.2.9, datasets, langchain-google-vertexai
- Evaluator LLM priority: OpenAI > Anthropic > local Qwen3
- Runtime shim for ragas 0.2 / langchain-community 0.4+ vertexai incompatibility

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
sal
2026-06-01 17:11:00 +09:00
parent 589946ab36
commit 3faf8b09ce
4 changed files with 279 additions and 6 deletions
+31 -6
View File
@@ -409,14 +409,39 @@ cd youlbot-webui && python app.py
---
## Phase 20 — RAG 품질 자동 평가 (RAGAS) ★☆☆
## Phase 20 — RAG 품질 자동 평가 (RAGAS) ★☆☆
**배경**: 청킹 전략·검색 파라미터·Reranker 변경 시 답변 품질이 실제로 나아졌는지 수치로 확인할 방법이 없다.
**구현 방식**:
- `ragas` 라이브러리로 Faithfulness·Answer Relevancy·Context Recall 자동 측정
- 테스트 질문-정답 셋을 `eval/` 디렉터리에 관리
- 설정 변경 후 `python eval/run_ragas.py`로 비교 가능
**구현 내용**:
```
eval/
├── dataset.jsonl ← 평가용 Q&A 쌍 (질문·정답 — 필요 시 수정)
├── run_ragas.py ← 평가 실행 스크립트
├── requirements.txt ← ragas==0.2.9, datasets, langchain-google-vertexai
└── results/ ← report_YYYYMMDD_HHMMSS.{csv,json} 저장
```
**평가 지표**:
| 지표 | 설명 |
|------|------|
| `faithfulness` | 답변이 검색 컨텍스트에 충실한가 (환각 탐지) |
| `answer_relevancy` | 답변이 질문에 얼마나 관련 있는가 |
| `context_recall` | 컨텍스트가 정답에 필요한 정보를 포함하는가 |
| `context_precision` | 검색된 컨텍스트 중 실제 유용한 비율 |
**평가 LLM 우선순위**: OpenAI GPT-4o-mini > Anthropic Claude Haiku > 로컬 Qwen3
**실행 방법**:
```bash
# API 서버 실행 후
python eval/run_ragas.py
python eval/run_ragas.py --dataset eval/dataset.jsonl --api http://localhost:8000
```
**호환성 처리**: ragas 0.2가 langchain-community 0.4+에서 `ChatVertexAI` 임포트 실패하는 문제를 런타임 shim으로 우회.
**난이도**: 중간 | **임팩트**: 중간 (장기 품질 관리 기반)
@@ -501,7 +526,7 @@ Phase 20 RAGAS 평가 → Phase 15 (모델선택) → Phase 16 (Docke
| Phase 23 WebUI 분리 | ✅ 완료 | — | — | — |
| Phase 24 사고 과정 UI 분리 | ✅ 완료 | — | — | — |
| Phase 25 RAG 출처 전용 박스 | ✅ 완료 | — | — | — |
| Phase 20 RAGAS 평가 | 🔲 신규 | 중간 | 중간 | 1순위 |
| Phase 20 RAGAS 평가 | ✅ 완료 | | | |
| Phase 15 모델 선택 | 🔲 미완 | 중간 | 중간 | 4순위 |
| Phase 16 Docker | 🔲 미완 | 높음 | 중간 | 5순위 |
| Phase 17 멀티모달 | 🔲 미완 | 높음 | 높음 | 6순위 |