EN

1.2 什麼是檢索增強生成(RAG)?

RAG 的定義,以及一次問答從頭到尾經過哪三個步驟。

RAG下一篇 →

上一節講了標準 LLM 的幾個限制:知識過期、會幻覺、不懂私有資料、說不出出處。檢索增強生成(Retrieval-Augmented Generation,簡稱 RAG) 就是針對這些問題設計的一種做法。

這個名詞和做法來自 2020 年 Lewis 等人發表的論文《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》,後來成為把 LLM 接上外部知識最常見的方式。

核心想法

一句話:在模型回答之前,先加一個「查資料」的步驟。

標準的 LLM 只能靠訓練時學到的參數(可以想成它腦袋裡的記憶)回答。RAG 多做了一件事:先根據問題,去外部的知識來源找出相關的內容,再把這些內容當作**上下文(context)**交給模型,讓它參考著回答。

可以把它想成「閉書考試」和「開書考試」的差別:

  • 一般 LLM:閉書考試,全靠記憶,記錯了或沒學過就慘了。
  • RAG:開書考試,先翻書找到相關的幾頁,再照著那幾頁寫答案。

三個步驟

RAG 一次問答可以拆成三步,名稱本身就是這三步:

  1. 檢索(Retrieve):拿使用者的問題,到知識庫裡找最相關的幾段內容。
  2. 增強(Augment):把找到的內容和原本的問題合在一起,組成一份新的提示詞。「增強」指的就是用外部資料充實提示詞。
  3. 生成(Generate):把這份提示詞交給 LLM,它根據裡面的資料寫出最後的回答。

RAG 的三個步驟:問題進來,先檢索,再把結果和問題合併,最後交給 LLM 生成答案

圖裡的「外部知識庫」可以是公司文件、資料庫、網頁、論文,任何你想讓模型參考的文字資料。它和模型是分開的,所以更新資料不需要動模型。

舉個例子

使用者問:「我們公司的特休假怎麼算?」

沒有 RAG 的時候

模型沒看過你們公司的人事規章,只能講一般的勞動法規,或是編一個聽起來很像的制度。使用者可能就這樣被誤導了。

有 RAG 的時候

  1. 檢索:系統用這個問題去搜尋人事規章,找到「特休假」那一章的幾段文字。
  2. 增強:把這幾段文字和問題組成提示詞,大意是「請根據以下內容回答問題:……」。
  3. 生成:模型照著這些規定回答,還可以順便說明是根據哪一條。

注意模型本身一個字都沒變。變的是它回答時手上拿到的資料。

和「直接把所有文件塞給模型」有什麼不同?

有人會想:既然要給資料,為什麼不乾脆把全部文件都貼進去?原因有兩個:

  • 放不下:模型一次能讀的長度有限(叫做上下文視窗),而知識庫動輒幾千幾萬頁。
  • 太浪費、太雜:塞太多不相關的內容,成本變高、速度變慢,模型也比較容易被干擾。

所以 RAG 的「檢索」這一步很重要:它負責在大量資料裡,只挑出真正有用的那幾段。

← 全部文章