-
Notifications
You must be signed in to change notification settings - Fork 0
RAGAS
Mint edited this page May 27, 2026
·
1 revision
Ragas는 RAG 파이프라인을 정답 라벨 없이 평가하는 프레임워크예요. 검색이 관련 문맥을 잘 골라오는지, LLM이 그 문맥을 충실히 쓰는지를 점수로 매겨요.
케이스 파일에 정답(should_trigger)을 넣어두고, 코드나 프롬프트를 바꿀 때마다 eval을 돌려 지표가 기준을 넘는지 확인해요.
- false_positive_rate 0.333으로 기준(≤0.30) 초과, FAIL
- "버스 몇 시에 와" 쿼리가 무관한 노트에 매칭돼 오발동
관련 없는 "버스 몇 시에 와"가 0.759점, 진짜 케이스들은 0.59~0.71이었어요. 가짜 양성이 모든 진짜 양성보다 높아서, threshold를 올리면 진짜 케이스가 같이 잘리는 문제가 있었어요. 원인은 LLM이 관련 없는 쿼리에 점수를 후하게 주는 것이었어요.
src/service/recall.py의 _build_llm_prompt()에서 relevance_score 채점 지시만 수정했어요.
| 항목 | Before | After |
|---|---|---|
| 지시 방식 | 범위만 명시 (0.0 to 1.0) |
구간별 기준 + 보수적 채점 규칙 |
| 0.8 이상 | 없음 | 쿼리에 직접적이고 구체적으로 답할 때만 |
| 0.5~0.7 | 없음 | 부분적으로 관련될 때 |
| 0.5 미만 | 없음 | 스치듯 관련되거나 주제만 비슷할 때 |
| 애매할 때 | 없음 | 낮게 매김 (놓친 트리거 > 잘못된 트리거) |
| 지표 | before | after |
|---|---|---|
| context_precision | 1.000 | 1.000 |
| false_positive_rate | 0.333 (FAIL) | 0.000 (PASS) |
| false_negative_rate | 0.000 | 0.000 |
"버스 몇 시에 와"는 0.759에서 0.5 미만으로 내려갔고, 진짜 케이스들(0.59~0.71)은 트리거를 유지했어요.
- 원래 ragas는 LLM으로 답변 품질을 평가하는데, 지금은 relevance_score 임계값으로 트리거 여부만 판정하고 있어요. LLM 기반 평가는 아직 안 붙였어요.
- 케이스가 7개뿐이라 0.000은 표본이 작아서 나온 수치일 수 있어요. 케이스를 늘리면 깨질 수 있어요.
- 채점을 보수적으로 당겨서 false negative가 늘어날 위험이 생겼어요.
- 0.5 경계선 근처 케이스 테스트가 없어요. 0.45~0.55 구간 쿼리로 경계가 안정적인지 확인하는 것이 좋아요.