Bypassing the Multimodal Tax: Hybrid RAG, SQL RRF & UI Telemetry - Abed Matini, Ogilvy
三句話摘要
如何構建本地化的 RAG 問答系統:從文檔預處理、智慧分塊到混合檢索的完整方案。 數據質量和預處理策略往往比選擇最大的模型更能決定 RAG 系統的成敗。 文檔預處理比模型選擇更關鍵 — 直接拖放原始 PDF 會產生無意義的分塊(如簽名、日期等),導致 token 浪費、幻覺增加、準確度下降。經過結構化處理的數據能用較小的模型達到更好效果。
重點整理
重點- 1
文檔預處理比模型選擇更關鍵 — 直接拖放原始 PDF 會產生無意義的分塊(如簽名、日期等),導致 token 浪費、幻覺增加、準確度下降。經過結構化處理的數據能用較小的模型達到更好效果。
- 2
分塊策略必須匹配業務場景 — 不同文檔類型需要不同分塊方式:FAQ 適合標題分塊、非結構化文本用段落或固定字符(512 字符含 64% 重疊)、緊急訊息用句子分塊。正確的分塊方式直接影響後續檢索精度。
- 3
混合檢索勝於單一方法 — 向量檢索(余弦相似度)適合尋找語義相關內容,關鍵詞檢索(BM25)適合精確匹配。結合兩者並透過排序器(Re-ranker)篩選最相關的結果。
- 4
本地執行提供完整控制與成本優化 — 使用 Ollama 運行 5 億參數的 Quen 2.5 模型(400MB),無需付費 API,避免數據外流,可在 Python 層級加入防護(注入檢測、醫療告警)而非依賴 LLM 本身。
實用技巧與重點
乾貨- 模型與基礎設施
- Quen 2.5(5 億參數,400MB,比 7B 模型快且幻覺少)
- BGE-M3 嵌入模型
- PostgreSQL 向量數據庫
- Ollama 本地 LLM 運行時
- Docker 容器化
- FastAPI 後端 + React 前端
- Langfuse 可觀測性平台(免費)
- 分塊策略
- 標題分塊:依文檔 heading 分割
- 段落分塊:每段作為一個 chunk
- 固定 512 字符分塊 + 64% 重疊
- 句子分塊:適合郵件或短訊息
- 檢索與排序
- 混合檢索:向量檢索(最近鄰尋找)+ BM25 關鍵詞檢索
- 余弦距離計算相似度
- 限制檢索結果數量(預設 2 個,可按場景調整)
- Re-ranker 重新排序最終結果
- 安全與可觀測性
- Langfuse 追蹤每筆對話(model、回應數、延遲、成本估算)
- 意圖檢測(Intent Reject)攔截不相關查詢
- 醫療告警詞庫(escalation keywords)
- LLM 分類器檢測注入攻擊
- 所有檢查在 Python 層級,不送交 LLM
結論
結論“數據質量和預處理策略往往比選擇最大的模型更能決定 RAG 系統的成敗。”
完整解析
詳細構建高效 RAG 系統的核心問題有二:一是用戶上傳文檔時即刻消耗 token,卻未回答任何問題;二是生產環境結合向量資料庫、關鍵詞搜尋、多個工具時管理複雜。講者提出「結構優先」的解法,而非直接依賴雲端 LLM。
具體做法從文檔預處理開始。使用 Dockling 將 PDF、Word、圖像轉為 Markdown 文件,再選擇適合的分塊策略。以 HR 員工手冊為例,若直接上傳 28 頁 PDF,分塊結果會包含「簽名」、「日期」等無意義內容,導致檢索時混入雜訊。相比之下,先將手冊改寫為「常見問題與回答」格式,再按標題分塊,每個 chunk 都具有明確的問題-答案對應,檢索時即能追蹤來源並驗證準確性。
檢索層面採用混合策略。向量檢索透過嵌入模型(BGE-M3)將查詢和文檔轉為向量,用余弦相似度找出語義相近的前 N 個結果;同時 BM25 關鍵詞檢索負責精確匹配(如產品名稱、編號)。兩路結果經排序器重新打分後,取得最相關的候選。限制返回結果數量也很關鍵——太多選項令用戶混淆,太少則遺漏重要資訊,需按使用場景調整。
系統採用本地優先架構,所有元件都能在筆電或 Code Space 運行。5 億參數的 Quen 2.5 模型(400MB)搭配 PostgreSQL 向量資料庫,使用 Langfuse 記錄每次查詢的模型、回應數、延遲等指標。關鍵創新在於安全防護不仰賴 LLM 本身的「理解」,而在 Python 層級預先攔截風險查詢——醫療相關詞彙觸發告警、注入攻擊字樣直接拒絕,確保只有合法請求才送交模型。這樣既減少 token 消耗,也避免了 LLM 有時遵守指令、有時「自作聰明」的不確定性。
整個系統無需任何付費 API 或外部依賴,成本為零,同時完全掌握數據流向和系統行為。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。


