Skip to content

用跨度標註檢測幻覺

如何在 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 的情形)。
  • 事實錯誤:與既定事實相矛盾。
  • 自相矛盾:與同一段輸出中較早出現的內容相沖突。
  • 捏造的引用:所引文獻並不存在,或與其聲稱的內容不符。

按照撰寫標註指南的做法,把這套類別保持精簡,併為每一類配上一行定義和一個示例。

品質方面的考量

  • 把原始材料提供給標註者;沒有原文,"無支撐"就無從定義。
  • 邊界規則很重要:跨度是覆蓋整句話,還是隻覆蓋那個錯誤的從句?請一次性定好。
  • 忠實性在邊界情形下帶有主觀性;要收集重疊標註並跟蹤一致性

延伸閱讀