환각 채점 — 150문항 중 5건 이하

무엇을

생성 카드의 환각을 규칙으로 채점한다. 검수 기준은 150문항 중 5건 이하 · 출처 표시율 100% 다.

어떻게 — LLM 에게 묻지 않는다

절대 원칙 1: LLM 을 채점자로 쓰지 않는다. 「이 카드가 환각인가요?」를 모델에게 물으면 재현 가능하지 않고, 채점자와 피채점자가 같은 실패 모드를 공유한다.

규칙으로 잴 수 있는 것부터 고정한다 —

규칙으로 못 재는 몫은 사람이 센다. 그때는 센 사람·기준·날짜를 함께 적는다 — 「150문항 중 5건」은 사람이 세는 지표라고 6.1절이 이미 적고 있다.

완료 조건


2026-09-15 — 규칙으로 쟀다. 원출력 기준으로는 기준을 못 넘는다

판정 기준과 센 방법

ai/apps/evaluation/metrics/generation.py — 생성기 필터를 import 하지 않고 따로 세웠다(자기 필터로 자기를 채점하면 필터의 구멍이 채점에도 난다. .importlinter 계약 2 도 막는다).

지표 규칙
출처 표시율 카드마다 source.doc_id 가 비어 있지 않다
원출력 환각 모델 원출력의 줄·쉼표·JSON 원소 조각 중 근거 조항 본문에 문자 그대로 없는 것(공백·문장부호·마크다운만 무시). 괄호 설명도 센다. 의미가 같은 다른 말(신분증↔주민등록증)도 센다. 「없음」·빈 배열은 0
화면 환각 화면에 나간 필요 서류: … 항목 중 본문에 없는 것. 스니펫 카드는 조항 원문이라 0

사람이 센 몫은 없다. 「맞는 이름인데 절차에 안 맞는 서류」는 규칙으로 못 재고 세지도 않았다 — 셀 때는 센 사람·기준·날짜를 함께 적는다.

실측 — 96문항, 150 기준 미달

측정일 2026-09-15 · 커밋 38f2fc3-dirty · 골든셋 v1-150 B 96문항 · 상위 1건 생성 · 로컬 Ollama 0.33.3 (Apple Silicon)
검색 결과를 파일로 고정해 모든 조건에 같은 조항을 넣었다 (rerank-dense · data/processed/generation-eval/docs-rerank-dense.json)
.venv/bin/python scripts/eval_generation.py [--no-schema] [--model …]

조건                         원출력 환각 카드  환각 조각  목록 카드  「없음」  출력 토큰  p50    p95    출처 표시율  화면 환각
EXAONE-4.0-1.2B + 스키마         89/96          213        59        0       52     589ms  921ms   100%        0
EXAONE-4.0-1.2B 스키마 없음      96/96          416        44        0       80     922ms  944ms   100%        0
kanana-1.5-2.1b 스키마 없음      27/96           40        74       14       24     526ms  977ms   100%        0

남는 것