檢索增強生成 (RAG, Retrieval-Augmented Generation)

Foundation Model 的四大限制

RAG 解決的是 foundation model 的根本限制:

限制 說明 後果
知識截止日(Cutoff) 訓練資料凍結在某時間點 被問近期事件 → 自信地給過時/捏造資訊
缺特定領域深度 高度專業化資料出現頻率不足 回應不完整/不相關(如罕見遺傳疾病)
缺私有/專有資料 你的公司資料不在公開領域 不知道你的業務細節
失去信任 無法引用來源 用戶要麼盲信、要麼自行驗證
Hallucination 是上述限制的症狀

訓練資料本身含矛盾/錯誤,加上 temperature、top-k sampling 的隨機性,模型對所有後續內容分配機率(含錯的)。且模型無法區分「知道」與「不知道」,即使錯也很自信 —— 一份說服力強但錯誤的醫療報告可能危及生命。


什麼是 RAG?四個核心元件

利用具權威性的外部資料提升模型輸出的準確性、相關性、實用性:

1. Ingestion(攝取)  ── 權威資料載入資料來源(如 Pinecone vector DB)
2. Retrieval(檢索)  ── 根據用戶 query 檢索相關資料
3. Augmentation(增強)── 檢索結果 + 用戶 query 組合成 prompt(提供 context)
4. Generation(生成) ── 模型根據增強後 prompt 生成輸出
RAG 比替代方案更划算

相比自己訓練/重訓模型fine-tuning、或把大量資訊塞進 context window,RAG 更划算(foundation model 製作成本高昂;送的 context 越大成本越高)。還帶來:即時/專有資料存取、可引用來源建立信任、更強控制(資料授權、guardrail、可追溯、獨立調整每個元件)。


先問:你真的需要 RAG 嗎?

Ground Truth Evaluation(基準評估)

部署任何應用都要知道它何時正常工作。確定一組 query + 預期答案,維護這個評估集,才能知道哪裡要改進、改進是否真的有效。RAG 只是優化手段之一,還有 query rewriting、chunk expansion、knowledge graph 等。


第一步:Ingestion(攝取)

步驟 做法
Chunking(分塊) 把文件切成更小片段;依資料類型、query 類型、結果用途選擇 chunking 策略
建立 Vector Embedding 用 embedding model(特殊 LLM)把每個 chunk 轉成 vector(含義的數值表示)→ 可搜尋語義相似項
載入 Vector Database 通常 offline 進行,獨立於應用工作流程;資料有變動可即時更新 index

第二步:Retrieval(檢索)

方式 機制 擅長
Semantic Search dense vector 用戶用不同語言談同一主題
Lexical/Keyword Search sparse vector 內部/特定領域語言(縮寫、產品名、團隊名)
Hybrid Search 兩者結合 兼顧上述兩種情況

流程:從 query 建 vector embedding → 查 hybrid index(或同時查 dense + sparse index)→ 合併去重 → reranking model 依統一 relevance score 重排 → 回傳最相關結果。


第三、四步:Augmentation + Generation

把搜尋結果和用戶 query 組合成增強 prompt:

QUESTION: <用戶的問題>
CONTEXT:  <用來作為 context 的搜尋結果>

Using the CONTEXT provided, answer the QUESTION. Keep your answer
grounded in the facts of the CONTEXT. If the CONTEXT doesn't contain
the answer, say you don't know.
「If you don't know, say you don't know」

把搜尋結果作為 context,鼓勵模型優先用紮實的事實 → 大幅降低 hallucination。


Agentic RAG(AI Agent 作為 orchestrator)

傳統 RAG 簡單(vector DB + 一次帶 context 的 prompt)。隨 AI agent 興起,agent 成為核心 RAG 元件的 orchestrator

重點轉移

Agentic RAG 不只是搜尋正確資訊輔助回應,而是決定要問哪些問題、用哪些工具、何時使用,然後聚合結果紮實回答。在簡化版中,LLM 就是 agent,自行決定用哪些 retrieval 工具。


常見 Deep Dive / 設計考量