37차시. 루브릭 설계
8. 루브릭 채점 결과 활용
출처: 원본 PDF 37차시_루브릭설계.pdf 17쪽 · 쪽 그림 17쪽
📝 결과 집계
rows = []
for d in dev_set:
final = app.invoke(init_state(d["question"]), {...})
s = score_by_rubric(d["question"], d["gold_answer"],
final["answer"], final.get("documents"))
rows.append({**s, "id": d["id"], "type": d["type"]})
# 항목별 평균 — 어디가 약한지 바로 보인다
print("■ 항목별 평균 (만점 2.0)")
for k in WEIGHTS:
avg = sum(r[k] for r in rows) / len(rows)
bar = "█" * int(avg * 10)
print(f" {k:<14} {avg:.2f} {bar}")
print(f"\n 총점 평균 : {sum(r['total'] for r in rows)/len(rows):.2f}")
print(f" Gate 통과 : {sum(r['passed'] for r in rows)}/{len(rows)}")
실행 결과 예시
─────────────────────────────────────────────
─────────
■ 항목별 평균 (만점 2.0)
accuracy 1.86 ██████████████████
grounding 1.94 ███████████████████
completeness 1.51 ███████████████ ← 약점
clarity 1.77 █████████████████
총점 평균 : 1.79
Gate 통과 : 33/35🎯 completeness가 1.51로 가장 낮습니다
36차시 분석과 일치합니다.
복합 질문에서 "한쪽만 답함" 문제였죠.
루브릭 채점이 이분법 채점과 같은 결론을 냈다면
두 평가 방식이 서로를 검증한 셈입니다.
그리고 루브릭은 얼마나 부족한지까지 알려줍니다.
1.51이면 "대체로 답하지만 자주 빠뜨린다"는 뜻입니다.
개선 후 1.75가 되면 진전을 숫자로 보여줄 수 있습니다.