檢索增強生成(RAG)
讓 LLM 在生成前先從外部資料源檢索相關資訊的技術,突破訓練資料限制並減少幻覺;含「要不要上 RAG」的實務決策原則。
定義:檢索增強生成(Retrieval-Augmented Generation, RAG)是一種讓大型語言模型(LLM)在生成回應前,先從外部資料源檢索相關資訊並納入上下文的技術。2020 年首次提出,現已成為現代 AI 系統廣泛採用的方法,用來突破模型訓練資料的時效與領域限制。
RAG 的核心想法是把 LLM 的生成流程與文件查詢(或網路搜尋)結合:與其期待模型「記得」所有知識,不如在回答當下把相關資料找出來餵給它。這讓靜態的預訓練模型能處理最新資訊與領域特定知識,同時因為回應可以附上來源,提高了透明度與可驗證性。
運作流程
RAG 分為三個關鍵階段:
- 資料準備:將參考資料轉換為嵌入向量(embedding,向量空間中的數值表示),存入向量資料庫供檢索。可處理非結構化文字、半結構化資料或知識圖譜等結構化資料。
- 檢索(Retrieval):根據使用者查詢,文件檢索器從資料庫中選出最相關的文件,檢索方法取決於所用的索引類型。
- 生成(Generation):透過提示工程將檢索到的資訊注入 LLM,模型基於查詢與檢索文件生成輸出。部分系統會再加入重新排序(re-ranking)、上下文選擇與微調。
優點與動機
- 讓 LLM 使用領域特定或更新的資訊,突破訓練資料的限制。
- 減少 AI 幻覺(hallucination)——例如模型描述不存在的政策、推薦虛構的法律案例。
- 降低重新訓練的需求,節省計算與財務成本。
- 回應可附上來源,提高透明度與可驗證性。
限制與挑戰
- 幻覺未完全解決:LLM 仍可能圍繞檢索到的來源資料產生幻覺,例如從章節標題斷章取義而不理解上下文。
- 認知限制:模型難以辨識自身資訊不足的情況,在該表達不確定時仍可能硬生成答案。
- RAG 投毒(RAG poisoning):系統可能檢索到事實正確但具誤導性的來源;面對衝突資訊時難以判斷準確性,也可能混合過時與更新的資訊產生誤導性回應。
- 流程限制:向量搜尋可能遺漏回答問題所需的關鍵事實;重新訓練的需求減少但未完全消除。
要不要上 RAG:實務決策(檢索 vs 全塞)
幫內部系統加 AI 問答助理時的典型決策:要做 RAG(先建檢索系統,AI 回答前先去搜相關文件),還是「全塞」(把所有文件整包放進 AI 的上下文)?
實際的判斷依據:先量文件總量,再選架構。若文件總量遠低於模型上下文上限(例如 20 萬 token,約十幾萬中文字),全塞+快取(同樣的文件內容重複使用有折扣)就夠,回答品質還更穩——RAG 反而引入「搜不到對的段落」這個新故障模式。等文件量真的超過上限再上 RAG。
- 決策心得:不要因為某技術流行就用它。這個原則後來也用在個人 wiki 上。
- 附帶的驗收要求:AI 助理的每個回答必須附出處(哪份文件哪一段),不然沒辦法驗證它是不是在瞎掰——不管用 RAG 還是全塞都適用。
關鍵改進技術
- 編碼器改進:稀疏向量(編碼詞彙身分)與密集向量(編碼語意)的取捨與混合;以點積和近似最近鄰搜尋(ANN)最佳化相似度計算;晚期互動(late interaction)在檢索後做更精確的詞彙比較。
- 檢索中心方法:以逆克漏字任務(ICT)預訓練檢索器;監督式檢索最佳化讓檢索機率對齊生成模型的機率分佈;訓練中以重新排序優先考慮最相關文件。
- 重排序模型(Rerank):在檢索後、生成前加入專用 rerank 模型(如 Cohere Rerank、bge-reranker),對初步檢索結果重新排序,能明顯提升 top-k 品質,是實務上 CP 值最高的 RAG 改進手段之一。
- 語言模型改進:Retro 模型重新設計語言模型以納入檢索器,使小 25 倍的網路達到相當的困惑度;Retro++ 為更可重現的版本,包含上下文內 RAG。
- 分塊策略(Chunking):固定長度重疊分塊(快速簡便,重疊維持語意上下文)、基於語法的分塊(以句子切分,如 spaCy、NLTK)、依文件格式分塊(尊重程式函式、HTML 表格、PDF 等內建結構,可用 LangChain、Unstructured 等函式庫)。
- 混合搜尋:結合傳統文字搜尋與向量資料庫結果,合併後再輸入語言模型,彌補單一方法的不足。
變體:GraphRAG
GraphRAG 是微軟提出的 RAG 變體:先用 LLM 把文件庫建成知識圖譜,查詢時走圖譜找關聯,而不是純向量相似度。對「跨文件的全局問題」(例如:這批文件的共同主題是什麼)效果比傳統 RAG 好很多,但知識圖譜的索引建置成本明顯較高。
主要應用場景
- 企業應用:讓聊天機器人存取公司內部資料。
- 權威來源回應:基於授權資訊生成答案。
- 醫療領域:讓 LLM 輸出建立在外部醫學知識來源之上(評估、倫理與臨床可靠性仍有挑戰)。