醫院評鑑 RAG 技術實作藍圖(輸出:可查證、可追溯、可稽核)

目標:把「評鑑條文、SOP、證據、改善紀錄」做成可檢索的知識庫,並透過 RAG 在評鑑/稽核現場快速回覆, 且回答必須附來源與限制,避免捏造。

0. 核心原則(先訂規則再上 AI)

可信資料引用必填最小揭露全程稽核
  • 只用核准版資料:條文主檔、核准 SOP/辦法、表單紀錄、會議紀錄、改善報告。
  • 回答必附引用:至少 1 個來源片段(文件名/版本/段落/頁碼/連結)。
  • 不確定就說不知道:找不到來源時,輸出「依現有資料無法完整回答」並建議補件。
  • 權限與稽核:每次查詢紀錄(人、時間、問題、取回文件、輸出)。

1. 目標使用情境(建議先做 3 個 MVP)

情境 用戶問法(例) 系統輸出(必含)
條文→證據定位 「1.4.4 資訊安全應變證據有哪些?」 證據清單 + 最新版本 + 來源引用
委員追問:怎麼證明有做? 「最近一次演練何時?有改善嗎?」 演練紀錄片段 + 改善單 + 成效指標引用
跨文件比對(制度/流程/紀錄一致性) 「SOP 規定 30 天內處理,紀錄是否符合?」 規定條款引用 + 抽樣紀錄摘要 + 風險提示

2. 技術總架構(RAG 參考實作)

建議部署:院內(或專屬 VPC)+ 角色權限 + 取用來源可控。
使用者(UI/Chat)
  └─(Auth/RBAC)→ API Gateway
        ├─ Query Service(檢索/重排/權限過濾)
        │     ├─ Metadata DB(條文/文件/版本/掛條文)
        │     └─ Vector DB(embedding 向量)
        ├─ Answer Service(Prompt 組合/引用/輸出規範)
        ├─ Audit Log(查詢與回覆稽核)
        └─ Admin Console(資料上架、條文綁定、過期提醒)

資料管線(Ingestion)
  ├─ 文件入庫(PDF/DOCX/HTML/影像→文字)
  ├─ 清洗與分段(chunking)
  ├─ 標註 metadata(條號、單位、版本、有效期、機密等級)
  ├─ embedding 建索引(Vector DB)
  └─ 品質驗證(抽樣、重複/過期/衝突偵測)

3. 資料模型(關鍵:條文-證據-版本關係)

3.1 核心實體(最低必要)

實體 主要欄位(示例) 用途
AccreditationClause clause_id, code(1.4.4), title, text, type(必要/重點/可免評), scope(地區/區域/教學) 條文主檔(可查/可控)
Document doc_id, name, owner_unit, classification, effective_from/to, version, approved_by, url/path 制度/流程文件與版本
Evidence evidence_id, doc_id, evidence_type(制度/SOP/紀錄/成效), period, status, tags 可被委員驗證的證據物件
ClauseEvidenceMap clause_id, evidence_id, weight, note 一條文對多證據的掛勾
Chunk chunk_id, doc_id, section, page, text, embedding_vector_id, acl_scope RAG 檢索單位(含頁碼/段落)
AuditLog user, time, query, retrieved_chunks, answer, citations, policy_flags 稽核追蹤與責任歸屬

3.2 Metadata 最小集合(強烈建議)

  • 條號/篇章:讓「條號精準檢索」可用
  • 版本/生效/失效日:避免引用過期 SOP
  • 機密等級/可見範圍:RBAC/ABAC 權限過濾
  • 單位主責:回答不只給文件,還能指到責任窗口

4. Ingestion:文件入庫與切分(RAG 成敗關鍵)

4.1 文件類型與處理策略

來源 處理 注意
PDF(條文/辦法) 抽文字 + 保留頁碼;若掃描需 OCR 頁碼是評鑑引用關鍵
Word/ODT(SOP) 保留標題階層與版本欄位 避免舊版混進索引
表單/紀錄(Excel/CSV) 欄位結構化 + 產生摘要 chunk 個資遮罩/最小揭露
會議紀錄/改善報告 依議題切 chunk(含日期) 便於回答「改善後呢?」

4.2 Chunking 建議(落地參數)

  • 以「標題段落」優先(H1/H2/條號),次之固定字數切分。
  • chunk 長度:400–900 中文字(或 800–1500 tokens),重疊 10–15%。
  • 每個 chunk 必帶:doc_id、版本、生效日、頁碼/段落、acl_scope、條號(如能對齊)。

5. 檢索策略(Recall → Precision)

5.1 兩段式檢索(推薦)

Step A:候選集合(高召回)
  - Vector Search(top_k=30~80)
  - + Clause Code 規則(若問題含 1.4.4 等條號,直接加權)

Step B:重排(高精準)
  - Cross-Encoder / LLM Rerank(top_k=8~15)
  - 權限過濾(先過濾再重排或重排後再過濾,依性能選)

5.2 Query Routing(分流)

  • 條號查詢:偵測到 1.x.x 格式 → 直接鎖定條文/掛勾證據為主。
  • 證據查詢:偵測「紀錄/證據/最近一次」→ 優先抓 Evidence/Record 類文件。
  • 流程查詢:偵測「流程/怎麼做/步驟」→ 優先抓 SOP。

6. 生成策略(可查證回答模板)

6.1 Answer Contract(強制輸出格式)

【結論】(1~3 句)
【依據】(條文/文件引用清單:文件名、版本、生效日、頁碼/段落)
【可出示證據】(可直接拿給委員看的證據)
【待補強】(缺什麼、由誰補、建議期限)
【限制】(不做臨床判斷/非法律意見/僅限院內資料)

6.2 防幻覺控制(必做)

  • 引用門檻:沒有足夠引用 → 禁止輸出肯定結論。
  • 禁止捏造條號/文件:文件名與版本只能從 metadata 選。
  • 衝突處理:若同議題兩份文件不同版,需提示「版本衝突」並以最新版為準。

7. 權限、個資與稽核(醫院必備控制點)

控制點 建議作法 落地檢核
RBAC/ABAC 角色(院長/評鑑窗口/單位)+ 文件等級(公開/內部/機密) chunk 需帶 acl_scope;檢索階段就過濾
PHI/個資最小揭露 紀錄類 chunk 做遮罩(姓名/身分證/病歷號)或只提供統計摘要 抽樣查詢不可吐出個資
稽核留存 完整保留 query、取回 chunks、輸出、使用者 可回放「當時引用什麼」
委員模式 唯讀、限時、只見「可出示證據」 避免委員看到不必要內部資訊

8. 評估與驗收(KPI / 測試集)

8.1 驗收指標(建議門檻)

  • 引用正確率:≥ 95%(引用段落真能支持結論)
  • 可用率:常用問題 Top 50,回答有引用且可出示 ≥ 90%
  • 查詢時間:一般問題 ≤ 5 秒(內網),委員模式 ≤ 3 秒
  • 過期引用率:0(過期文件不可被引用)

8.2 測試集建議(最實用)

  • 用「模擬評鑑題庫」建立 200~400 題 Q/A(每題有標準引用)。
  • 每個篇章至少 10 題;重點條文加倍。

9. MVP 里程碑(4~8 週可落地)

週次 交付物 重點
W1 條文主檔 + 文件清冊 + 權限模型 先把「可用資料」盤點乾淨
W2 Ingestion 管線(PDF/Word)+ chunk/metadata 頁碼/版本/生效日不能丟
W3 Vector DB + 檢索 API + 條號路由 條號查詢要快且準
W4 Answer Contract + 引用輸出 + 稽核 禁止幻覺,先能「可出示」
W5-6 重排/Rerank + 測試集 + 優化 把 Top 50 問題打到可用門檻
W7-8 委員模式 + 過期提醒 + 上線演練 評鑑情境跑一次全流程

10. 介面最小需求(HTML/後台/Chat UI)

附錄 A:範例 Prompt(可直接改用)

System:
你是醫院評鑑管理與病安品質顧問。你只能根據「檢索到的背景資料」回答。
規則:
1) 回答必須附引用(文件名/版本/頁碼或段落)。
2) 若背景資料不足,請說「依現有資料無法完整回答」,並列出待補強項目。
3) 不得捏造條號、文件名稱、數據、會議日期。
4) 輸出格式固定:
【結論】【依據】【可出示證據】【待補強】【限制】

User:
{user_question}

Context:
{top_chunks_with_citations}