RAG 的最小可用架構:五個元件與它們的失敗模式
先把架構圖看懂,再談優化。這篇拆解 RAG 的五個元件,以及每個元件壞掉時使用者會看到什麼症狀。
RAG 之所以難調,是因為它是一條鏈:任何一環出問題,最終症狀都是「回答得不對」。先建立元件與症狀的對應表,除錯效率會完全不同。
五個元件
- 切塊(chunking):把文件切成可檢索的片段。
- 嵌入(embedding):把片段轉成向量。
- 檢索(retrieval):依相似度取回候選片段。
- 重排(rerank):用更精準但更慢的模型重新排序候選。
- 生成(generation):把片段塞進提示讓模型作答。
症狀對照表
- 答案「差一點點」、關鍵句被切斷 → 切塊大小或重疊有問題。
- 同義詞查不到、換個問法就失效 → 嵌入模型不適合這個領域。
- 正確片段根本沒被取回 → 檢索 top-k 太小或索引沒更新。
- 正確片段有取回但排在第八名 → 缺重排。
- 片段對但答案錯 → 生成端提示沒要求依據上下文作答。
先量測再優化
分別量兩個數字:檢索命中率(正確片段有沒有出現在 top-k 裡)與回答正確率。前者低就修檢索,前者高但後者低就修生成。這兩個數字沒分開量之前,所有調整都是瞎猜。
第一版不要急著上向量資料庫。文件量在幾千段以內時,記憶體裡的暴力搜尋就夠快,還能省下一整套維運。