Day 05 建立了檢索增強生成(Retrieval-Augmented Generation, RAG)的共同流程:先從外部知識庫找出候選證據,再把問題與證據交給大型語言模型(Large Language Model, LLM)整理。Lewis 等人:RAG 原始研究
不過,「先找再答」只是一個大方向。真正開始設計系統時,還有一個關鍵問題:
規則要全部放在同一層搜尋,先按照主訴與決策結構縮小範圍,還是先用安全條件保護不能漏掉的候選?
這三種選擇會形成三條不同路徑:
三條路徑接收的問題可以完全相同,最後也可以使用相同 LLM。真正不同的是:哪些規則有機會成為候選,以及正確規則會不會在中途被漏掉。
下圖用抽象卡片呈現三條路徑。左側所有卡片位於同一層;中間先經過樹狀父層再到子層;右側則讓三股候選先合併與去重。三條路徑最後都要把證據送到相同的整理與人工覆核階段。

上圖先建立三種架構的直覺差異:平面式直接搜尋全部規則、階層式先縮小範圍、門控式先建立多路候選再合併。這是概念示意,不是正式的臨床工作流程。
讀完 Day 06 後,你應該能夠:
三種架構沒有全球唯一的實作方式,因此這篇先把本系列使用的名稱與行為寫清楚。
| 中文名稱 | 英文全名/縮寫 | 在本篇的用途 |
|---|---|---|
| 平面式檢索增強生成 | Flat Retrieval-Augmented Generation, Flat RAG | 在同一層規則區塊中進行全域檢索 |
| 階層式檢索增強生成 | Hierarchical Retrieval-Augmented Generation, Hierarchical RAG | 先選父層群組,再搜尋或展開子層規則 |
| 門控式檢索增強生成 | Gated Retrieval-Augmented Generation, Gated RAG | 先依輸入決定候選的保留、加權或排除方式 |
| 父層/子層 | Parent/Child | 表示規則群組與群組內細部規則的關係 |
| 路由 | Routing | 決定查詢下一步進入哪個規則群組或檢索路徑 |
| 硬門控 | Hard Gate | 直接排除不符合門控條件的候選 |
| 軟門控 | Soft Gate | 調整候選分數或優先順序,但不永久排除 |
| 安全候選聯集門控 | Safety-Union Gate | 合併主訴、生命徵象與高風險保護候選,再進行去重與排序 |
RAG 是一個系統家族,不是只有一張固定流程圖。不同資料、任務與工具對「階層」或「門控」可能有不同做法。
例如,樹狀檢索研究 RAPTOR(Recursive Abstractive Processing for Tree-Organized Retrieval)會遞迴聚合、摘要文字,建立不同抽象層級的樹狀索引;查詢時可以從不同層級取回內容。Sarthi 等人:RAPTOR
本系列的階層不是照搬 RAPTOR。這裡不先用模型自動摘要整份文件,而是利用規則本身已具有的決策點、主訴家族與規則單元,建立可追溯的父子關係。
自適應檢索增強生成(Adaptive RAG)的研究也示範了另一種路由:依問題複雜度,在不檢索、單步檢索與多步檢索之間選擇策略。Jeong 等人:Adaptive-RAG
本系列的門控也不等於這項研究。這裡的門控不負責判斷問題需要幾次檢索,而是依主訴、生命徵象與高風險保護規則,處理候選集合。
因此,文章與程式不能只寫 hierarchical=true 或 gate=on。每次實驗都要說明:
名稱只是入口,真正能重現系統的是完整行為定義。
如果三種架構各自使用不同輸入、規則或輸出,就很難知道差異來自檢索架構,還是其他地方。
在比較開始前,三條路徑先共用一份系統契約:
輸入包含檢傷當下可取得的主訴、生命徵象、已知病史與缺失標記。缺失標記要明確寫出未知,不能在其中一條路徑補成正常。
查詢表示(Query Representation)是系統實際拿去搜尋的文字與結構。比較架構時,三條路徑必須使用同一種查詢表示;不能平面式只用原始文字,門控式卻額外加入整理過的臨床語意,然後把所有差異歸因於門控。
三條路徑應使用相同制度、相同版本與相同原始規則內容。平面式和階層式可以用不同方式組織片段,但不能一邊有完整規則,另一邊少了例外條件。
三條路徑都要輸出相同欄位,例如候選級數、證據識別碼、理由、缺失資料與是否拒答。它們都只定位為臨床決策支援候選,不直接取代專業人員。
每次執行都要保存:原始輸入、查詢表示、索引版本、候選規則、檢索分數、門控紀錄、提示詞版本、生成模型與最終輸出。
這份共同契約讓我們後面可以把注意力放在真正改變的部分:規則如何組織,以及候選如何被選出。
平面式檢索增強生成(Flat Retrieval-Augmented Generation, Flat RAG)把所有規則區塊視為同一層資料。它不先選父層群組,也不使用門控;每次查詢直接搜尋整個索引。
本系列把它當作基本檢索基準,流程如下:
k 是預計取回的候選數量。平面式的優點是簡單、透明,而且容易建立第一條可執行基準。只要查看索引,就能知道每個區塊都以相同層級參與搜尋。
它的主要風險是搜尋範圍很大。不同主訴可能共用「疼痛」「呼吸」「高風險」等詞,文字相似的其他制度或版本也可能排到前面。如果區塊切得太短,模型還可能只看到門檻,卻看不到適用條件。
平面式不等於隨意切文件。它仍需要來源、版本、中繼資料與缺失值處理;「平面」只描述候選沒有父子階層。
階層式檢索增強生成(Hierarchical Retrieval-Augmented Generation, Hierarchical RAG)讓規則保留父層(Parent)與子層(Child)的關係。
父層是較大的規則群組,例如決策點、主訴家族或特定對象;子層則是群組內可以引用的細部規則單元。
基本流程如下:
中繼資料(Metadata)是描述資料的附加欄位。階層索引至少要保存父層識別碼、子規則識別碼、制度、版本與來源位置,讓子規則可以回到父層脈絡。
這種設計可能帶來兩個好處:
但階層也新增一個失敗點:父層路由(Routing)若選錯,正確子規則可能根本不會被展開。後面的檢索器再強,也無法取回一個已經不在候選範圍內的規則。
另一個風險是跨群組規則。有些高風險條件可能適用多種主訴,如果只把它放在單一父層,其他路徑就可能看不到。因此,階層設計要允許一條規則連到多個適用群組,或另外建立共用高風險層。
門控式檢索增強生成(Gated Retrieval-Augmented Generation, Gated RAG)會根據輸入,先決定候選應該被保留、加權、排除或補入。
門控(Gate)像入口管理員,但它不一定只負責關門。不同門控有三種主要行為。
硬門控(Hard Gate)根據明確條件建立允許搜尋的範圍,其他候選直接不再參與後續排序。
它的優點是能快速縮小範圍,也能把確定性數值條件放在 LLM 之前執行。缺點是不可逆:只要門控規則、輸入值或缺失值處理有錯,正確規則可能在檢索前就消失。
生命徵象暫時沒有出現特定警示,也不能自動推論主訴沒有高風險。這就是本系列把生命徵象硬門控當作需要測試的對照條件,而不是預先認定為最佳方法的原因。
美國醫療保健研究與品質署(Agency for Healthcare Research and Quality, AHRQ)的病人安全資料也說明,急診嚴重度指數(Emergency Severity Index, ESI)會結合主訴、初始生命徵象與外觀評估,且生命徵象不一定足以辨識所有高風險病患。這正是不能只靠單一生命徵象入口永久排除規則的原因。AHRQ Patient Safety Network:Some Patients Can't Wait
軟門控(Soft Gate)不刪除候選,只提高或降低某些候選的分數。即使路由不確定,其他規則仍保有被取回的機會。
軟門控通常比硬排除保守,但候選空間也會比較大。若加權設計不當,真正重要的規則仍可能被大量相似片段擠到前 k 筆之外。
安全候選聯集門控(Safety-Union Gate)是本系列預計驗證的安全導向設計。它建立三組候選:
C:主訴候選集合,來自主訴或症狀家族。V:生命徵象候選集合,來自確定性數值規則產生的警示。H:高風險保護集合,保存不應只因路由或正常數值就永久消失的規則。三組候選合併成:
U = C ∪ V ∪ H
每個符號的意思是:
U 是合併後的候選集合。C、V、H 是上面三個來源集合。∪ 是聯集(Union),表示收集三組中所有不重複的元素。使用一組合成識別碼示範:
C = {R2, R5}
V = {R5, R7}
H = {R1}
U = {R1, R2, R5, R7}
R5 同時出現在 C 與 V,去重(Deduplication)後只保留一次。接著再用重排序(Reranking)比較候選與完整查詢,選出最終前 k 筆證據。
聯集只會讓候選數量增加或維持不變,不會自動證明答案更好。候選增加可能降低漏掉高風險規則的機會,也可能帶入更多不相關內容、增加計算成本或檢傷過度。這些都是後續要測量的假設與代價,不是已完成結果。
下圖將三條路徑放在同一個起點與終點。請先看每欄第二、三個方框,因為真正差異發生在這裡。

上圖的三種架構可以快速比較如下:
| 比較項目 | 平面式 | 階層式 | 門控式 |
|---|---|---|---|
| 規則組織 | 所有區塊同一層 | 父層群組連到子規則 | 可建立在階層或平面索引之上 |
| 第一次縮小候選 | 全域相似度排序 | 父層路由 | 門控條件或候選聯集 |
| 主要優點 | 簡單、透明、容易重跑 | 保留規則結構與群組脈絡 | 能明確處理候選保護或排除 |
| 主要風險 | 搜尋範圍大、雜訊多 | 父層選錯後子規則不可見 | 門控規則本身也可能出錯 |
| 本系列角色 | 平面檢索基準 | 文件結構比較 | 硬門控對照與安全聯集方向 |
門控式在技術上不一定要搭配階層索引;但本系列的門控實驗會固定使用相同階層知識庫,再比較不同門控行為,避免「知識結構」和「門控方式」同時改變。
沿用系列中的教學輸入:病患主訴呼吸困難,呼吸速率(Respiratory Rate)為每分鐘 28 次,血氧飽和度(Peripheral Oxygen Saturation, SpO2)為 91%。
這三個欄位不足以完成正式檢傷。我們不知道意識、呼吸窘迫程度、病史、其他生命徵象與正式制度中的適用條件,因此下面只追蹤「候選規則如何形成」,不產生級數。
系統把完整查詢直接拿去搜尋全部規則。假設索引中有 F01 到 F08 八個合成片段,相似度排序後取出 F02、F07 與 F05。
這條路徑最容易理解,但候選可能混入其他主訴或不同版本。是否混入,必須查看每個片段的中繼資料,不能只看分數。
系統先在「呼吸群組、外傷群組、腹痛群組」三個合成父層中路由。若選中呼吸群組,再展開其下的 H02、H04 與 H07 子規則並排序。
候選範圍比較小,但父層如果選錯,正確子規則會在展開前消失。因此,父層命中與子規則命中要分開記錄。
系統分別產生主訴候選、生命徵象候選與高風險保護候選,形成剛才的 C、V、H 三組合成集合。
合併與去重後,再由相同重排序器選出前 k 筆。這條路徑不讓「沒有觸發某項生命徵象警示」成為永久刪除高風險規則的唯一理由,但仍需要測量候選增加帶來的雜訊與成本。
下圖把三條追蹤放在一起。所有 F、H、R 開頭的代號都是教學用合成識別碼,不是任何正式制度的規則編碼。

上圖最重要的觀察不是三組識別碼不同,而是「正確規則可能在哪一步失去機會」:
如果直接建立三個完整系統:
最後即使門控式分數最高,也不能說「一定是門控有效」。差異可能來自查詢表示、文件結構、檢索方法或重排序。
控制變因(Controlled Variable)是在比較某個因素時,其他條件保持相同的實驗設計。三種架構要拆成至少兩個階段。
比較平面式與階層式時,固定:
唯一主要差異是知識區塊採用平面結構,還是父子階層。這樣才比較能回答「文件結構本身是否改善檢索」。
比較門控時,固定相同階層知識庫、查詢表示、檢索器、前 k 筆、提示詞與生成模型,只改:
如果使用重排序器,四條路徑必須全部使用同一個重排序器與設定;如果停用,也要全部停用。
下圖用兩列矩陣呈現這個拆法。第一列回答結構問題,第二列回答門控問題。

上圖也說明為什麼 Day 06 不會宣布哪一種架構最好。今天只完成設計地圖;真正的結論必須等資料、規則、評估指標與實驗設定固定後再產生。
不論使用哪一種架構,單筆執行至少要留下:
| 紀錄 | 平面式需要保存 | 階層式與門控式額外保存 |
|---|---|---|
| 查詢 | 原始輸入、缺失標記、查詢表示 | 路由器或門控器實際讀取的欄位 |
| 索引 | 索引版本、規則區塊識別碼 | 父層與子層關係版本 |
| 檢索 | 前 k 筆、分數與來源 | 父層候選、展開的子規則 |
| 門控 | 不適用 | 門控類型、命中條件、加入與排除候選 |
| 生成 | 提示詞、模型、證據與輸出 | 同樣保存,不因前面有門控而省略 |
執行清單(Run Manifest)是記錄一次實驗所用資料、模型、參數與版本的檔案。它負責回答「這個結果是怎麼跑出來的」,而單筆追蹤則回答「這一筆案例經過哪些候選變化」。
兩種紀錄都需要,否則我們只能看到最後級數,卻不知道正確規則在哪一步消失。
三種架構都只是候選證據的組織方式,不會自動取得臨床決策權。
即使安全候選聯集完整執行,系統仍可能:
因此,輸出仍定位為臨床決策支援(Clinical Decision Support, CDS)候選,必須顯示來源、版本、不確定性與拒答狀態。美國食品藥物管理局(U.S. Food and Drug Administration, FDA)的臨床決策支援軟體指引,也把醫療專業人員能獨立檢視建議基礎列為重要設計判準。FDA:Clinical Decision Support Software Guidance
這份 FDA 指引屬於美國法規脈絡。本文只引用它作為可檢視建議基礎的設計參考,不用來判定台灣產品的法規分類。
不一定。階層可以減少雜訊,也會增加父層路由錯誤。若規則本身缺少穩定結構,硬建立階層還可能扭曲內容。
只有硬門控會直接排除。軟門控調整排序,安全候選聯集則負責加入與保護候選。
不能直接這樣推論。主訴、病史、意識與其他高風險表徵可能仍然重要;生命徵象也可能缺失、量錯或只反映當下片刻。
候選增加可能減少漏規則,也可能增加雜訊、計算成本與檢傷過度。需要同時觀察安全錯誤與資源代價。
如果多個元件同時改變,分數差異無法歸因。必須拆成結構實驗、門控實驗與後續檢索/重排序實驗。
架構圖只是設計計畫。資料品質、規則正確性、程式測試、檢索評估、臨床效能、人因介面與法規仍要另外驗證。
Day 06 建立了三種架構與兩條實驗邊界:
你可以用下面六個問題自行檢查:
C ∪ V ∪ H 中三個集合各自代表什麼?平面式、階層式與門控式 RAG 的差異,不只是流程圖多幾個方框,而是每條規則在什麼時候取得或失去成為候選的機會。
平面式保留最簡單的全域基準;階層式利用父子結構縮小搜尋範圍;門控式進一步根據輸入處理候選。硬門控可以快速排除,卻可能無法挽回錯誤;安全候選聯集選擇先保護候選,再把最後排序交給共同檢索流程。
今天完成的是設計地圖與實驗拆分,沒有哪一種架構已被證明最好。後續只有在輸入、資料、模型與評估方式固定後,差異才有解釋價值。
Day 07 會處理評估的第一個陷阱:整體準確率看起來很高,為什麼系統仍可能漏掉最急迫的病患?
下一篇會從類別不平衡、序位距離與錯誤方向開始,說明為什麼「答對幾筆」不足以評估五級急診檢傷。