RAG
RAG
Retrieval-Augmented Generation
RAG(檢索增強生成)是一種架構模式。
在 LLM 生成答案前,先從外部知識庫檢索相關資料,再將檢索結果提供給模型作為上下文,提升回答的正確性、可控性與即時性。
LLM 的本質:條件機率模型(Conditional Probability Model)
定義
大型語言模型(LLM)的核心任務只有一個:在給定前文條件下,預測下一個 token 的機率分佈。
數學形式為:
P(token_t | token_1 … token_{t-1}) 表示在給定前文 token 的情況下,模型預測下一個 token 的機率。
這個機率分佈是由模型內部的所有參數(weights)共同決定的。
這些參數並不儲存任何可直接查詢的知識內容,而是隱式地編碼了大量語言片段之間的統計關聯與結構模式。
LLM 並不具備「查詢」、「記憶文件」或「事實驗證」能力。
LLM「知識」從何而來
- X LLM 沒有文件
- X LLM 沒有資料表
- X LLM 沒有條目式知識
- O 參數空間中所編碼的統計關聯結構
- 壓縮後的語言世界模型
- 訓練階段:把世界「壓縮」成參數,訓練資料(書籍、文件、程式碼、維基百科)僅用於不斷調整模型參數,強化 token 與 token 之間的關聯機率
- 資料不會被儲存,僅留下統計痕跡。
小模型仍「看起來懂很多」
- 多數人類知識是
低熵、可高度壓縮的 - 技術文件與教科書高度模板化 (token 關聯穩定)
- 常識與基礎知識在語料中反覆出現
因此:只需要很少參數就能學到這種穩定規律,LLM 並非記住內容,而是學會「怎樣說才像懂」。
Transformer 擅長「關聯建模」
世界不是隨機的,而是高度可壓縮:
- 長距離 token 關聯
- 抽象語義空間
- 結構對齊(Structure Alignment)
Transformer 等於一個超強壓縮器,這讓它可以:
- 將問題對齊到「已見過的語言模式」
- 再生成對應回應
- 回答不是「查到」,而是「生成」,不是回憶,是重建
類比
| 人類 | LLM |
|---|---|
| 不記全文,但懂概念 | 不存文本,但存關聯 |
| 用經驗推理 | 用機率生成 |
| 會犯錯 | 會幻覺 |
為何 LLM 天生會發散
- 目標是語言合理性,不是事實正確性
- 無內建「不知道」的概念
- 在缺乏約束時,必然選擇機率最高的語言延續
結果即為:語言上合理、事實上可能錯誤的回答(Hallucination)。
Local LLM 比雲端模型更容易發散
| 因素 | 影響 |
|---|---|
| 模型參數較小 | 抽象與推理能力不足 |
| 訓練資料有限 | 專業與企業知識缺失 |
| RLHF 較弱 | 對錯誤不敏感 |
| 無外部工具 | 無事實約束 |
Local LLM 是發散引擎,RAG 是約束系統;沒有 RAG 的 Local LLM,不具備企業可用性。
RAG(Retrieval-Augmented Generation)定義
LLM 的本質限制
| 問題 | LLM 本質原因 | RAG 的對應解法 |
|---|---|---|
| 幻覺(Hallucination) | 1. 超出訓練分布 2. 涉及精確數值或細節 3. 需要最新資訊 4. 需要邏輯或事實驗證 | 1. 將真實文件放入上下文 2. 將「自由生成」轉為基於證據的重述 3. 以 Prompt 明確禁止推測 |
| 知識過期 | 訓練資料為靜態快照,模型無法自行更新 | 1. 文件可隨時更新並重新索引 2. 問題查詢時即時檢索最新內容 |
| 無法使用私有資料 | 私有資料未參與預訓練,模型完全不可見 | 1. 將企業資料建立向量索引 2. 不需微調即可納入推理上下文 |
| 無法追溯來源 | 回答為生成結果,無內建引用機制 | 1. 每段回答對應文件 Chunk 2. 可回傳來源、頁碼或文件 ID |
RAG 架構定義
RAG 是一種系統架構,而非模型類型,其核心流程為:
graph TB
使用者問題(使用者問題)-->Embedding("Embedding (問題向量化)")
Embedding-->Vector(Vector DB 檢索相似文件)
Vector-->Context("Context 組裝
(Prompt Engineering)") Context-->Gen(LLM 生成回答) Gen-->Result("回傳結果(附來源)")
(Prompt Engineering)") Context-->Gen(LLM 生成回答) Gen-->Result("回傳結果(附來源)")
RAG 的功能
- X 讓模型「更聰明」
- O 限制模型只能在可驗證資料範圍內生成內容,對 LLM 的「發散性」進行工程級收束
RAG 的三層收束機制
語意收束(Semantic Constraint)
透過向量搜尋,問題 → 向量化 → 只取 Top-K 相似文件
- 僅取 Top-K 語意相近文件
- 排除不相關知識
- 與問題語意最接近的文件
- 不是全世界的知識
Prompt 硬性約束(Hard Constraint)
典型企業級 Prompt 規範,建立邏輯防火牆
- 僅能根據提供文件回答
- 禁止自行推測
- 無資料必須回覆「文件未提供相關資訊」
Context Token 視野限制(Physical Constraint)
LLM 僅能看到:
- Prompt
- Context 文件
無法接觸訓練資料或外部知識。
RAG ≠ 保證正確
RAG 是約束系統,不是真理引擎,失敗原因可能包括:
- 檢索錯文件
- 文件本身錯誤
- Chunk 切錯
- Embedding 不適合語言
- Prompt 寬鬆
總結
- LLM 是語言生成模型,不是知識庫
- 所謂知識是統計關聯的結果
- Local LLM 天生容易發散
- RAG 的本質是工程級約束
- 沒有 RAG 的 Local LLM 不具備企業可用性
LLM 看起來有知識,是因為它學會了語言結構,RAG 的價值,是把生成鎖回真實世界。
