檢索增強生成(Retrieval-Augmented Generation, RAG)是一種先從外部知識庫找出候選證據,再交給大型語言模型(Large Language Model, LLM)整理回答的方法。Day 06 把 RAG 拆成平面式、階層式與門控式三種候選路徑;下一個直覺問題是:哪一條路徑比較好?Lewis 等人:Retrieval-Augmented Generation
先假設其中一個系統在 100 筆測試案例中答對 82 筆。整體準確率是 82%,看起來很不錯,我們能不能直接宣布它勝出?
還不行。這 82 筆可能大多來自樣本最多的第三級,而第一級只答對 2 筆、漏掉 3 筆。對五級急診檢傷來說,「總共答對多少」只是第一個問題,不是整份評估報告。
下圖把這個盲點畫成一面大型摘要面板。請注意面板下方五條軌道:中央大量案例能主導整體觀感,兩側的小群體卻可能藏著摘要分數沒有說出的缺口。

上圖是概念示意:單一摘要分數可能被大量樣本主導,無法自動揭露每個級別與每種錯誤方向的風險。
讀完 Day 07 後,你應該能夠:
今天的新名詞比較多,先用這張表建立索引;正文後面仍會逐一用例子解釋。
| 中文名稱 | 英文全名/縮寫 | 在本篇的用途 |
|---|---|---|
| 類別不平衡 | Class Imbalance | 描述五個級別的樣本數差距很大 |
| 整體準確率 | Overall Accuracy | 計算全部案例中預測級數完全正確的比例 |
| 混淆矩陣 | Confusion Matrix | 同時整理參考級數與模型預測級數的交叉筆數 |
| 召回率 | Recall | 檢查真正屬於某一級的案例,有多少被模型找回 |
| 平衡準確率 | Balanced Accuracy | 先計算每一級召回率,再讓五級等權平均 |
| 檢傷不足 | Undertriage | 模型預測的急迫度低於參考級數 |
| 檢傷過度 | Overtriage | 模型預測的急迫度高於參考級數 |
| 平均絕對誤差 | Mean Absolute Error, MAE | 計算模型預測與參考級數平均相差幾級 |
| 信賴區間 | Confidence Interval, CI | 表達有限測試樣本造成的統計不確定性 |
台灣急診檢傷與急迫度分級量表(Taiwan Triage and Acuity Scale, TTAS)把急迫度分成五級:第一級為復甦急救、第二級為危急、第三級為緊急、第四級為次緊急、第五級為非緊急。也就是說,數字越小,處理越急迫。衛生福利部:新急診五級檢傷分類標準
本篇所有合成範例都採用這個數字方向:
這裡的「參考級數」不是含糊的標準答案。實驗報告必須寫明它來自臨床現場登錄、專家重新判定,還是資料集既有標籤。三種來源不能混成同一欄。
另一個邊界也要保留:韓國急診檢傷與急迫度分級量表(Korean Triage and Acuity Scale, KTAS)與 TTAS 都有五級,而且同樣以較小數字表示較高急迫度,但規則與標籤語意並不完全相同。因此,KTAS 資料上的分數只能稱為 KTAS 評估結果,不能換名為 TTAS 準確率。Day 03 已完整比較三種五級制度;本篇只需要記住「級數相同不代表規則可以互換」。
接下來使用 100 筆合成案例。這些數字專門用來示範公式,不是任何已完成的模型實驗。
五個參考級數的樣本數分別為:
| 參考級數 | 第 1 級 | 第 2 級 | 第 3 級 | 第 4 級 | 第 5 級 | 合計 |
|---|---|---|---|---|---|---|
| 樣本數 | 5 | 10 | 70 | 10 | 5 | 100 |
第三級占 70%,第一級與第五級各只有 5%。這就是類別不平衡(Class Imbalance):不同類別在資料中出現的次數不相等,而且差距足以影響整體指標。
假設模型的預測形成下面這張混淆矩陣(Confusion Matrix)。列代表參考級數,欄代表模型預測級數。矩陣中的 Cᵢⱼ 代表「參考為第 i 級、模型預測為第 j 級」的案例數;這個列欄定義與 scikit-learn 官方文件一致,但其他工具可能採用不同畫法,因此每次都要明寫。scikit-learn:confusion_matrix
| 參考\預測 | 第 1 級 | 第 2 級 | 第 3 級 | 第 4 級 | 第 5 級 |
|---|---|---|---|---|---|
| 第 1 級 | 2 | 2 | 1 | 0 | 0 |
| 第 2 級 | 1 | 6 | 2 | 1 | 0 |
| 第 3 級 | 0 | 2 | 68 | 0 | 0 |
| 第 4 級 | 0 | 0 | 1 | 4 | 5 |
| 第 5 級 | 0 | 0 | 0 | 3 | 2 |
對角線上的 2、6、68、4、2 是預測正確的筆數。其他位置都是錯誤,但錯誤方向與距離不同,不能全部壓成同一種「答錯」。
整體準確率(Overall Accuracy)是所有案例中,模型預測級數與參考級數完全相同的比例。公式是:
整體準確率 = 對角線正確筆數總和 ÷ 全部案例數
= Σ Cᵢᵢ ÷ N
公式中的符號分別代表:
Cᵢᵢ 是混淆矩陣第 i 級對角線上的正確筆數。Σ 表示把第一級到第五級的對角線筆數全部加總。N 是測試案例總數,這裡為 100。代入合成資料:
整體準確率 = (2 + 6 + 68 + 4 + 2) ÷ 100
= 82 ÷ 100
= 82%
數值越大,表示完全預測正確的比例越高。這個定義與 accuracy_score 的官方說明一致。scikit-learn:accuracy_score
82% 沒有算錯,問題是它沒有回答三件事:
類別比例也會影響整體準確率。這組資料就算完全不看輸入、永遠預測第三級,也能得到 70% 的整體準確率。這個多數類別基準雖然低於 82%,卻提醒我們:82 個百分點中,有很大一部分來自第三級占比本來就高。
因此,整體準確率不是沒有用。它精確回答「完全答對多少」;只是不能單獨回答「每一級是否穩定」與「錯誤是否安全」。
召回率(Recall)用來回答:真正屬於某一級的案例,有多少被模型正確找回?
第 i 級召回率的公式是:
第 i 級召回率 = 第 i 級預測正確筆數 ÷ 第 i 級參考案例總數
= Cᵢᵢ ÷ Σⱼ Cᵢⱼ
其中:
Cᵢᵢ 是第 i 級預測正確的筆數。Σⱼ Cᵢⱼ 是混淆矩陣第 i 列的總和,也就是所有真正屬於第 i 級的案例。以第一級為例,5 筆參考案例中只有 2 筆被正確預測:
第 1 級召回率 = 2 ÷ 5 = 40%
第三級則是:
第 3 級召回率 = 68 ÷ 70 ≈ 97.1%
兩個數字放在一起,82% 的來源就清楚了:第三級案例很多,而且第三級召回率很高;第一級案例很少,而且召回率只有 40%。召回率的正式定義與多類別計算方式可參考官方說明。scikit-learn:recall_score
平衡準確率(Balanced Accuracy)會先計算每一級召回率,再進行不加權平均。五級資料的公式如下;標準工具也把它定位為處理不平衡資料的分類指標。scikit-learn:balanced_accuracy_score
平衡準確率 = (R₁ + R₂ + R₃ + R₄ + R₅) ÷ 5
R₁ 到 R₅ 分別是第一級到第五級的召回率。每一級都只占五分之一,不會因為第三級有 70 筆就取得 70 倍的影響力。
本例五級召回率依序為 40.0%、60.0%、97.1%、40.0%、40.0%,所以:
平衡準確率 = (40.0% + 60.0% + 97.1% + 40.0% + 40.0%) ÷ 5
≈ 55.4%
下圖把資料分布與兩種摘要放在一起。先看左邊第三級的長條,再看右邊第一、四、五級的召回率,就能理解 82.0% 與 55.4% 為什麼可以同時成立。

上圖並不是要用平衡準確率取代所有其他指標。平衡準確率仍然沒有說明錯誤方向,也沒有利用五級之間的先後順序;它只是先修正「樣本多的級別比較有話語權」這個問題。
現在把注意力從「哪一級被漏掉」移到「錯向哪裡」。令 y 代表參考級數,ŷ 代表模型預測級數。在第一級最急、第五級最不急的編碼下:
ŷ > y:檢傷不足,模型判得比較不急
ŷ < y:檢傷過度,模型判得比較急
ŷ = y:預測正確
檢傷不足(Undertriage)可能讓較急迫的案例進入較慢的處理順序;檢傷過度(Overtriage)則可能把較不急迫的案例往前移動,增加有限資源的使用。兩種錯誤都需要量測,但風險型態不同,不能只合併成 18 筆錯誤。
如果分母使用全部 100 筆案例,本例共有:
全體檢傷不足率 = 11 ÷ 100 = 11%
全體檢傷過度率 = 7 ÷ 100 = 7%
這兩個指標回答的是「全部案例中,有多少被判得比較不急或比較急」。它們適合看整體錯誤偏向,但仍可能稀釋少數高急迫案例。
如果安全問題是「真正屬於第一、二級的案例,有多少被判成比參考級數更不急」,分母就要改成第一、二級參考案例總數。
本例第一、二級共 15 筆,其中 6 筆的預測數字大於參考數字:
第一、二級檢傷不足率 = 6 ÷ 15 = 40%
40% 與前面的全體檢傷不足率 11% 都是正確計算,但回答不同問題。前者的分母是 15 筆第一、二級案例;後者的分母是全部 100 筆。報告若只寫「undertriage = 40%」而不寫分母、適用級別與數字方向,讀者無法重現,也不能和其他實驗公平比較。
同樣地,第一級被預測為第二級,與第一級被預測為第五級都算檢傷不足,但距離與可能後果顯然不同。下一步要把序位距離加回來。
五級檢傷屬於序位分類(Ordinal Classification):類別之間有先後順序,但不能只根據數字就假設每一級的臨床差距完全相等。
整體準確率只看是否完全相等。第一級被預測成第二級,與第一級被預測成第五級,在整體準確率中都只算一筆錯誤。
平均絕對誤差(Mean Absolute Error, MAE)則計算每筆預測與參考級數相差多少,再取平均:
MAE = [Σ |ŷₙ - yₙ|] ÷ N
其中:
yₙ 是第 n 筆案例的參考級數。ŷₙ 是第 n 筆案例的模型預測級數。|ŷₙ - yₙ| 是兩個級數差的絕對值,只看距離,不分方向。N 是全部案例數。本例 100 筆案例合計跨了 20 個級距,因此:
MAE = 20 ÷ 100 = 0.20 級
MAE 越接近 0,代表平均距離越小。這個數值也能用標準工具重現。scikit-learn:mean_absolute_error
但 MAE 仍有兩個限制:
序位分類研究也提醒,精確率或召回率可能忽略類別順序,而 MAE 又額外假設級距可以用絕對距離衡量。因此,距離指標適合當成補充視角,不應被解讀為完整的臨床傷害函數。Amigó 等人:An Effectiveness Metric for Ordinal Classification
為了不讓少量遠距錯誤被平均值沖淡,本系列也會另外報告「跨兩級以上錯誤率」。本例有 2 筆跨越至少兩級:
跨兩級以上錯誤率 = 2 ÷ 100 = 2%
下圖把方向與距離放回同一張混淆矩陣。右上方的橘色區塊是預測數字較大、判得比較不急的檢傷不足;左下方的紫色區塊是預測數字較小、判得比較急的檢傷過度;離藍色對角線越遠,跨越級數越多。

上圖最重要的不是背下三個數字,而是建立閱讀順序:先確認列欄與級數方向,再看對角線,接著分開右上與左下,最後檢查離對角線很遠的格子。
現在可以把 Day 07 的評估流程排成六個步驟。這不是尚未執行的模型成果,而是後續實驗要共同遵守的評估契約。
95% CI 用來表達有限樣本造成的不確定性,不表示「模型有 95% 機率安全」,也不能取代外部資料與臨床驗證。實際採用的抽樣方法與比較檢定會在後續實驗文章中完整實作。
下圖將六個步驟濃縮成四層問題。上方共同起點負責固定測試集與標籤;中間四張卡片依序回答整體、分級、方向與距離;底部則提醒所有結果都要附上樣本數、分母與不確定性。

上圖也說明這個系列不會用單一分數決定哪種 RAG 架構最好。架構比較至少要共用同一張評估地圖,否則某個方法可能用整體準確率宣傳,另一個方法卻用危急級召回率宣傳,最後只剩下各自挑選有利數字。
後續正式比較模型時,本系列預計使用以下順序。這是預先指定的評估設計,不是已完成結果。
| 指標角色 | 預計報告內容 | 主要原因 |
|---|---|---|
| 主要效能指標 | 平衡準確率、五級召回率 | 避免多數類別完全主導摘要,並保留每一級表現 |
| 安全指標 | 第一級召回率、第二級召回率、第一至二級檢傷不足率、跨兩級以上的檢傷不足 | 聚焦高急迫案例是否被判得更不急,以及是否出現遠距錯誤 |
| 次要效能指標 | 整體準確率、MAE、全體檢傷不足率、全體檢傷過度率 | 保留整體可讀性、序位距離與資源偏向 |
| 必要附帶資訊 | 各級樣本數、分子、分母、95% CI、資料與模型版本 | 讓百分比可以解讀、比較與重現 |
這張表沒有預先設定「可以部署」的門檻。門檻需要結合使用情境、臨床風險、人工覆核流程、資料代表性與前瞻驗證,不能由合成範例決定。
這個 Side Project 的系統定位仍是臨床決策支援。LLM 與 RAG 可以整理候選規則、產生可追查輸出,但評估分數不會讓系統自動取得取代醫師或護理師的資格。美國食品藥物管理局(Food and Drug Administration, FDA)的臨床決策支援軟體指引也強調軟體功能、使用者與決策依據的界線必須被清楚界定。FDA:Clinical Decision Support Software Guidance
整體準確率仍然清楚回答完全答對比例,也方便理解整體錯誤量。正確做法是把它放回分級、方向與距離旁邊,而不是把它當成唯一指標或完全捨棄。
平衡準確率仍是一個平均值。第一級很低、其他四級較高時,平均後仍可能遮住最需要檢查的級別。五個召回率與各級樣本數必須保留。
不同報告可能使用全部案例、高急迫案例、特定級別或所有錯誤作為分母。每一個指標都要把適用族群、方向條件、分子與分母寫完整。
MAE 不分檢傷不足與檢傷過度,也把相鄰級距當成相同距離。一個模型可能 MAE 很低,卻仍在少數第一級案例出現危險方向錯誤,因此必須搭配分級與方向指標。
不是。Day 07 的 100 筆資料、混淆矩陣與所有百分比都是固定合成範例,只用來驗證計算與閱讀方法。真正的模型結果必須來自鎖定的測試資料與完整實驗紀錄。
Day 07 建立了四層評估問題:
你可以用下面六個問題自行檢查:
整體準確率沒有說謊,它只是回答得不夠多。
對五級急診檢傷來說,一份可以解讀的報告不能停在「100 筆答對 82 筆」。我們還要知道 82 筆來自哪些級別、18 筆錯向哪裡、遠離正確級數多少,以及第一、二級的分母是否小到讓百分比很不穩定。
今天固定的評估地圖會成為後續所有架構與模型比較的共同尺規。只有使用同一組標籤、同一個測試集與同一套指標,分數差異才有進一步解釋的資格。
Day 08 會把注意力從「用什麼尺量」移到「比較時究竟改了什麼」。
如果平面式、階層式與門控式 RAG 同時更換查詢文字、知識結構、候選數量與重排序器,即使分數不同,也很難知道改善來自哪一個元件。下一篇會用控制變因與消融實驗,把混在一起的設計因素逐一拆開。