iT邦幫忙

2026 iThome 鐵人賽

DAY 6
0
佛心分享-SideProject30

30 天打造公開資料版急診檢傷系統:Side Project 與實驗計畫系列 第 6

Day 06|同一套規則,三種檢索架構會走出什麼不同路徑?

  • 分享至 

  • xImage
  •  

Day 05 建立了檢索增強生成(Retrieval-Augmented Generation, RAG)的共同流程:先從外部知識庫找出候選證據,再把問題與證據交給大型語言模型(Large Language Model, LLM)整理。Lewis 等人:RAG 原始研究

不過,「先找再答」只是一個大方向。真正開始設計系統時,還有一個關鍵問題:

規則要全部放在同一層搜尋,先按照主訴與決策結構縮小範圍,還是先用安全條件保護不能漏掉的候選?

這三種選擇會形成三條不同路徑:

  • 平面式檢索增強生成(Flat Retrieval-Augmented Generation, Flat RAG):所有規則區塊都在同一層,直接進行全域搜尋。
  • 階層式檢索增強生成(Hierarchical Retrieval-Augmented Generation, Hierarchical RAG):先找到較大的規則群組,再展開群組內的細部規則。
  • 門控式檢索增強生成(Gated Retrieval-Augmented Generation, Gated RAG):在檢索前或檢索過程中,先決定哪些候選要保留、加權或排除。

三條路徑接收的問題可以完全相同,最後也可以使用相同 LLM。真正不同的是:哪些規則有機會成為候選,以及正確規則會不會在中途被漏掉。

下圖用抽象卡片呈現三條路徑。左側所有卡片位於同一層;中間先經過樹狀父層再到子層;右側則讓三股候選先合併與去重。三條路徑最後都要把證據送到相同的整理與人工覆核階段。

同一張空白查詢卡分流到平面規則卡片庫、階層規則樹與三股候選合併的安全門控平台,最後連到同一個語言模型整理核心和臨床人員覆核工作站

上圖先建立三種架構的直覺差異:平面式直接搜尋全部規則、階層式先縮小範圍、門控式先建立多路候選再合併。這是概念示意,不是正式的臨床工作流程。


讀完這篇,你會知道什麼?

讀完 Day 06 後,你應該能夠:

  1. 說明平面式、階層式與門控式 RAG 的流程差異。
  2. 解釋父層路由為什麼能縮小範圍,也可能提早漏掉正確規則。
  3. 分辨硬門控、軟門控與安全候選聯集。
  4. 用同一筆教學輸入追蹤三條候選形成路徑。
  5. 說明為什麼三個完整系統不能直接當成單一變因實驗。
  6. 列出公平比較三種架構時必須固定的條件。

這篇會用到的名詞

三種架構沒有全球唯一的實作方式,因此這篇先把本系列使用的名稱與行為寫清楚。

中文名稱 英文全名/縮寫 在本篇的用途
平面式檢索增強生成 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=truegate=on。每次實驗都要說明:

  • 階層有哪些層級。
  • 父層如何被選中。
  • 子規則何時展開。
  • 門控讀取哪些輸入。
  • 候選是被排除、加權,還是加入聯集。
  • 門控後是否還有重排序。

名稱只是入口,真正能重現系統的是完整行為定義。

三條路徑先共用同一份契約

如果三種架構各自使用不同輸入、規則或輸出,就很難知道差異來自檢索架構,還是其他地方。

在比較開始前,三條路徑先共用一份系統契約:

共用輸入

輸入包含檢傷當下可取得的主訴、生命徵象、已知病史與缺失標記。缺失標記要明確寫出未知,不能在其中一條路徑補成正常。

查詢表示(Query Representation)是系統實際拿去搜尋的文字與結構。比較架構時,三條路徑必須使用同一種查詢表示;不能平面式只用原始文字,門控式卻額外加入整理過的臨床語意,然後把所有差異歸因於門控。

共用規則來源

三條路徑應使用相同制度、相同版本與相同原始規則內容。平面式和階層式可以用不同方式組織片段,但不能一邊有完整規則,另一邊少了例外條件。

共用最終任務

三條路徑都要輸出相同欄位,例如候選級數、證據識別碼、理由、缺失資料與是否拒答。它們都只定位為臨床決策支援候選,不直接取代專業人員。

共用紀錄

每次執行都要保存:原始輸入、查詢表示、索引版本、候選規則、檢索分數、門控紀錄、提示詞版本、生成模型與最終輸出。

這份共同契約讓我們後面可以把注意力放在真正改變的部分:規則如何組織,以及候選如何被選出。

平面式:把所有規則放在同一個候選空間

平面式檢索增強生成(Flat Retrieval-Augmented Generation, Flat RAG)把所有規則區塊視為同一層資料。它不先選父層群組,也不使用門控;每次查詢直接搜尋整個索引。

本系列把它當作基本檢索基準,流程如下:

  1. 將規則文件切成可追溯區塊。
  2. 使用同一個向量模型產生規則與查詢向量。
  3. 在全部規則區塊中執行密集向量檢索(Dense Retrieval)。
  4. 依相似度選出前 k 筆(Top-k)候選;k 是預計取回的候選數量。
  5. 將候選原文、來源與問題交給相同 LLM 生成結果。

平面式的優點是簡單、透明,而且容易建立第一條可執行基準。只要查看索引,就能知道每個區塊都以相同層級參與搜尋。

它的主要風險是搜尋範圍很大。不同主訴可能共用「疼痛」「呼吸」「高風險」等詞,文字相似的其他制度或版本也可能排到前面。如果區塊切得太短,模型還可能只看到門檻,卻看不到適用條件。

平面式不等於隨意切文件。它仍需要來源、版本、中繼資料與缺失值處理;「平面」只描述候選沒有父子階層。

階層式:先找規則群組,再展開細部規則

階層式檢索增強生成(Hierarchical Retrieval-Augmented Generation, Hierarchical RAG)讓規則保留父層(Parent)與子層(Child)的關係。

父層是較大的規則群組,例如決策點、主訴家族或特定對象;子層則是群組內可以引用的細部規則單元。

基本流程如下:

  1. 用查詢先找可能相關的父層群組。
  2. 將被選中的父層展開為子規則。
  3. 只在展開後的較小範圍內進行相似度排序。
  4. 選出前 k 筆子規則交給 LLM。

中繼資料(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 是合併後的候選集合。
  • CVH 是上面三個來源集合。
  • 是聯集(Union),表示收集三組中所有不重複的元素。

使用一組合成識別碼示範:

C = {R2, R5}
V = {R5, R7}
H = {R1}
U = {R1, R2, R5, R7}

R5 同時出現在 CV,去重(Deduplication)後只保留一次。接著再用重排序(Reranking)比較候選與完整查詢,選出最終前 k 筆證據。

聯集只會讓候選數量增加或維持不變,不會自動證明答案更好。候選增加可能降低漏掉高風險規則的機會,也可能帶入更多不相關內容、增加計算成本或檢傷過度。這些都是後續要測量的假設與代價,不是已完成結果。

把三種架構放在同一個畫面中

下圖將三條路徑放在同一個起點與終點。請先看每欄第二、三個方框,因為真正差異發生在這裡。

三欄架構比較,平面式由共同查詢直接進入全域向量檢索,階層式先做父層路由再檢索子規則,門控式先建立三路候選再聯集、去重與重排序

上圖的三種架構可以快速比較如下:

比較項目 平面式 階層式 門控式
規則組織 所有區塊同一層 父層群組連到子規則 可建立在階層或平面索引之上
第一次縮小候選 全域相似度排序 父層路由 門控條件或候選聯集
主要優點 簡單、透明、容易重跑 保留規則結構與群組脈絡 能明確處理候選保護或排除
主要風險 搜尋範圍大、雜訊多 父層選錯後子規則不可見 門控規則本身也可能出錯
本系列角色 平面檢索基準 文件結構比較 硬門控對照與安全聯集方向

門控式在技術上不一定要搭配階層索引;但本系列的門控實驗會固定使用相同階層知識庫,再比較不同門控行為,避免「知識結構」和「門控方式」同時改變。

讓同一筆教學輸入走過三條路徑

沿用系列中的教學輸入:病患主訴呼吸困難,呼吸速率(Respiratory Rate)為每分鐘 28 次,血氧飽和度(Peripheral Oxygen Saturation, SpO2)為 91%。

這三個欄位不足以完成正式檢傷。我們不知道意識、呼吸窘迫程度、病史、其他生命徵象與正式制度中的適用條件,因此下面只追蹤「候選規則如何形成」,不產生級數。

走平面式路徑

系統把完整查詢直接拿去搜尋全部規則。假設索引中有 F01F08 八個合成片段,相似度排序後取出 F02F07F05

這條路徑最容易理解,但候選可能混入其他主訴或不同版本。是否混入,必須查看每個片段的中繼資料,不能只看分數。

走階層式路徑

系統先在「呼吸群組、外傷群組、腹痛群組」三個合成父層中路由。若選中呼吸群組,再展開其下的 H02H04H07 子規則並排序。

候選範圍比較小,但父層如果選錯,正確子規則會在展開前消失。因此,父層命中與子規則命中要分開記錄。

走安全候選聯集路徑

系統分別產生主訴候選、生命徵象候選與高風險保護候選,形成剛才的 CVH 三組合成集合。

合併與去重後,再由相同重排序器選出前 k 筆。這條路徑不讓「沒有觸發某項生命徵象警示」成為永久刪除高風險規則的唯一理由,但仍需要測量候選增加帶來的雜訊與成本。

下圖把三條追蹤放在一起。所有 FHR 開頭的代號都是教學用合成識別碼,不是任何正式制度的規則編碼。

同一筆呼吸困難教學輸入分別走過全域相似度排序、父層群組到子規則,以及主訴生命徵象高風險三路候選聯集,三條路徑只輸出合成候選識別碼

上圖最重要的觀察不是三組識別碼不同,而是「正確規則可能在哪一步失去機會」:

  • 平面式可能因全域競爭而排不到前 k 筆。
  • 階層式可能在父層路由時就走錯。
  • 硬門控可能在檢索前直接排除。
  • 安全聯集可能保留更多候選,卻增加後續排序難度。

架構導覽不等於公平實驗

如果直接建立三個完整系統:

  • 平面式只用原始文字與密集檢索。
  • 階層式加入語意化查詢和中繼資料過濾。
  • 門控式再加入同時結合多種搜尋訊號的混合檢索(Hybrid Retrieval)、聯集與重排序。

最後即使門控式分數最高,也不能說「一定是門控有效」。差異可能來自查詢表示、文件結構、檢索方法或重排序。

控制變因(Controlled Variable)是在比較某個因素時,其他條件保持相同的實驗設計。三種架構要拆成至少兩個階段。

結構實驗只改平面或階層

比較平面式與階層式時,固定:

  • 相同規則來源與內容。
  • 相同查詢表示。
  • 相同向量模型與密集檢索方法。
  • 相同前 k 筆數量。
  • 相同提示詞與生成模型。
  • 兩邊都不使用門控。

唯一主要差異是知識區塊採用平面結構,還是父子階層。這樣才比較能回答「文件結構本身是否改善檢索」。

門控實驗只改候選處理

比較門控時,固定相同階層知識庫、查詢表示、檢索器、前 k 筆、提示詞與生成模型,只改:

  1. 無門控。
  2. 生命徵象硬門控。
  3. 主訴軟門控。
  4. 安全候選聯集。

如果使用重排序器,四條路徑必須全部使用同一個重排序器與設定;如果停用,也要全部停用。

下圖用兩列矩陣呈現這個拆法。第一列回答結構問題,第二列回答門控問題。

控制變因矩陣先顯示直接比較三個完整系統無法歸因,再將實驗拆成只改平面階層結構的結構實驗,以及只改無門控硬門控主訴軟門控安全候選聯集的門控實驗

上圖也說明為什麼 Day 06 不會宣布哪一種架構最好。今天只完成設計地圖;真正的結論必須等資料、規則、評估指標與實驗設定固定後再產生。

每條路徑都要留下可以追查的紀錄

不論使用哪一種架構,單筆執行至少要留下:

紀錄 平面式需要保存 階層式與門控式額外保存
查詢 原始輸入、缺失標記、查詢表示 路由器或門控器實際讀取的欄位
索引 索引版本、規則區塊識別碼 父層與子層關係版本
檢索 前 k 筆、分數與來源 父層候選、展開的子規則
門控 不適用 門控類型、命中條件、加入與排除候選
生成 提示詞、模型、證據與輸出 同樣保存,不因前面有門控而省略

執行清單(Run Manifest)是記錄一次實驗所用資料、模型、參數與版本的檔案。它負責回答「這個結果是怎麼跑出來的」,而單筆追蹤則回答「這一筆案例經過哪些候選變化」。

兩種紀錄都需要,否則我們只能看到最後級數,卻不知道正確規則在哪一步消失。

醫療安全邊界沒有因架構變複雜而改變

三種架構都只是候選證據的組織方式,不會自動取得臨床決策權。

即使安全候選聯集完整執行,系統仍可能:

  • 原始資料缺失或單位錯誤。
  • 規則知識庫版本不正確。
  • 主訴路由選錯群組。
  • 生命徵象規則寫錯。
  • 重排序把必要證據排到後面。
  • LLM 曲解已取回的證據。

因此,輸出仍定位為臨床決策支援(Clinical Decision Support, CDS)候選,必須顯示來源、版本、不確定性與拒答狀態。美國食品藥物管理局(U.S. Food and Drug Administration, FDA)的臨床決策支援軟體指引,也把醫療專業人員能獨立檢視建議基礎列為重要設計判準。FDA:Clinical Decision Support Software Guidance

這份 FDA 指引屬於美國法規脈絡。本文只引用它作為可檢視建議基礎的設計參考,不用來判定台灣產品的法規分類。

幾個容易誤解的地方

「階層式一定比平面式好」

不一定。階層可以減少雜訊,也會增加父層路由錯誤。若規則本身缺少穩定結構,硬建立階層還可能扭曲內容。

「門控就是把不符合條件的級數刪掉」

只有硬門控會直接排除。軟門控調整排序,安全候選聯集則負責加入與保護候選。

「生命徵象正常,就可以移除高風險規則」

不能直接這樣推論。主訴、病史、意識與其他高風險表徵可能仍然重要;生命徵象也可能缺失、量錯或只反映當下片刻。

「聯集保留更多候選,所以一定更安全」

候選增加可能減少漏規則,也可能增加雜訊、計算成本與檢傷過度。需要同時觀察安全錯誤與資源代價。

「三個完整系統直接比準確率,就知道哪個架構最好」

如果多個元件同時改變,分數差異無法歸因。必須拆成結構實驗、門控實驗與後續檢索/重排序實驗。

「架構圖畫完,就代表系統可以部署」

架構圖只是設計計畫。資料品質、規則正確性、程式測試、檢索評估、臨床效能、人因介面與法規仍要另外驗證。


今天走到了哪裡?

Day 06 建立了三種架構與兩條實驗邊界:

  1. 平面式 RAG 在同一層規則區塊中進行全域檢索。
  2. 階層式 RAG 先選父層群組,再展開與排序子規則。
  3. 門控式 RAG 可以排除、加權或保護候選,不只一種行為。
  4. 生命徵象硬門控是對照條件,安全候選聯集是待驗證的設計方向。
  5. 比較文件結構時不能同時改變查詢、檢索與生成設定。
  6. 比較門控時要固定階層知識庫與其餘元件,只改候選處理。

你可以用下面六個問題自行檢查:

  1. 平面式和階層式的第一次候選縮小分別發生在哪裡?
  2. 父層路由錯誤為什麼不能靠後面的檢索器補救?
  3. 硬門控和軟門控最大的行為差異是什麼?
  4. C ∪ V ∪ H 中三個集合各自代表什麼?
  5. 安全候選聯集可能帶來哪些代價?
  6. 為什麼三個完整系統的分數差異不能直接歸因於架構名稱?

本日小結

平面式、階層式與門控式 RAG 的差異,不只是流程圖多幾個方框,而是每條規則在什麼時候取得或失去成為候選的機會。

平面式保留最簡單的全域基準;階層式利用父子結構縮小搜尋範圍;門控式進一步根據輸入處理候選。硬門控可以快速排除,卻可能無法挽回錯誤;安全候選聯集選擇先保護候選,再把最後排序交給共同檢索流程。

今天完成的是設計地圖與實驗拆分,沒有哪一種架構已被證明最好。後續只有在輸入、資料、模型與評估方式固定後,差異才有解釋價值。

下一篇預告

Day 07 會處理評估的第一個陷阱:整體準確率看起來很高,為什麼系統仍可能漏掉最急迫的病患?

下一篇會從類別不平衡、序位距離與錯誤方向開始,說明為什麼「答對幾筆」不足以評估五級急診檢傷。


參考資料


上一篇
Day 05|檢索增強生成是什麼?讓模型回答前先找到證據
下一篇
Day 07|整體準確率為什麼不夠?先建立急診檢傷評估地圖
系列文
30 天打造公開資料版急診檢傷系統:Side Project 與實驗計畫17
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言