ANGELA JIAN
LOADING
回到課程總覽
第 29 篇 L12202 生成式 AI 進階

RAG 檢索增強生成:讓 AI 不再胡說八道的關鍵技術

Angela Jian
Angela Jian 簡琬庭
iPAS AI 應用規劃師 / AI Product Builder

一、學習目標

  1. 理解 LLM 幻覺(Hallucination) 的本質與為何 RAG 是最有效的緩解策略
  2. 掌握 RAG(Retrieval-Augmented Generation,檢索增強生成) 的完整五階段流程
  3. 了解 Embedding(嵌入) 的概念,以及向量資料庫(Vector Database) 的運作原理
  4. 區分語意搜尋(Semantic Search)關鍵字搜尋(Keyword Search) 的差異
  5. 比較 RAG vs 微調(Fine-tuning) 的適用情境,以及進階 RAG 技術(重排序、混合搜尋、查詢擴展)

二、核心內容

2.1 問題起點:LLM 的幻覺(Hallucination)

大型語言模型(LLM) 有一個根本性的問題:它會自信地生成錯誤資訊。這種現象稱為幻覺(Hallucination)——模型不說「我不知道」,而是流暢地「編造」一個聽起來合理的答案。

生活類比:

想像一個學生在考試中不留空白——不管有沒有念到,都把答案欄寫滿。他的字跡漂亮、語氣自信、結構完整,但閱卷老師一看,發現有些答案根本是他「即興發揮」的,沒有任何知識依據。這就是 AI 幻覺——外表流暢,內容虛假

LLM 幻覺的三大成因

成因說明
知識截止(Knowledge Cutoff)模型只有訓練截止日前的知識,對最新事件一無所知
訓練資料缺口(Training Data Gaps)特定領域(如公司內部文件、專業法規)在訓練資料中不存在
模式過度概化(Pattern Overgeneralization)模型將學到的語言模式套用到沒有依據的情境,生成「聽起來對」但實際錯誤的內容

幻覺的高風險應用情境

情境風險
醫療問診建議錯誤藥物劑量或診斷可能危及生命
法律條文引用引用不存在的判例或法條可能導致敗訴
財務數據分析虛構財報數字可能造成投資決策失誤
企業內部政策查詢引用不存在的公司規定可能造成合規問題

考試重點:幻覺的三大成因——知識截止訓練資料缺口模式過度概化——解釋了為什麼閉卷(靠記憶)的 LLM 不適合需要精確事實的任務,而 RAG 用「開卷考試」的方式解決了這個問題。


2.2 解法:RAG(Retrieval-Augmented Generation)

RAG(Retrieval-Augmented Generation,檢索增強生成) 是在 LLM 生成回答前,先從外部知識庫**檢索(Retrieve)**相關文件,再把這些文件作為「參考資料」注入提示詞,讓模型「有依據地」生成回答的技術架構。

生活類比:

傳統 LLM(閉卷考試):考試時不能帶參考資料,完全靠記憶作答。記得的答對,記不得的就猜(幻覺)。

RAG(開卷考試):考試時可以帶教科書和筆記。不會的題目查資料,答案有所本、有引用出處。RAG 就是讓 AI 從「閉卷考試」升級為「開卷考試」。

RAG 的核心優勢

優勢說明
降低幻覺模型有具體文件作為依據,不需要「猜測」
知識即時更新只需更新知識庫,不需重新訓練模型
可溯源性(Traceability)可標示回答來自哪份文件的哪一段
領域客製化接入企業內部文件庫,讓通用 LLM 變成公司專屬助理

2.3 RAG 五階段完整流程

RAG 的完整架構可分為**文件處理(離線)查詢處理(即時)**兩個階段:

【離線:文件入庫階段】
原始文件(PDF、Word、網頁)

第一階段:文件分塊(Document Chunking)

第二階段:Embedding 向量化

第三階段:存入向量資料庫(Vector Database)

【即時:查詢處理階段】
使用者提問

第四階段:查詢 Embedding + 相似度搜尋

第五階段:注入上下文 → LLM 生成回答

2.4 第一階段:文件分塊(Document Chunking / Ingestion)

文件分塊是將原始文件(PDF、Word、網頁、程式碼等)切分為較小的文本片段(Chunks),以便後續 Embedding 和檢索。

生活類比:

就像把一本 500 頁的教科書,按章節或段落撕成一張一張的單頁卡片——每張卡片各自代表一個概念,搜尋時只需找出最相關的那幾張卡片,而不是翻遍整本書。

分塊策略比較

策略說明適用情境
固定大小分塊(Fixed-size Chunking)每塊固定 N 個 Token,可設定重疊(Overlap)避免語意斷裂通用情境,實作簡單
語意分塊(Semantic Chunking)依語意邊界(段落、章節)分塊,保留完整語意單元文件結構清晰時效果更好
遞迴分塊(Recursive Chunking)先嘗試大分塊,若超過大小限制則遞迴細分混合長短段落的文件

分塊大小的取捨

分塊大小優點缺點
太小(< 100 Token)精確定位特定資訊缺乏上下文,語意不完整
適中(256–512 Token)平衡精確度與上下文完整性需根據文件類型調整
太大(> 1000 Token)上下文完整檢索精確度下降,注入 Prompt 的 Token 成本高

2.5 第二階段:Embedding(嵌入向量化)

Embedding(嵌入) 是將文字轉換為高維度數值向量(Vector) 的過程,讓電腦能計算兩段文字在「語意」上的相似程度。

生活類比:

把每個文字段落想像成地球上的一個地點,用 GPS 座標(經緯度)來表示。語意相近的文字,它們的「GPS 座標」(向量)就很接近——即使用詞完全不同。「心肌梗塞」和「心臟病發作」在語意空間中的距離很近;「心肌梗塞」和「今天天氣很好」則距離很遠。

Embedding 的技術細節

概念說明
向量維度(Vector Dimensions)常見 768、1536、3072 維,維度越高表達能力越強
Embedding 模型OpenAI text-embedding-3-large、Cohere Embed、BGE、E5 等
語意相似度(Semantic Similarity)向量間的距離反映語意相似程度

余弦相似度(Cosine Similarity)

最常用的向量相似度計算方式,計算兩個向量之間的角度——角度越小(余弦值越接近 1),語意越相近。

余弦相似度值語意關係
0.95 ~ 1.0幾乎相同語意
0.80 ~ 0.95高度相關
0.50 ~ 0.80部分相關
< 0.50語意不相關

考試重點Embedding(嵌入) 是將文字轉換為向量的關鍵技術,使電腦能做語意相似度計算。余弦相似度(Cosine Similarity) 是最常見的向量距離計算方式,值越接近 1 代表語意越相近。


2.6 第三階段:向量資料庫(Vector Database)

向量資料庫(Vector Database) 專門用來儲存和搜尋高維度向量,支援超高速的近似最近鄰搜尋(Approximate Nearest Neighbor, ANN)

生活類比:

傳統圖書館按書名(關鍵字)排列——你必須知道確切書名才能找到書。向量資料庫像是一座按主題意思組織的圖書館——「和心臟病相關的書」會自動聚集在一區,即使書名裡沒有「心臟」這個字也能找到。

主流向量資料庫比較

向量資料庫特色適用情境
Pinecone全托管雲端服務,易上手快速 PoC 與生產環境
Weaviate開源,支援混合搜尋(Hybrid Search)需要語意 + 關鍵字結合搜尋
Chroma輕量開源,本地端友好開發測試、本地 RAG 系統
FAISSMeta 開源,純向量搜尋引擎高性能場景,需自行管理
Qdrant開源,支援過濾(Filtering)需要根據 Metadata 過濾的場景
pgvectorPostgreSQL 擴充,向量 + 關聯式資料庫合一已有 PostgreSQL 基礎設施的團隊

向量資料庫 vs 傳統資料庫

面向傳統關聯式資料庫(如 MySQL)向量資料庫
搜尋方式精確比對(WHERE name = ‘X’)相似度搜尋(找最接近的向量)
查詢類型關鍵字、結構化查詢語意相似度查詢
資料類型結構化資料(表格)高維向量
擅長問題「找出姓名是張三的記錄」「找出語意最接近這個問題的文件段落」

2.7 第四階段:查詢處理(Query Processing)

當使用者提出問題時,RAG 系統進行以下即時處理:

  1. 查詢 Embedding:將使用者的問題轉換為向量(使用與文件入庫時相同的 Embedding 模型)
  2. 相似度搜尋:在向量資料庫中搜尋與問題向量最相近的 Top-K 個文件片段
  3. 檢索 Top-K Chunks:取出最相關的 K 個片段(通常 K = 3~10)

語意搜尋 vs 關鍵字搜尋比較

面向關鍵字搜尋(Keyword Search)語意搜尋(Semantic Search)
運作方式比對詞彙是否出現在文件中比較問題與文件的語意向量相似度
同義詞處理無法處理(「心臟病」找不到「心肌梗塞」)可以(語意相近自動匹配)
跨語言搜尋不支援多語言 Embedding 模型可支援
速度極快(倒排索引)較慢(向量計算,但 ANN 已大幅優化)
適用情境精確術語查詢(品號、姓名)概念性問題、自然語言查詢

考試重點語意搜尋(Semantic Search) 的核心優勢是理解「語意相似性」而非「字面相同」——即使問題與文件用詞完全不同,只要意思相近就能找到。這是 RAG 優於傳統關鍵字搜尋的關鍵。


2.8 第五階段:生成(Generation)

檢索到相關文件片段後,系統將其注入提示詞,讓 LLM 有依據地生成回答。

提示詞注入格式範例

你是一位企業內部知識助理。請根據以下參考文件回答問題。
若參考文件中沒有相關資訊,請明確告知「我在現有文件中找不到答案」,不要推測。

【參考文件】
[文件一] 員工手冊第三章第二節:年假申請須在出發前 7 個工作天提出申請…
[文件二] HR 政策更新 2024Q3:特殊情況可申請緊急年假…

【使用者問題】
我明天要請假,還來得及申請嗎?

2.9 RAG vs 微調(Fine-tuning):如何選擇?

RAG 和微調(Fine-tuning)是讓 LLM 適應特定領域的兩種主要方法,適用情境不同:

比較面向RAG微調(Fine-tuning)
目的提供外部即時知識,降低幻覺改變模型的「行為風格」與「能力」
知識更新即時——更新知識庫即可,無需重新訓練需要重新訓練,更新週期長
成本較低(主要是向量資料庫與 API 成本)較高(需要 GPU 計算資源)
適合任務需要參考最新文件、公司內部資料需要調整模型語氣、格式、特定領域術語的使用方式
可溯源性高(可標示引用來源)低(模型內化知識,無法溯源)
最佳用例企業知識庫問答、法規查詢、客服機器人特定語氣寫作、特定格式輸出、醫療/法律專業術語理解

生活類比:

RAG 就像給助理一個可以隨時查閱的資料夾——他不需要把所有資料背起來,要用的時候查資料夾就好,資料夾可以隨時更新。

微調 就像讓助理去進修一學期的法律課——課上完後他真的懂法律了,但這個「懂」是內化在他的知識裡,你沒辦法知道他在回答時「引用」的是哪堂課的什麼內容。

考試重點RAG 優先選擇當知識需要即時更新、資料有機密性或可溯源需求(如企業知識庫)。微調優先選擇當需要改變模型的輸出格式、語氣風格,或讓模型真正「內化」特定領域的術語使用習慣。


2.10 進階 RAG 技術

基礎 RAG 的最大瓶頸是檢索品質(Retrieval Quality)——如果取回的 Chunks 不夠準確,就算 LLM 再強也無法給出好答案。進階 RAG 技術解決這些瓶頸:

重排序(Re-ranking)

初步向量搜尋取回 Top-20 個候選片段,再用一個更精確(但更慢)的重排序模型(Cross-encoder) 對這 20 個片段重新排序,最終只取 Top-3~5 注入提示詞。

生活類比:

先由圖書館館員(向量搜尋)快速找出 20 本大概相關的書,再由專家(重排序模型)細讀這 20 本書的目錄,選出最精準的 3 本。

結合語意搜尋(Semantic Search)+ 關鍵字搜尋(Keyword Search / BM25),再用 RRF(Reciprocal Rank Fusion)融合兩個排名,取長補短。

場景哪種搜尋更好
「心臟病怎麼預防?」(概念性問題)語意搜尋
「請找出編號 A-2024-0312 的合約條款」(精確術語)關鍵字搜尋
大多數企業場景(兩者混合)混合搜尋

查詢擴展(Query Expansion)

在搜尋前,先讓 LLM 對原始問題產生多個改寫版本,再用多個版本分別搜尋,合併結果以提升召回率(Recall)。


2.11 RAG 工具生態系統

工具類型代表工具功能
RAG 框架LangChain串接 LLM、向量資料庫、工具的全功能框架
RAG 框架LlamaIndex專注於文件索引與 RAG 的輕量框架
向量資料庫Pinecone / Chroma / FAISS / Weaviate儲存與搜尋 Embedding 向量
Embedding 模型OpenAI text-embedding-3 / Cohere Embed / BGE將文字轉換為向量
LLM APIOpenAI / Anthropic / Google生成最終回答
評估工具RAGAS / TruLens評估 RAG 系統的檢索與生成品質

2.12 RAG 的限制

RAG 不是萬能的,它有幾個關鍵限制需要了解:

限制說明
檢索品質瓶頸如果相關文件根本不在知識庫中,或 Embedding 品質差,RAG 無法彌補
情境視窗限制(Context Window Limit)能注入提示詞的 Chunks 數量受限於模型的 Context Window,不能無限增加
分塊策略影響大分塊切得不好(如在句子中間截斷),可能導致語意不完整,影響檢索和生成品質
延遲增加(Latency)RAG 比直接呼叫 LLM 多了向量搜尋的時間,對低延遲應用有影響
知識庫維護成本文件更新、分塊、重新 Embedding 需要持續的維運工作

三、關鍵名詞中英對照

中文英文說明
檢索增強生成RAG (Retrieval-Augmented Generation)先檢索外部文件再生成回答的 AI 架構
幻覺HallucinationLLM 自信地生成錯誤或虛構資訊的現象
嵌入Embedding將文字轉換為高維數值向量的技術
向量Vector用數值陣列表示資料的數學形式
向量資料庫Vector Database專門儲存和搜尋高維向量的資料庫
余弦相似度Cosine Similarity計算兩向量夾角以衡量語意相似度的方法
語意搜尋Semantic Search基於語意相似度(而非字面比對)的搜尋方式
關鍵字搜尋Keyword Search基於詞彙字面比對的傳統搜尋方式
文件分塊Chunking將長文件切分為較小片段以利 Embedding 的過程
文本片段Chunk分塊後的單一文件片段
近似最近鄰搜尋ANN (Approximate Nearest Neighbor)在向量空間中快速找到最相似向量的演算法
重排序Re-ranking對初步檢索結果用更精確模型重新排序的技術
混合搜尋Hybrid Search結合語意搜尋與關鍵字搜尋的方式
查詢擴展Query Expansion將原始問題改寫為多個版本以提升搜尋召回率
知識截止Knowledge CutoffLLM 訓練資料的時間截止點,之後的事件模型不知道
可溯源性Traceability能追蹤 AI 回答來自哪份來源文件的能力
召回率Recall相關文件中有多少比例被成功找到的指標
準確率Precision找到的文件中有多少比例是真正相關的指標

四、考試重點提示

考試重點RAG(Retrieval-Augmented Generation) 解決 LLM 幻覺問題的核心邏輯是「開卷考試」——讓模型在回答前先查閱外部知識庫,有所依據才生成答案,而不是靠記憶猜測。

考試重點:RAG 的五個核心階段:①文件分塊(Chunking)→ ②Embedding(向量化)→ ③存入向量資料庫 → ④查詢 Embedding + 相似度搜尋 → ⑤注入上下文 + LLM 生成回答。

考試重點Embedding(嵌入) 是將文字轉為高維向量,使電腦能計算語意相似度。余弦相似度(Cosine Similarity) 是最常用的計算方式,值越接近 1 代表語意越相近。

考試重點語意搜尋(Semantic Search) vs 關鍵字搜尋(Keyword Search)——語意搜尋能處理同義詞和概念性問題(「心臟病」能找到「心肌梗塞」相關文件);關鍵字搜尋只能做字面比對。混合搜尋(Hybrid Search) 結合兩者優點。

考試重點RAG vs 微調(Fine-tuning) 的選擇——知識需要即時更新、需要可溯源引用 → 選 RAG;需要改變模型輸出風格、讓模型真正內化特定術語 → 選微調。兩者不互斥,可以同時使用。

考試重點:RAG 的最大瓶頸是檢索品質(Retrieval Quality)——LLM 再強,如果檢索回來的文件不相關,生成的答案也會出錯。「Garbage In, Garbage Out(垃圾進,垃圾出)」同樣適用於 RAG 系統。


隨堂小測驗

Q1. 以下哪個類比最能準確描述 RAG(Retrieval-Augmented Generation)如何解決 LLM 幻覺問題?

  • A. 給學生更多時間背書,讓他記憶力更好
  • B. 把閉卷考試改為開卷考試,讓學生考試時可以查閱參考資料作答
  • C. 換一個更聰明的學生來考試
  • D. 讓老師提前公布考題答案

Q2. 在 RAG 系統中,Embedding(嵌入) 技術的主要作用是什麼?

  • A. 將文件壓縮成更小的檔案以節省儲存空間
  • B. 將文字翻譯成多種語言以支援跨語言搜尋
  • C. 將文字轉換為高維數值向量,使電腦能計算兩段文字在語意上的相似度
  • D. 將長文件自動摘要為短文字以加快處理速度

Q3. 某企業 RAG 系統在搜尋「如何申請醫療假」時,無法找到內部文件中關於「病假申請流程」的段落,因為文件中用的是「病假」而非「醫療假」。以下哪種解法最能根本解決這個問題?

  • A. 把所有文件中的「病假」全部手動改成「醫療假」
  • B. 改用語意搜尋(Semantic Search)——它能理解「醫療假」和「病假」語意相近,自動匹配
  • C. 增加向量資料庫的儲存容量
  • D. 要求使用者改用更精確的關鍵字提問

Q4. 以下哪個情境最適合選擇 RAG 而非微調(Fine-tuning) 來強化 LLM?

  • A. 希望 LLM 在回答時永遠使用正式公文的語氣與格式
  • B. 希望 LLM 能查閱企業最新的每日股價報告並根據內容回答問題
  • C. 希望 LLM 能更精準地理解醫學術語,即使訓練資料中醫學文字比例偏低
  • D. 希望 LLM 輸出的 JSON 格式符合特定 Schema

Q5. 重排序(Re-ranking) 技術在進階 RAG 系統中的作用是?

  • A. 對用戶的提問進行改寫,讓問題更清晰
  • B. 初步向量搜尋取回多個候選片段後,用更精確的模型重新評分排序,選出最相關的少數片段注入提示詞
  • C. 將文件庫中的所有文件重新按時間順序排列
  • D. 根據使用者的歷史查詢記錄調整向量資料庫的索引

解答與解析

題號答案解析
Q1BRAG 的核心概念是將 LLM 從「閉卷考試」升級為「開卷考試」——在生成答案前先從外部知識庫檢索相關文件,模型有文件依據才生成回答,大幅降低幻覺。選 A 比喻的是提升模型本身能力(更大規模訓練),選 C 是換更好的基礎模型,選 D 是提示詞工程(直接給答案),都不是 RAG 的運作邏輯。
Q2CEmbedding(嵌入) 的功能是將文字轉換為高維數值向量,使電腦能用數學計算(如余弦相似度)量化兩段文字的語意相似程度。這是 RAG 能做語意搜尋的基礎——沒有 Embedding,就只能做字面比對的關鍵字搜尋。選 A 是壓縮技術、選 B 是翻譯技術、選 D 是摘要技術,都不是 Embedding 的定義。
Q3B這是同義詞問題——「醫療假」和「病假」意思相同但用詞不同,關鍵字搜尋無法處理(只能比對字面),而語意搜尋(Semantic Search) 透過 Embedding 向量計算能識別兩者語意相近,自動找到相關文件。選 A 是治標不治本的人工補救;選 C 增加儲存容量與這個問題無關;選 D 要求使用者改變提問習慣是不切實際的解法。
Q4B每日股價報告是即時更新的資料,LLM 訓練截止日後的資料它無從得知。RAG 只需將最新報告加入知識庫,無需重新訓練,是處理即時動態資料的最佳選擇。選 A(公文語氣格式)和選 D(特定 JSON Schema)是改變模型輸出行為的需求,適合微調;選 C(醫學術語理解)是讓模型內化特定領域知識,也適合微調
Q5B重排序(Re-ranking) 是進階 RAG 的兩階段檢索策略:第一階段用快速的向量搜尋取回較多候選片段(如 Top-20),第二階段用更精確但較慢的 Cross-encoder 重排序模型對這些候選片段重新評分,只取最高分的 3~5 個注入提示詞,大幅提升最終注入上下文的相關性。選 A 是查詢擴展(Query Expansion)的描述;選 C、D 都不是重排序的功能。