ko-hallucheck-v3 — 한국어 환각(충실성) 판별기
한국어 (context, answer) 쌍을 입력받아 답변이 지문에 충실한지(SUPPORTED=1) 환각인지(HALLUCINATED=0) 판별하는 0.6B cross-encoder입니다. ko-hallucheck-v1의 후속으로, LLM 생성 환각을 학습에 반영해 v1의 최대 약점(교묘한 환각 앞에서 문체 휴리스틱으로 퇴행)을 수리했습니다.
더 높은 정확도가 필요하고 GPU 메모리를 사용할 수 있다면 ko-hallucheck-4b를 재판정용 강력 티어로 사용하세요. 권장 구조는 v3 전량 스크리닝 → 불확실·고위험 사례만 4B → 모델 불일치 시 사람 검토입니다.
이 카드의 모든 성능 수치는 저희가 만든 공개 벤치마크 Ko-FaithBench와 교차 생성기 실측으로 얻은 것이며, 불리한 숫자를 포함해 전부 게시합니다.
성능 (3단 정직 공시)
| 평가 | v1 | v3 | 의미 |
|---|---|---|---|
| Ko-FaithBench Standard (982) | 0.780 | 0.882 (AUROC 0.951) | 표준 실력. 단 학습·벤치가 같은 생성기(GLM) 계열이라 다소 후한 숫자 |
| Ko-FaithBench Hard (380, adversarial) | 0.521 (chance) | 0.758 (AUROC 0.824) | 프런티어도 틀리는 문항만 모은 셋 |
| 교차 생성기 실측 (DeepSeek 출제 162쌍, 학습·벤치와 무관) | 0.475 (붕괴) | 0.704 (AUROC 0.776) | 생성기 독립 일반화 능력. 이게 보수적 실전 추정치 |
동일 조건 비교 (zero-shot, Ko-FaithBench):
| 모델 | 크기 | Standard | Hard |
|---|---|---|---|
| gemma3-4b | 4B | 0.554 | 0.500 |
| EXAONE-3.5 | 7.8B | 0.741 | 0.500 |
| ko-hallucheck-v3 | 0.6B | 0.882 | 0.758 |
| DeepSeek-V4-Flash (클라우드) | 284B MoE | 0.991 | — (벤치 필터라 무효) |
요약: 온프렘에서 돌아가는 체급 중에서는 범용 LLM을 큰 차이로 이기고, 클라우드 프런티어에는 명확히 못 미칩니다. 이 모델의 자리는 "GPU 한 장(또는 CPU)으로 전량 스크리닝하고, 의심 건만 상위 심판에 올리는" 1차 관문입니다.
⚠️ 알려진 약점 (반드시 읽으세요)
- 개체 역할 교환(entity swap)에 구조적으로 약합니다 — "제조사↔운용사", "A의 스승↔제자" 같은 역할 바꿔치기 환각의 hard 케이스 recall이 0.20~0.25에 그칩니다. 이는 모델 크기의 한계가 아닙니다: 동일 레시피로 7배 큰 4B(gemma-3-4b) QLoRA를 학습해도 이 유형의 recall은 0.25에서 멈췄고, 오히려 표적 데이터 증량이 파라미터 증량보다 소폭 더 효과적이었습니다. 즉 이 (context, answer) 쌍 판별 프레이밍이 개체-역할 결속(entity-role binding)을 학습하기 어려운 태스크 내재적 난제로 판단합니다(스케일·데이터 모두 완만하게 수렴). 이 유형이 치명적인 용도(계약·귀속·법률)에는 단독 사용 금지.
- 다중 오류·부분 환각은 다루지 않습니다(학습·평가 모두 단일 오류 설계).
- 위키 백과사전 문체 기반입니다. 뉴스 span 형식은 검증됐으나(KLUE 재구성 0.966) 구어·전문 도메인은 미검증.
- 학습 환각이 LLM 생성물이라 사람이 쓴 자연 환각 분포와 다를 수 있습니다.
사용법
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
tok = AutoTokenizer.from_pretrained("jismsy/ko-hallucheck-v3")
model = AutoModelForSequenceClassification.from_pretrained("jismsy/ko-hallucheck-v3").eval()
enc = tok(context, answer, truncation="longest_first", max_length=512, return_tensors="pt")
with torch.no_grad():
prob_supported = torch.softmax(model(**enc).logits, -1)[0, 1].item()
# prob_supported < 0.5 → 환각 의심. 스크리닝 용도로는 임계 0.8~0.85 권장(정밀도 우선)
학습
- 베이스: BAAI/bge-reranker-v2-m3 (cross-encoder seq-cls, 2 label)
- 데이터: 룰 기반 변형(v1 계열 23k) + LLM 생성 환각쌍 3.6k(6유형: 한정사삽입·주체혼동·부분사실·관계연쇄·유도계산·시제상전이, 이중 모델 교차검증 통과분). 지문 그룹 단위 train/val 분할(누수 차단), Ko-FaithBench 벤치 문항은 학습에 미사용(지문 해시 대조로 격리).
- 3 epoch, GB10(128GB UMA) 단일 노드.
Citation
@misc{kohallucheck2026,
title={ko-hallucheck: A Korean Faithfulness Classifier with Honest Cross-Generator Evaluation},
author={ianwoo},
year={2026},
url={https://huggingface.co/jismsy/ko-hallucheck-v3}
}