動作
Feature #153
進行中
SC
SC
優化 RAG Pipeline 減少 LLM 調用次數
Feature #153:
優化 RAG Pipeline 減少 LLM 調用次數
開始日期:
2026-02-04
完成日期:
完成比例:
0%
預估工時:
4:00 小時
概述
目前 ICD-10 RAG Pipeline 每次查詢會調用 LLM 1 + N 次(N = 傷害數量):
- 1 次:提取傷害 (Extract)
- N 次:排名候選碼 (Rank),每個傷害各一次
當病歷包含多個傷害時,LLM 調用次數會線性增加,嚴重影響回應速度和資源消耗。
h1. 1. 現況分析
目前流程(以 2 個傷害為例):
┌─────────────────────────────────────────────────────┐
│ Step 1: Extract (LLM #1) │
│ 輸入: 病歷全文 │
│ 輸出: ["傷害1", "傷害2"] │
└──────────────────────────┬──────────────────────────┘
│
┌─────────────┴─────────────┐
▼ ▼
┌──────────────────────────┐ ┌──────────────────────────┐
│ Step 2-4 for 傷害1: │ │ Step 2-4 for 傷害2: │
│ Search → Filter → Rank │ │ Search → Filter → Rank │
│ (LLM #2) │ │ (LLM #3) │
└──────────────────────────┘ └──────────────────────────┘
總計: 3 次 LLM 調用
h1. 2. 優化方案
h2. * 方案 A:合併 Rank 調用(推薦)
將所有傷害的候選碼合併,一次性讓 LLM 進行排名。
優化後流程:
┌─────────────────────────────────────────────────────┐
│ Step 1: Extract (LLM #1) │
│ 輸出: ["傷害1", "傷害2"] │
└──────────────────────────┬──────────────────────────┘
│
┌─────────────┴─────────────┐
▼ ▼
┌──────────────────────────┐ ┌──────────────────────────┐
│ Step 2-3 for 傷害1: │ │ Step 2-3 for 傷害2: │
│ Search + Filter (無 LLM) │ │ Search + Filter (無 LLM) │
└──────────────────────────┴──┬───────────────────────┬──┘
│ (匯總候選資料) │
▼ ▼
┌─────────────────────────────────────────────────────┐
│ Step 4: Batch Rank (LLM #2) │
│ 一次性排名所有傷害的候選碼 │
└─────────────────────────────────────────────────────┘
總計: 2 次 LLM 調用(固定)
- 優點:LLM 調用次數固定為 2 次,不受傷害數量影響。
- 缺點:單次 prompt 較長,需注意 context window token 限制。
h2. * 方案 B:合併 Extract + Rank
將提取和排名合併為單一 LLM 調用。
極簡流程:
┌─────────────────────────────────────────────────────┐
│ Step 1: Extract + Search + Filter (無 LLM) │
│ - 使用 NER (命名實體識別) 或規則提取傷害 │
│ - 向量搜索 + 過濾 │
├─────────────────────────────────────────────────────┤
│ Step 2: Rank ALL (LLM #1) │
│ 一次性處理所有傷害 │
└─────────────────────────────────────────────────────┘
總計: 1 次 LLM 調用
- 優點:最少 LLM 調用次數。
- 缺點:傷害提取準確度可能大幅下降(依賴非 LLM 的提取能力)。
h2. * 方案 C:並行調用 (Async)
維持現有架構,但使用 asyncio 並行調用 LLM。
- 優點:不改變邏輯,減少總等待時間 (Latency)。
- 缺點:LLM 調用次數不變 (Cost 不變),僅優化使用者等待時間。
h1. 3. 預期效益比較
| 方案 | LLM 調用次數 | 複雜度 | 準確度影響 |
|---|---|---|---|
| 現況 | 1 + N | - | - |
| 方案 A (推薦) | 2 (固定) | 中 | 低 |
| 方案 B | 1 (固定) | 高 | 中 |
| 方案 C | 1 + N | 低 | 無 |
相關檔案¶
-
backend/rag_service.py- 修改目標函數:
extract_injuries(),rank_candidates()
- 修改目標函數:
沒有任何資料可供顯示
動作