用跨度標註檢測幻覺
如何在 Potato 中用跨度標註和 MQM 風格的錯誤標記,定位並標註模型輸出中的幻覺與事實錯誤。
幻覺是指模型給出的、缺乏其輸入或事實支撐卻言之鑿鑿的陳述。捕捉幻覺最有用的方式,是把出錯的具體詞句標出來並說明它們錯在哪裡,這是一項針對模型輸出的跨度標註任務。 跨度級別的標籤遠比一個籠統的"這個回答是錯的"標記更具可操作性。
背景知識參見幻覺(人工智慧)。
為什麼要標跨度,而不是整段回答
給整段回答打一個"不忠實"的標籤,只能告訴你確實有問題;而跨度能告訴你問題是什麼、在哪裡。跨度資料讓你能夠按類型測算錯誤率、發現規律,並構建有針對性的訓練資料。這與機器翻譯評測中標準的錯誤跨度框架 MQM(多維品質指標)如出一轍。
設定錯誤跨度標註
yaml
annotation_schemes:
- annotation_type: span
name: errors
description: "Highlight each problematic span and label the error type."
labels: [unsupported_claim, factual_error, contradiction, fabricated_citation]
- annotation_type: radio
name: severity
description: "How serious is the worst error?"
labels: [Minor, Major, Critical]像 MQM 那樣加入一個嚴重程度的判斷,這樣你就能把無關緊要的小失誤和危險的捏造區別對待、賦予不同權重。
定義錯誤類型
- 無支撐的斷言:不被原文所支援(即 RAG 的情形)。
- 事實錯誤:與既定事實相矛盾。
- 自相矛盾:與同一段輸出中較早出現的內容相沖突。
- 捏造的引用:所引文獻並不存在,或與其聲稱的內容不符。
按照撰寫標註指南的做法,把這套類別保持精簡,併為每一類配上一行定義和一個示例。
品質方面的考量
- 把原始材料提供給標註者;沒有原文,"無支撐"就無從定義。
- 邊界規則很重要:跨度是覆蓋整句話,還是隻覆蓋那個錯誤的從句?請一次性定好。
- 忠實性在邊界情形下帶有主觀性;要收集重疊標註並跟蹤一致性。