</> 技術筆記Tech Notes

叫 AI 幫 AI 打分,我後來先做了一把尺

同一個答案,模糊指令只得到一個分數,評分表會留下可追查的理由

我第一次叫 AI 幫忙評答案,指令只有這樣:

請評估這個答案的品質,給 1 到 5 分。

它很配合地給了 4 分,理由也寫得很順。問題是我看完還是不知道這個 4 分能拿來做什麼。

「品質」到底是事實正確、答到問題、語氣自然,還是字數剛好?同一批答案隔幾天再跑,分數也可能變。換另一個模型當評審,更像連尺都一起換掉。

我後來才把順序反過來:先別急著叫 AI 打分,先做一把人看得懂、AI 也照得下去的尺。這把尺通常叫 rubric,也就是評分表。

一個總分不夠我找問題

假設我在測一個根據內部文件回答問題的 RAG 系統。它的答案可能同時有三種狀況:

  • 數字都有根據,但答得太長。

  • 直接答到問題,卻多編了一個原文沒有的日期。

  • 完全沒有亂編,只是一直繞圈,沒有回答使用者真正問的事。

把這三種答案都壓成一個 1 到 5 分,資訊會不見。我真正想知道的是它壞在哪裡,下一版要改檢索、Prompt,還是輸出長度。

所以我把評分拆成三個面向:

面向 我在看什麼
有沒有亂編 每個事實能不能在參考資料找到根據
有沒有答到 是否直接處理使用者的問題
會不會囉嗦 有多少內容刪掉也不影響答案

面向不用多。我的經驗是先抓 2 到 5 個,太多反而會互相重疊。「清楚」和「邏輯通順」如果連人都分不開,AI 評審也不會突然比較懂。

每一分都要長得不一樣

只有面向還不夠。另一個坑是把評分標準寫成這樣:

分數 說明
1 很差
3 普通
5 很好

這張表看起來有規則,其實還是靠感覺。

我現在會把每一分寫成可以檢查的狀態。以「有沒有亂編」為例:

同一個評分面向,從憑空編造到逐項標出來源的五個刻度

分數 可以觀察到的狀態
1 關鍵事實是憑空編的,主要內容找不到根據
2 大方向推得出來,但多個細節無法溯源
3 主要內容有根據,仍有少數次要細節對不上
4 每個主要說法都能對應到參考資料
5 每個說法都有根據,而且答案主動標出處

這裡最花時間的不是寫字,而是找邊界。3 分和 4 分到底差在哪,最好拿真實答案讓熟悉業務的人各自評一次。大家意見差很大時,不要急著怪評審模型,通常是尺還沒刻清楚。

我不再從空白頁想評分面向

一開始我也會坐在會議室裡想:「好答案應該具備哪些特質?」最後很容易列出完整、正確、清楚、專業、友善之類漂亮但重疊的詞。

後來我改看失敗案例。

先撈一批真的答壞過、被退回或被抱怨的答案,再按失敗原因分群。假設 80 個案例裡有 31 個答非所問、18 個太長、12 個編了不存在的內容,那評分面向自然就浮出來了。

這些數字只是做法示意,實際使用時要換成自己的資料,不能把別人的比例當成門檻。

我會照這個順序做:

  1. 說清楚這個 AI 的工作,以及最不能接受的失敗。

  2. 收集真實的失敗答案,不只挑好看的範例。

  3. 把失敗分成 2 到 5 群,變成評分面向。

  4. 用代表案例寫出每個分數的邊界。

  5. 先讓 2 到 3 位懂業務的人各自試打,再比較 AI 的結果。

第 5 步不能省。人類彼此都沒有共識時,追求 AI 跟人類一致沒有意義。

給評審的指令,我會要求留下理由

實際送給評審模型的內容,大致長這樣:

你要評估一個文件問答系統的答案。

使用者問題:{question}
參考資料:{context}
待評答案:{answer}

面向:有沒有亂編
1 = 關鍵事實找不到任何根據
2 = 多個細節無法溯源
3 = 主要內容有根據,少數細節對不上
4 = 每個主要說法都能對應到參考資料
5 = 每個說法都有根據,而且主動標出處

請只輸出 JSON:
{
  "score": 1,
  "reason": "給這個分數的具體原因",
  "unsupported_claims": []
}

我會要求它列出理由和找不到根據的說法,不只回一個數字。這樣分數異常時,我才知道是答案真的有問題,還是評審理解錯了。

JSON 也要驗證 schema。AI 偶爾還是會多包一層 Markdown code fence,或把整數寫成字串。這些是程式能明確檢查的事,不需要再找另一個 AI 猜。

分數很穩,不代表它評得準

有一段時間,同一批答案的分數很穩,我就以為評估可以用了。後來抽查理由才發現,評審把「回答很長」當成「內容很完整」,即使裡面多了沒有根據的細節,還是給高分。

症狀是分數漂亮,人工抽查卻常看到長答案壓過短而正確的答案。原因不是模型故障,而是我沒有把「內容長度不代表品質」寫進規則,也沒有把「囉嗦」拆成獨立面向。

我做了三個修正:

  • 把事實根據和文字長度分開評。

  • 固定一組人工已經評過的案例,每次換模型或改 Prompt 都重跑。

  • 重要樣本保留人工抽查,不讓 AI 評審變成唯一裁判。

AI 評審還可能受答案順序、模型偏好和隨機性影響。評分表只能把問題縮小,不能把這些偏差變不見。

有些事情直接跑程式比較準

如果結果有明確答案,我不會硬找 AI 評:

要驗什麼 我會用什麼
JSON 欄位是否齊全 Schema validation
程式碼能不能跑 編譯與自動化測試
金額算得對不對 直接比對預期值
是否包含禁用字詞 規則或字串檢查
回答是否有根據、是否切題 AI 評審加人工抽查

AI 評審最適合放在機械檢查和人工審查中間。它可以替我把覆蓋範圍放大,但不能替我定義什麼叫好,也不能替最後上線的人負責。

我現在看到一個 4.2 分,第一個反應已經不是「看起來不錯」,而是先問:這把尺怎麼刻的?誰拿真實案例校過?這兩題答不出來,那個小數點只是讓猜測看起來比較精密而已。