Home
Explore Uedu
Student Console
Register as Member/Login
(2) In future presentations of the research findings, in addition to the course project website and public presentations, your real name and personal information will not appear in this research report. If you are interested in the research results, we can provide you with an executive summary after the study is completed.
問卷中心
Teacher Console
Course Setup
Support & Messages
Uptime Data

UeduGPTs

--

Jupyters

0

Local AI

--

CISOSE26 本地 AI UG26
臺北 AQI 17 · 臺中 AQI 41 · 臺南 AQI 29 · 高雄 AQI 39

AI Reply Desktop Notifications

Show a desktop notification when the AI TA finishes replying

Chat Message Notifications

Notify me when classmates post messages in the forum

Sound notification

Play an alert sound whenever there is a new notification

生成式 AI
生成式 AI

檢索增強生成(RAG):讓 AI 引用你的資料回答

解決 LLM 知識過時與幻覺的主流工程做法。

檢索增強生成(RAG):讓 AI 引用你的資料回答 概念插圖
概念示意插圖(AI 生成,僅作輔助理解)
研究  ·  約 14 分鐘  ·  生成式AIRAG檢索研究

問題:參數化知識的三個限制

LLM 把知識壓進權重(參數化記憶),這帶來三個限制:知識有截止日期會幻覺(無依據時仍流暢虛構)、不含私有資料檢索增強生成(RAG) 的核心是把知識外部化為可檢索的非參數記憶,回答前先檢索、再以證據為條件生成:

$$ p(y\mid x)=\sum_{z\in\mathcal{Z}}\underbrace{p_\eta(z\mid x)}_{\text{檢索器}}\;\underbrace{p_\theta(y\mid x,z)}_{\text{生成器}} $$

其中 $z$ 是檢索到的文件。實務上多取 top-$k$ 段落近似這個邊際化。

索引:切塊與向量化

離線階段把語料建成可檢索索引:

  1. 切塊(chunking):文件切成適當粒度的段落。太大則檢索不精準、稀釋訊號;太小則語意破碎。常用重疊滑窗或依語意邊界切。
  2. 編碼:用嵌入模型把每塊轉成向量 $\mathbf{d}=\mathrm{Enc}(z)$,存入向量資料庫

檢索:雙編碼器與稠密檢索

查詢時把問題編碼成 $\mathbf{q}=\mathrm{Enc}(x)$,以相似度排序取 top-$k$:

$$ \mathrm{score}(x,z)=\mathbf{q}^\top\mathbf{d}\quad\text{或}\quad \cos(\mathbf{q},\mathbf{d}) $$

這種 bi-encoder(雙塔) 架構讓文件向量可預先算好、以 ANN(如 HNSW)次線性檢索。常見強化:

  • 混合檢索:稠密向量 + 稀疏的 BM25 關鍵字,兼顧語意與精確詞。
  • 重排序(re-ranking):用 cross-encoder 對 top-$k$ 精排,準度更高但較慢。
  • 查詢改寫/HyDE:先讓 LLM 改寫或生成假設答案再檢索,改善召回。

生成:以證據為條件並標註來源

把「檢索段落 + 問題」組成提示,要求模型僅依據提供的證據作答並引用來源。這帶來三大效益:時效性(更新索引即可,無需重訓)、可溯源(附出處、可查證)、私有知識(接上專屬語料)。

評估與失敗模式

RAG 的品質拆成兩段評估:檢索(召回率、命中率、nDCG)與生成(忠實度 faithfulness/是否被證據支撐、答案相關性)。常見失敗:檢索召回不足、上下文過長造成「中間遺失(lost in the middle)」、模型忽略證據仍憑記憶答。這些是 RAG 工程的調校重點。

RAG vs. 微調,以及 Uedu 實例

  • RAG:知識外置、即時可換,適合常變動的事實與可溯源需求。
  • 微調:把風格/格式/領域能力寫進權重,適合穩定的行為。 二者互補常並用。本平台的 ClassroomGPT 教材檢索與頻道知識庫即 RAG 實作:教師上傳 PDF 被切塊、向量化,學生提問先檢索相關段落,AI 再「引用 [來源 N]」作答——正是「讓 AI 讀你的資料,而非憑記憶」。

深入探討(研究所視角)

把 RAG 寫成機率模型:邊際化與後驗近似

入門把 RAG 視為「先檢索、再生成」的工程管線,但更深一層的觀點是把它寫成一個對隱變數檢索結果做邊際化(marginalization) 的生成模型。設查詢 $x$、目標輸出 $y$、檢索器 $p_\eta(z\mid x)$ 從語料庫挑出文件 $z$,生成器 $p_\theta(y\mid x,z)$ 條件化於文件作答,則理論上應對所有候選文件求和:

$$ p(y\mid x)=\sum_{z\in\mathcal{Z}} p_\eta(z\mid x)\,p_\theta(y\mid x,z) $$

原始 RAG(Lewis 等人)區分 RAG-Sequence(整段 $y$ 共用同一 $z$)與 RAG-Token(逐 token 重新邊際化 $z$)。由於 $|\mathcal{Z}|$ 可達數百萬,精確求和不可行,實務以 top-$k$ 截斷近似邊際;這等價於用檢索分布做重要性取樣,截斷誤差由未被召回的高機率文件的尾部質量決定。關鍵在於 $p_\eta(z\mid x)$ 通常透過雙塔嵌入內積以 $\mathrm{softmax}$ 定義,使檢索分數可微,梯度能回傳到查詢編碼器——這正是把檢索「端到端」併入訓練、而非當成凍結前處理的理論基礎。

檢索的可訓練性與 SOTA 變體

最大的工程難點是文件索引隨參數更新而過時:每次更新編碼器都需重建 ANN 索引。REALM 以非同步刷新索引、stop-gradient 於文件側塔處理此問題;ATLAS 進一步展示檢索器可由生成器的蒸餾訊號監督,例如以「該文件對降低 $y$ 的困惑度的貢獻」作為偽標籤訓練檢索器(attention distillation / perplexity distillation)。更晚近的方向把檢索內化進解碼:FiD(Fusion-in-Decoder) 對每篇文件獨立編碼、僅在解碼器交叉注意力處融合,使複雜度對 $k$ 線性而非平方;kNN-LM 則直接在輸出層對最近鄰 token 分布做插值,等價於一種非參數記憶。Self-RAG 引入反思 token 讓模型自行決定「是否檢索」與「是否採信」,把檢索從固定步驟變為策略。

開放問題與理論連結

RAG 並不能消除幻覺,只是把問題從「參數記憶」轉移到「對檢索證據的忠實度(faithfulness)」。一個尚未解決的張力是知識衝突:當檢索證據與模型參數先驗矛盾時,缺乏校準良好的仲裁機制,模型可能既不忠於證據也不誠實標示不確定性。理論上這連結到校準(calibration) 與選擇性預測——理想系統應在檢索覆蓋不足時棄答,但語言模型的信賴度普遍過度自信。另一條開放線是 長脈絡 LLM 是否使 RAG 過時:經驗上「中間遺失(lost in the middle)」現象顯示注意力對長脈絡中段資訊利用不均,且把整庫塞進脈絡的計算成本隨序列長度呈平方成長,使檢索式稀疏存取在效率上仍具理論優勢。最後,RAG 與檢索器—生成器聯合最佳化、與 retrieval-augmented 預訓練(如 RETRO 以分塊交叉注意力在預訓練階段就引入鄰居)共同指向一個更深的命題:把「記憶」與「推理」解耦,讓參數專注於組合與推理、把事實外包給可更新的非參數記憶體,可能是比單純放大參數更有資料效率的擴展路徑。

接著問 AI 助教

點一下複製提問,到 ClassroomGPT、優學伴(AIDA)或你的 UeduGPTs 頻道貼上,AI 會引用本專區內容回答。

AI 共讀助教正在陪你讀:檢索增強生成(RAG):讓 AI 引用你的資料回答
嗨!我是這篇文章的共讀助教,只根據〈檢索增強生成(RAG):讓 AI 引用你的資料回答〉的內容回答。可以問我「解釋某段」「舉個例子」「出題考我」,或反白文中段落後點下方「解釋選取段落」。