假設公司昨天才發布一份新規定:
「從 9 月開始,海外出差每日餐費上限調整。」
你今天就問 AI:
「去東京出差一天可以報多少餐費?」
如果這個模型幾個月前就訓練完成,它不可能憑空知道昨天才出現的公司文件。
但你也不一定需要為了改一條規定,就重新訓練整個模型。
更直覺的方法是:
先把相關文件找出來,再把文件內容一起交給模型回答。
這就是理解**檢索增強生成(Retrieval-Augmented Generation, RAG)**最好的入口。
把 RAG 想成一場開卷考
閉卷考時,學生只能靠腦中記得的東西回答。
開卷考則不一樣。
老師問:
「公司海外差旅餐費上限是多少?」
學生先翻公司手冊,找到差旅章節,再根據那幾頁作答。
RAG 也很像這樣。
它把流程拆成兩大部分:
檢索(Retrieval):先找出與問題最相關的資料。
生成(Generation):再讓生成模型根據問題和找到的資料產生答案。
RAG 中間的 A 是 Augmented,意思是「增強」。也就是用外部檢索到的資訊,增強模型這一次回答時能看到的上下文。
先複習 Embedding 和 Vector Database
前一篇 Lesson 021:Embedding 是什麼? 講過:Embedding 會把內容轉成向量,讓系統可以比較哪些內容在語意上比較接近。
接著 Lesson 022:Vector Database 是什麼? 講過:向量資料庫可以保存、索引並搜尋大量向量,快速找出語意上接近的資料。
這兩個概念常常會出現在 RAG 裡。
但要注意:RAG 不等於 Vector Database。
向量資料庫只是其中一種常見檢索方法。你也可能用關鍵字搜尋、SQL、搜尋引擎、知識圖譜,甚至把多種方法混在一起。
一套最基本的 RAG 流程長什麼樣?
假設你有一本 200 頁的員工手冊。
第一步:把文件拆小
通常不會每次都把整本 200 頁塞給模型。
系統會把文件拆成較小的片段,這個動作常叫做文本切塊(Chunking)。
每一小段可以叫一個 Chunk。
例如:
Chunk A:請假規定
Chunk B:差旅補助
Chunk C:資安規範
Chunk D:設備申請
為什麼要拆?
因為使用者問差旅時,真正需要的可能只是其中兩三段,而不是整本手冊。
第二步:把每個 Chunk 做成 Embedding
每一段文字被轉成向量,然後和原文、來源頁碼、文件名稱等資料一起保存。
例如:
文字:海外出差每日餐費上限……
Embedding:[......]
文件:Travel-Policy-2026.pdf
頁碼:18
這一步等於先幫圖書館裡的每一小段資料標上「意思座標」。
第三步:使用者問題也做成 Embedding
使用者問:
「東京出差餐費一天最多報多少?」
系統把這句話也轉成向量。
然後拿它去做 Vector Search,找到最接近的幾個 Chunk。
例如:
- 海外差旅餐費規則
- 日本地區差旅補助
- 報帳憑證要求
第四步:把找到的資料塞進 Context
這裡會用到前面學過的 上下文視窗(Context Window)。一句話 recap:Context Window 就是模型這一次回答時能看到的資訊範圍。
系統會把:
- 使用者的問題
- 找到的相關 Chunk
- 回答規則
一起送給模型。
這時模型不是靠「記得公司政策」回答,而是因為這一次它真的看到了相關文件片段。
第五步:模型生成答案
最後模型可能回答:
「依據 2026 Travel Policy 第 18 頁,日本地區每日餐費上限為……」
如果系統設計得好,還可以把文件名稱或引用一起顯示,讓使用者知道答案從哪裡來。
RAG 最大的價值:資料可以更新,不必重新訓練模型
假設明天公司又改規則。
使用 RAG 時,你可以更新文件和索引。
下一次搜尋,就有機會拿到新的資料。
這和重新訓練模型是兩件完全不同的事。
RAG 比較像:
換掉考場上的參考資料。
而不是:
把學生送回學校重新受訓。
這個差別會在下一篇 Fine-tuning 再講得更清楚。
RAG 可以降低幻覺,但不能保證不出錯
前面 Lesson 006:AI 幻覺是什麼? 講過:模型可能產生看起來合理、實際上錯誤的內容。
RAG 的確能讓模型多看到可靠資料,因此常能改善「憑空回答」的問題。
但 RAG 本身也可能錯。
例如:
- Retrieval 根本沒找對文件
- 找到的是舊版本
- Chunk 切得太碎,重要上下文被切開
- 相似度很高,但其實是另一個地區的規定
- 模型看到正確資料後仍然解讀錯
所以 RAG 的品質至少同時取決於:
資料品質 + 檢索品質 + Prompt / 規則 + 模型能力。
Chunk 越小越好嗎?
不一定。
如果切得太大,裡面可能混進很多不相關內容。
如果切得太小,又可能失去前後文。
例如一句:
「以上限制不適用於經主管核准的緊急出差。」
如果它被單獨切成一塊,你可能根本不知道「以上限制」指什麼。
所以 Chunking 本身就是 RAG 實作裡很重要的一部分。
Top 5 就一定是最好答案嗎?
也不一定。
Vector Search 常會拿前幾名,例如 Top 5。
但數量太少可能漏掉重要資料,太多又可能把雜訊塞進 Context。
有些系統還會增加重新排序(Reranking):先粗略找一批候選,再用另一個方法重新判斷誰最相關。
你可以把它想成圖書館先找到 30 本可能相關的書,再讓第二位館員挑出真正最值得看的 5 本。
RAG 和 AI Agent 有什麼關係?
Lesson 020:AI Agent 是什麼? 的一句話 recap:Agent 會根據任務決定是否使用外部工具,再把工具結果帶回工作流程。
Retrieval 完全可以是 Agent 的一個工具。
例如 Agent 先判斷:
「這題是公司內部政策,我應該先查知識庫。」
接著執行 RAG Retrieval,再根據結果回答。
所以 Agent 和 RAG 不是競爭關係,反而經常一起出現。
RAG 不等於「把所有文件塞給模型」
如果你每次都把 500 頁 PDF 全部放進 Prompt,那比較像「整箱書搬到考桌上」。
RAG 的重點在於 Retrieval:
先從大量資料裡找出真正相關的少數內容,再交給模型。
這樣通常更省 Context,也更容易控制資料來源。
今天只要記住一句話
RAG 就像讓 AI 參加開卷考:先從外部資料中 Retrieval 找到相關內容,再把這些內容放進 Context,讓模型根據資料 Generation 回答。
下一篇我們來處理最容易混在一起的三件事:Prompt、RAG 和 Fine-tuning,到底什麼時候該用哪一個?
留言
有想法、疑問或想補充的地方,都可以留在這裡。
還沒有留言,來當 1F 吧。