RAG 是什麼?用人話解釋讓你的 AI 不亂講話的技術

2026-05-11 · 黃少民 / Satsuma Creative

RAG(Retrieval-Augmented Generation,檢索增強生成)就是讓 AI 答案只能來自你給的資料、答不出來就老實說。本文用人話解釋向量、切段、檢索、重排這些術語,以及為什麼做好 RAG 比做出來難得多。

或者說:怎麼讓 AI 只回答你給它的東西,絕不亂講?


一個比喻先講清楚

想像你雇用一個剛畢業的助理。你給他兩種訓練方式:

第一種:讓他死背整本員工手冊。考他的時候,他憑記憶回答。 - 缺點:記憶會偏差、會混淆、會自己腦補補空缺 - 而且員工手冊更新後,他還是記得舊版,要重新訓練才會改

第二種:讓他學會怎麼查員工手冊。考他的時候,他先翻到正確章節,只看那幾頁,再回答。 - 優點:答案永遠來自最新版手冊 - 答不到的時候會誠實說「手冊沒寫,我去問主管」 - 加新章節不用重訓他,他下一秒就會用

第二種就是 RAG

LLM(大語言模型)被當成那個「會查書的助理」,而不是「死背書的助理」。


RAG 全名是什麼

Retrieval-Augmented Generation,中文叫「檢索增強生成」。

拆成三個動作:

  1. Retrieval — 檢索:從知識庫找出跟問題相關的內容
  2. Augmented — 增強:把找到的內容塞進 prompt
  3. Generation — 生成:讓 LLM 基於這些內容回答

順序很重要:先檢索,後生成。LLM 看到的不是「整個世界的知識」,只有「你篩選給它的這幾段」。


那個「向量」是什麼?用人話

中間最神秘的是「怎麼從一堆文件裡找出跟問題相關的內容」。傳統做法是關鍵字搜尋(SQL LIKE),但有兩個致命缺陷:

問題:「我帳號被盜了怎麼辦?」 - 知識庫條目:「異常登入的處理流程」 - 關鍵字搜尋:抓不到(「帳號」「被盜」這兩個詞,標題裡都沒出現)

解法:把每段文字轉成一串數字,叫做「向量」(vector),代表它的語意位置

具體一點:

「我帳號被盜了」     → [0.21, -0.45, 0.78, ..., 0.12]
「異常登入處理」      → [0.19, -0.43, 0.81, ..., 0.15]   ← 數字很像,在同一區域
「TVC 廣告報價」     → [-0.55, 0.92, -0.30, ..., 0.61]  ← 數字差很多,在遠處

這串數字是用一個叫「embedding model(嵌入模型)」的 AI 算出來的,它讀過數十億句話,學會把意思相近的東西放在數字空間相近的位置

於是檢索變成:把問題也轉成向量,然後找數學上距離最近的幾個段落。這叫「cosine similarity」(餘弦相似度),其實就是兩個向量的夾角越小、越相似。

不用懂數學,記得這個畫面:

意思就是位置。位置近的就是相關的。


RAG 做得簡單,做得好很難

聽起來不難對吧?把文件切段、轉向量、搜尋、丟給 LLM。但讓 RAG 答得準,中間有四個工程坑:

坑 1:切段策略(chunking)

把一份 100 頁的 PDF 怎麼切?

  • 切太細(每段 50 字):資訊片段化,LLM 拼不起完整答案
  • 切太大(每段 2000 字):一段裡藏太多事,向量取的是「平均語意」,搜尋會失準

實務做法:每段 300-500 字、相鄰段重疊 50 字(避免關鍵句被切兩半)。

而且切段時要考慮自然邊界——不能把同一個 FAQ 答案切兩半。要按 markdown 標題、條列、段落結構切,不是按長度。

坑 2:Embedding 模型選擇

中文跟英文的最佳 embedding 模型不同

  • 通用英文最強:OpenAI text-embedding-3-large、Cohere embed-v3
  • 中英雙語穩定:paraphrase-multilingual-MiniLM-L12-v2(我們小愛用的)
  • 純中文最強(2026 年初):bge-m3gte-Qwen2

選錯模型,同一個知識庫表現差 30%

純向量搜尋有個缺點:人名、產品代號、數字 ID 這種「精確匹配」事情,向量會失準

例子:玩家問「S-1A 怎麼解任務?」 - 純向量:可能把「S-1A」當成一般符號,匹配到其他任務的答案 - 加上 BM25 關鍵字搜尋:「S-1A」精確命中,結果一起排序

實務上要做 dense (向量) + sparse (BM25) 混合搜尋,再用 reranker 模型重新排序 top 結果。

坑 4:Reranking(重排)

向量搜尋找出 top 20 候選後,要用一個更精準的模型(通常更小但更深)重新排序前 3-5 個。

為什麼?embedding 模型訓練目標是「相似」,reranker 訓練目標是「相關性」——不一樣。embedding 抓出「形狀」相近的,reranker 確認「真的能回答問題」的。

省略 reranking 通常 top-1 命中率掉 15-20%。


RAG 的「最後一哩路」:不准 LLM 自由發揮

做完上面四件事,你還是會看到 LLM 自由發揮——它讀完知識庫片段,還是會自己補。

例子: - 問:「A 方案多少錢?」 - 知識庫片段抓到:「A 方案介紹...(沒寫價格)」 - LLM 答:「A 方案 NT$3,000 起。」 ← 掰的

這時候要做的不只是技術問題,是規則設計:

1. system prompt 明寫:「只能用知識庫回答。沒寫的事一律說『我不確定,
   請真人協助』。不要憑常識補腦。」

2. 每次回應強制輸出 ACTION tag([ANSWER]/[UNKNOWN]/[HANDOFF]),系統按
   tag 路由——不准 LLM 自己 fallback 到掰

3. 答案附 citation,讓 LLM 知道會被追溯

這三件事一起做,LLM 才會真的「乖」。

→ 想看實際運作?薩摩官網的小愛 → 就是這套架構在跑。問她「你們做電商嗎?」,她不會掰,她會說「這個我不確定,要不要留 Email 給薩摩」。


為什麼大多數 AI 客服 SaaS 的 RAG 普通

技術都公開了,為什麼大家做得不一樣?

答案是經濟學,不是技術。

工程環節 細心做 套版做
切段策略 為每個客戶調參 統一規則
Embedding 模型 依語言 / 領域選 一個模型打天下
混合檢索 視 KB 內容啟用 純向量 default
Reranking 加一層 reranker 省成本不做
規則設計 一客戶一份 SOP 通用 system prompt

一個賣 3,000 月費的 SaaS,沒辦法為你的 KB 細調這些。經濟上不成立。

→ 想要 RAG 做到 80 分以上,需要的是客製化交付,不是 SaaS。


結論:RAG 是答案,但不是萬靈藥

RAG 治得了 AI 「亂掰」這條 bug,但只有做好的 RAG 才行。做出來不難,做好難。

你可以這樣評估市面 AI 客服:

問廠商三個問題:

  1. 你們用什麼 embedding 模型?中文表現怎樣?(答不出來就 SaaS 套版)
  2. 答案會附 citation 嗎?(說「會但功能還沒開」 = 沒做)
  3. 不知道的事情會自己掰嗎?(讓他現場 demo,問一個 KB 沒寫的事)

三個問題答得出來,才是會做 RAG 的供應商。


參考閱讀: - 為什麼 AI 客服總是答非所問? → - AI 同事完整介紹 → - 想自己玩玩看 RAG?去薩摩首頁右下角 找小愛聊天,刁難她


黃少民 / Satsuma Creative

整合行銷創意公司。我們做廣告、做遊戲出身,把 AI 當同事培養,不是當工具賣。