RAG 是什麼
檢索增強生成(Retrieval-Augmented Generation, RAG)是 2020 年 Meta AI 論文提出的架構:在語言模型生成之前,先從外部知識庫取出相關內容,再把這些內容當成上下文。模型不是「把整份知識記住」,而是「當場去查再寫」。
為什麼需要它
LLM 的知識停在訓練當下。你問公司今年的差旅規定、剛發布的 API、內部 wiki,它可能:
- 誠實說不知道(最好的情況)
- 用過期或通用知識硬答
- 編造看起來合理的細節(幻覺)
RAG 把「最新、可核對的事實」從你的資料裡找出來,塞進提示。好處是:
- 可更新:換文件、重建索引即可,不必重訓。
- 可引用:回答可附上段落來源,方便人工核對。
- 範圍可控:只讓模型看到你允許的語料,降低外洩與胡謅。
兩段生命週期
離線(建索引)與線上(問答)是分開的:
- 索引:載入文件 → 切塊 → 嵌入 → 寫入向量庫。
- 問答:問題嵌入 → 檢索 top-k → 組成提示 → LLM 生成。
Naive RAG(最單純的管線)就是這六步。進階技巧幾乎都是在「檢索前改問題」或「檢索後再篩一次」上做文章。細節見 建立索引 與 檢索。
RAG、提示工程、微調
三種方法都在改善輸出,但改的位置不同:
| 方法 | 改什麼 | 擅長 | 不擅長 |
|---|---|---|---|
| 提示工程 | 問題怎麼問、系統提示怎麼寫 | 格式、角色、推理步驟 | 補模型沒看過的私有事實 |
| RAG | 提示裡多了檢索到的段落 | 新知識、可引用、可更新 | 改變語氣或領域寫作風格 |
| 微調 | 模型權重 | 固定格式、風格、特定任務 | 頻繁更新的事實(成本高、容易過時) |
實務上常併用:用 RAG 補事實,用提示約束「沒有就說不知道」,必要時才微調格式。IBM 把這三者對照講得很清楚,見 官方影音。
什麼時候不要硬上 RAG
- 問題其實靠通用常識就能答,沒有專屬語料。
- 整份文件都很短,直接放進長上下文視窗更單純(仍要注意成本與注意力稀釋)。
- 你要的是「寫得像法務」而不是「引用第 12 條」。那是風格問題,偏向微調或好的系統提示。
下一頁:嵌入。