ko-hallucheck-v1 β νκ΅μ΄ νκ°(μΆ©μ€μ±) νλ³κΈ°
π νμ λ²μ ko-hallucheck-v3 κ³΅κ° β μλ λ 립 μ€μΈ‘μμ λλ¬λ μ½μ (hard 0.521, 문체 ν΄λ¦¬μ€ν±)μ μλ¦¬ν΄ Standard 0.882 / Hard 0.758 / κ΅μ°¨μμ±κΈ° 0.704. μ κ· μ¬μ©μ v3λ₯Ό κΆμ₯ν©λλ€.
(context, answer) μμ μ λ ₯λ°μ λ΅λ³μ΄ λ¬Έλ§₯μ μΆ©μ€νμ§(SUPPORTED) νκ°μΈμ§(HALLUCINATED) νλ³νλ νκ΅μ΄ μ μ© cross-encoderμ λλ€. RAG νμ΄νλΌμΈμ μΆλ ₯ κ²μ΄νΈ, LLM λ©ν μΈμκ²μ¦, μμ± μ½ν μΈ νμ§ κ²μ΄νΈ μ©λλ‘ μ€κ³λμμ΅λλ€.
μμ΄κΆμλ vectara/hallucination_evaluation_model, MiniCheck, LettuceDetect λ± μ±μν νλ³κΈ°κ° μμ§λ§, νκ΅μ΄ μ μ© κ³΅κ° νλ³κΈ°λ μμ΄ κ·Έ 곡백μ μ±μ°κΈ° μν΄ λ§λ€μμ΅λλ€.
- Base: BAAI/bge-reranker-v2-m3 (568M, Apache-2.0) β 2-label seq-classification νμΈνλ
- Labels:
0 = HALLUCINATED,1 = SUPPORTED - Max length: 512 (context+answer, longest_first truncation)
μ±λ₯
| νκ°μ | acc | AUROC | νκ°νμ§ recall (intrinsic / extrinsic) |
|---|---|---|---|
| in-dist test (μν€ κΈ°λ° λ¬Έμ₯ν, n=1002) | 0.938 | 0.980 | 0.83 / 1.00 |
| spanν held-out (KorQuAD μν€, n=688) | 0.988 | 0.997 | 0.99 / 1.00 |
| cross-source OOD (KLUE-MRC λ΄μ€ span, n=1500) | 0.966 | 0.979 | 0.99 / 0.99 |
- OODλ νμ΅μ μ°μ§ μμ μμ€(λ΄μ€ λλ©μΈ)μ΄λ©°, κΈ°λ³Έ μκ³κ° 0.5μμ μ μ±λ₯μ΄ λμ΅λλ€(λ³λ μΊλ¦¬λΈλ μ΄μ λΆνμ).
- v1 λλΉ ν΅μ¬ κ°μ : λ¬Έμ₯ν λ°μ΄ν°λ§μΌλ‘ νμ΅νλ©΄ spanν μ λ ₯μμ νλ³μ΄ λΆκ΄΄(ν¬λ§· shortcut)νλ λ¬Έμ λ₯Ό λ€ν¬λ§·(λ¬Έμ₯ν+spanν) νμ΅μΌλ‘ ν΄κ²°νμ΅λλ€.
π΄ Ko-FaithBench λ 립 μ€μΈ‘ (2026-07-05 μΆκ° β λ°λμ μ½μΌμΈμ)
κ³΅κ° ν μ ν¬κ° μ§μ λ§λ λ 립 λ²€μΉλ§ν¬ Ko-FaithBench(λ³Έ λͺ¨λΈ νμ΅λ°μ΄ν°μ 무κ΄, LLM μμ± νκ°)μμ μ¬μΈ‘μ ν κ²°κ³Όμ λλ€:
| μ | acc | AUROC | ν΄μ |
|---|---|---|---|
| Standard (982) | 0.780 | 0.851 | μλ 'μ±λ₯'μ λ£° κΈ°λ° OOD 0.966μ κ³Όλνκ°μμ΅λλ€ (κ°μ λ£° ν¨λ°λ¦¬ μ μ΄) |
| Hard (380) | 0.521 | 0.542 | chance μμ€. νκ° recall 0.958 + μΆ©μ€ μ€ν 0.916 = κ³ λλ ꡬκ°μμ λ³Έ λͺ¨λΈμ μ¬μ€κ²μ¦μ΄ μλλΌ λ¬Έμ²΄ ν΄λ¦¬μ€ν±(μ¬κ΅¬μ±Β·λ¨μ 문체βνκ° νμ )μΌλ‘ λμν©λλ€ |
μ°Έκ³ λ‘ κ°μ Standard μ μμ νλ°ν°μ΄ LLM(DeepSeek-V4-Flash zero-shot)μ 0.991μ λλ€. λ³Έ λͺ¨λΈμ μ€μ© λ²μλ "μ¨νλ ·무λ£Β·λλμ²λ¦¬κ° νμν κ²½μ°μ 0.6B κ²½λ μ€ν¬λ¦¬λ"μ΄λ©°, κ³ λλΒ·κ³ μν νλ³μλ μ¬μ©νμ§ λ§μμμ€. v3μμ LLM μμ± νκ°μ νμ΅μ λ°μν μμ μ λλ€.
μ μ§ν νκ³ (μ½κ³ μ°μΈμ)
- negative(νκ°) μνμ΄ LLM μμ± + λ£° λ³ν(μ«μ/κ°μ²΄ μΉν, νλ¬Έμ μ΄μ)μΌλ‘ λ§λ€μ΄μ‘μ΅λλ€. OOD νκ°μ νκ°λ κ°μ λ£° ν¨λ°λ¦¬λ‘ μμ±λμ΄, μ€νκ²½ LLM νκ°κ³Ό λΆν¬κ° λ€λ₯Ό μ μμ΅λλ€. μ¬λ λΌλ²¨ κΈ°λ° λ 립 λ²€μΉλ§ν¬(Ko-FaithBench)λ₯Ό μ€λΉ μ€μ΄λ©° κ³΅κ° μ μ¬κΈ°μ κ²°κ³Όλ₯Ό μΆκ°ν©λλ€.
- λ―Έλ¬ν 1κΈμ μμ€ λ³ν(intrinsic)μ in-dist recallμ 0.83μΌλ‘, κ·Ήν λ―ΈμΈν μ곑μ λμΉ μ μμ΅λλ€.
- context 512 ν ν° μ΄κ³ΌλΆμ μ립λλ€. κΈ΄ λ¬Έμλ μ²ν¬ λ¨μλ‘ λλ νλ³νμΈμ.
- μ¬μ€μ± νλ³μ΄ μλλΌ μ£Όμ΄μ§ contextμ λν μΆ©μ€μ± νλ³μ λλ€. context μμ²΄κ° ν리면 μ‘μ§ λͺ»ν©λλ€.
- μλ£Β·λ²λ₯ λ± κ³ μν μ©λμλ μ¬λ κ²ν μμ΄ λ¨λ μ¬μ©νμ§ λ§μΈμ.
μ¬μ©λ²
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
repo = "jismsy/ko-hallucheck-v1"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForSequenceClassification.from_pretrained(repo).eval()
context = "λμ¬μ 첫 νμ¬λͺ
μ λ‘―λ°κ³΅μ
μ¬μλ€. 1978λ
μ¬λͺ
μ λμ¬μΌλ‘ λ³κ²½νλ€."
answer = "λμ¬μ 1965λ
μΌμμνμΌλ‘ 창립λμλ€."
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()
print(f"SUPPORTED νλ₯ : {prob_supported:.3f}") # 0.5 λ―Έλ§ β νκ° νμ
νμ΅ λ°μ΄ν°
- νκ΅μ΄ μν€νΌλμ κΈ°λ° λ¬Έμ₯ν (context, answer) ~18kμ: LLM μμ± supported/intrinsic/extrinsic, μν μλ κ²μ(λΌλ²¨ μ νλ ~90%)
- KorQuAD v1 κΈ°λ° spanν ~5.3kμ: λ£° κΈ°λ° μμ±
- λ¬Έμ(article) κ·Έλ£Ή λ¨μ train/val/test λΆν λ‘ λμ μ°¨λ¨
- λ°μ΄ν° μλ¬Έ λΌμ΄μ μ€: Korean Wikipedia(CC BY-SA), KorQuAD v1(CC BY-ND) β λ°μ΄ν°μ μ체λ μ¬λ°°ν¬νμ§ μμ΅λλ€.
Citation
@misc{ko-hallucheck-2026,
title={ko-hallucheck: Korean Faithfulness / Hallucination Detection Cross-Encoder},
author={ianwoo},
year={2026},
url={https://huggingface.co/jismsy/ko-hallucheck-v1}
}
- Downloads last month
- 18
Model tree for jismsy/ko-hallucheck-v1
Base model
BAAI/bge-reranker-v2-m3