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

  • 什么是 RAG?
  • 為什么使用 RAG?
  • LLM 微調 和 RAG?
  • 實戰

什么是 RAG?

RAG 在論文《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》中被引入,原論文是這樣描述的:

探索了一種 通用的 檢索增強生成(RAG)微調方案 —— 這種模型結合了 預訓練的參數化記憶非參數化記憶,用于語言生成。提出的 RAG 模型中,參數化記憶是一個預訓練的 seq2seq 模型,而 非參數化記憶是一個由預訓練神經檢索器訪問的維基百科稠密向量索引

以提示“地球上的第一種哺乳動物是什么時候出現的?”為例,RAG 可能會提取關于“哺乳動物”、“地球歷史”和“哺乳動物進化”的文檔。這些支持性文檔隨后被連接為上下文,與原始輸入一起輸入到 seq2seq 模型中,該模型生成實際輸出。
因此,RAG 擁有兩種知識來源:seq2seq 模型在其參數中存儲的知識(參數化記憶)以及 RAG 從文檔庫中檢索到的段落所存儲的知識(非參數化記憶)

在這里插入圖片描述
圖 1:概覽。將一個預訓練的檢索器(查詢編碼器 + 文檔索引)與一個 預訓練的 seq2seq 模型(生成器)相結合,并進行端到端微調。對于查詢 xxx,我們使用 最大內積搜索(MIPS)找到前 KKK 篇文檔 ziz_izi?。在得到最終預測 yyy 時,將 zzz 視為潛在變量,并對不同文檔下的 seq2seq 預測結果進行邊際化處理。

每個步驟可以大致分解為:

  • 檢索:根據查詢從源中尋找相關信息。例如,根據問題從數據庫中獲取相關的維基百科文本段落。
    • 構建/索引文檔庫(預處理):把外部知識源(比如維基百科)拆分成文檔/段落編碼成向量建立檢索索引(如向量索引,支持 MIPS/ANN 查詢)。
    • 查詢編碼與檢索把輸入查詢 xxx 用檢索器的查詢編碼器編碼,進行向量檢索,返回前 KKK 個最相關的文檔 z1,...,zKz_1,...,z_Kz1?,...,zK?
  • 增強:使用相關檢索到的信息來修改輸入到生成模型(例如 LLM)中的內容。將檢索到的文檔與生成器結合,即把檢索到的文檔作為 條件信息 喂入 預訓練的 seq2seq 生成器。這里有兩種常見形式:
    • RAG-Sequence(或 RAG-固定):對整個輸出序列都使用同一組檢索段落作為上下文。
    • RAG-Token(或 RAG-逐 token):生成每個 token 時可使用不同的檢索段落(更細粒度)。
  • 生成:根據輸入生成輸出。例如,在 LLM 的情況下,根據輸入提示生成一段文本。
    • 生成與邊際化(推理):將文檔 zzz 視為潛在變量,計算最終輸出的概率為對不同檢索文檔的邊際化 p(y∣x)=∑zp(z∣x)p(y∣x,z)\;p(y|x)=\sum_z p(z|x)\,p(y|x,z)p(yx)=z?p(zx)p(yx,z)。實現上可以對每個 ziz_izi? 生成 p(y∣x,zi)p(y|x,z_i)p(yx,zi?) 再加權求和,得到最終預測。
    • 端到端微調(訓練):將檢索器(查詢編碼器)和生成器一起端到端微調,使得檢索更契合生成任務、生成更能利用檢索到的證據。訓練時通常會最大化邊際似然或相應損失。
    • (可選)輸出后處理與可追溯性:返回生成文本同時附加證據來源(即用到的檢索片段),便于驗證與更新知識庫。

為什么使用 RAG?

Retrieval Augmented Generation: Streamlining the creation of intelligent natural language processing models

LLM(大型語言模型)的參數,本質上代表了人類使用詞語構造句子的一般模式。參數化的知識讓 LLM 在回答通用問題時非常有用,但對于想深入探索某類特定信息的用戶來說,這種方式并不夠。

RAG(檢索增強生成)可以將生成式 AI 服務與外部資源連接起來,尤其是那些包含最新技術細節的資源。它被稱為一種“通用微調方案”,因為幾乎任何 LLM 都可以用它來連接幾乎任何外部資源。

  • 使用自定義數據。許多 基礎 LLMs 使用互聯網規模文本數據進行訓練。這意味著它們具有強大的語言建模能力,然而,它們 通常缺乏特定領域的知識。RAG 系統可以向 LLMs 提供 特定領域的數據,如醫療信息或公司文檔,從而 根據特定用例定制它們的輸出
  • RAG 會為模型 提供可引用的來源,就像科研論文中的腳注一樣,讓用戶能夠核查模型的說法。
  • 防止幻覺。LLMs 非常出色,但它們容易產生潛在的幻覺,也就是說,生成看似正確但實際上不正確的內容。RAG 管道可以通過提供事實性(檢索到的)輸入來幫助 LLMs 生成更符合事實的輸出。即使從 RAG 管道生成的答案看起來不正確,由于檢索功能,也可以獲取其來源的資料。
  • RAG 的真正優勢在于其靈活性改變預訓練語言模型所知的內容需要用新文檔重新訓練整個模型。而使用 RAG,只需更換其用于知識檢索的文檔,就能控制它所知的內容。通過用舊版維基百科數據集替換原始數據集,并詢問諸如“冰島的總理是誰?”等問題來測試這一行為。結果顯示,RAG 利用替換進來的語料庫中的知識調整了其答案,盡管參數化知識保持不變。這種適應方法在事實隨時間變化的情況下非常有價值。

RAG 也可以是一個比在特定數據上微調 LLM 更快的解決方案。

LLM 微調 和 RAG?

LLM 微調(Fine-tuning)在下游數據上更新模型參數,使模型直接 在內部參數中編碼任務或領域知識。包括全量微調,也包括參數高效微調(如 LoRA、Prompt-Tuning、Adapters 等,統稱 PEFT)。LoRA 是典型方法之一,能顯著減少可訓練參數并節省顯存。

RAG(Retrieval-Augmented Generation):把 外部非參數化知識庫(文檔/段落向量索引)與生成模型結合,在 推理時檢索相關文檔并以此條件化生成,生成端對不同檢索結果做邊際化或融合以產出答案;檢索庫可以獨立更新,從而實現 更新知識而不重訓模型。RAG 在知識密集型任務上被提出并驗證效果優于僅參數化模型。

維度LLM 微調(全量/PEFT)RAG(檢索增強生成)
知識存儲位置模型參數(內隱)外部索引(顯式)+ 模型(局部決策)
更新知識需重訓或增量微調更新索引即可(無需重訓模型
推理延遲較低(單次前向)增加檢索與文檔處理延遲(檢索/編碼/聚合)。
計算/成本(訓練)全量微調高;PEFT 低(顯存 & 存儲節省)檢索器訓練 + 生成器微調(可僅微調生成器或與檢索器聯合微調),索引構建有成本
可解釋性 / 溯源較差(內部權重難溯源)好:可返回支持文檔作證據
抗幻覺 / 事實準確性依賴模型及數據;難以快速修正錯誤更易 grounding,若檢索到高質量文檔,生成更事實性
小樣本/數據效率PEFT 在少數據下表現好依賴檢索質量;在少標注下可借外部知識補充
工程復雜度相對簡單(若僅單模型部署)復雜:需索引/檢索服務、向量數據庫、檢索器與生成器協同
最佳適用場景任務固定、知識靜態、可承受模型更新成本知識頻繁更新、需要來源/可解釋性、知識密集型 QA 與事實生成

實戰

本地 RAG 教程
使用 smolagents、LlamaIndex、LangGraph 來構建 RAG 工具的完整例子,見 HF Agent Course

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/918211.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/918211.shtml
英文地址,請注明出處:http://en.pswp.cn/news/918211.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android 設置/修改系統NTP服務地址

Android 手機的 NTP 時間同步(網絡時間同步)主要依賴網絡,但系統時間來源還包括其他方式,整體時間校準機制是多種來源的結合。具體可分為以下幾類: 1. 網絡 NTP 同步(最主要方式) 這是 Androi…

Ubuntu22.04 安裝vitis2023.2 卡在“Generating installed device list“.

關于這個問題,xilinx有官方說明,鏈接 原因:問題是 Ubuntu 20.04 缺少 libtinfo.so.5 庫。 解決辦法: sudo apt-get install libtinfo5

前端全棧修煉手冊:從 Vue3 到工程化的進階之路

本文將全方位覆蓋前端開發的核心知識,從 Vue3 框架的基礎語法到復雜的工程化實踐,從包管理工具的使用到模塊規范的深入理解,帶你踏上從入門到精通的進階之路。 Vue3 框架:新時代前端開發的基石 Vue3 核心語法探秘 Vue3 作為目前…

Jetpack Compose 常用控件

Jetpack Compose 常用控件一、基礎展示控件:呈現靜態內容二、交互控件:響應用戶操作三、列表與網格控件:展示大量數據四、導航與標簽控件:組織頁面結構五、反饋控件:提示與加載狀態六、布局控件:組織 UI 結…

Android適配最新SplashScreen方案:讓啟動頁不再“翻車“

Android適配最新SplashScreen方案:讓啟動頁不再"翻車" 各位開發者大佬們,最近是不是又被Android的SplashScreen適配搞得焦頭爛額?別慌,今天咱們就來聊聊這個讓人又愛又恨的啟動頁適配方案,保證讓你笑出腹肌的同時,還能把技術要點牢牢掌握![6][7][9][10] 一、…

【自動駕駛】《Sparse4Dv3》代碼學習筆記

這里時間比較有限,優先看Sparse4Dv3方法里面相對以前改動的地方。 0.參考 代碼v1/v2/v3:https://github.com/HorizonRobotics/Sparse4D 跑起來:https://github.com/HorizonRobotics/Sparse4D/blob/v3.0/docs/quick_start.md 1.方法 (1&a…

「ECG信號處理——(22)Pan-Tompkins Findpeak 閾值檢測 差分閾值算法——三種R波檢測算法對比分析」2025年8月8日

目錄 1、引言 2、算法原理 (1)Pan-Tompkins 算法(方法1) (2)Findpeak 閾值檢測算法(方法2) (3)差分閾值算法(方法3) 3、算法性能…

Qdrant Filtering:must / should / must_not 全解析(含 Python 實操)

在向量搜索中,過濾(Filtering) 是保證結果精準性和業務契合度的關鍵手段。Qdrant 的過濾機制不僅能在向量相似度檢索的基礎上疊加結構化條件,還提供了靈活的布爾邏輯組合,讓我們可以像寫數據庫查詢一樣,精準…

五、RuoYi-Cloud-Plus 前端項目部署以及如何改后端請求地址。

1.前情描述 前面的文章我們介紹了RuoYi-Cloud-Plus的nocos的配置內容,已經啟動其他服務要注意什么東西。 專欄內容在這,感興趣可以看看。 https://blog.csdn.net/weixin_42868605/category_13023920.html 2.前端項目部署。 官網地址:plus…

工作量評估

工作量評估 API 工作量評估: 得分 入參個數 * 0.2 業務規則 * 0.5 改動的庫表個數 * 0.3 得分(1-2):簡單API-5人天 得分(3-8):中等API-8人天 得分(8-15):復…

籃球運動(動態規劃)

題目描述小明建造了一個籃球場,他請來了2行n列的人,想讓他們進行比賽。每一個人都有一個能力值,第一行分別為h11,h12,…,h1n,第二行為h21,h22,…,h2n。現在小…

區塊鏈與大數據分析技術深度解析

目錄 區塊鏈與大數據分析技術深度解析 1. 引言:當區塊鏈遇見大數據 2. 區塊鏈數據特性 2.1 數據結構差異 2.2 區塊鏈數據層級 3. 數據獲取技術 3.1 節點直連方案 3.2 鏈上數據湖架構 4. 數據分析關鍵技術 4.1 交易圖譜分析 4.2 地址聚類算法 5. 鏈上分析應用場景 5.1 反洗錢(A…

網絡基礎——網絡層級

OSI七層模型OSI七層模型名稱功能協議應用層直接為用戶應用程序(如瀏覽器、郵件客戶端)提供網絡服務接口。HTTP/HTTPS(網頁瀏覽)FTP(文件傳輸)SMTP/POP3(郵件)DNS(域名解析…

【Redis】hash哈希,List列表

目錄 一. hash哈希 1.1.常用命令 1.1.1.HSET 1.1.2.HGET 1.1.3.HEXISTS 1.1.4.HDEL 1.1.5.HKEYS 1.1.6.HVALS 1.1.7.HGETALL 1.1.8.HMGET 1.1.9.HLEN 1.1.10.HSETNX 1.1.11.HINCRBY 1.1.12.HINCRBYFLOAT 1.2. 內部編碼 1.3. 使用場景 1.4…

MySQL相關概念和易錯知識點(4)(分組查詢、連接查詢、合并查詢、子查詢)

目錄1.分組查詢(1)聚合函數(2)group by子句(3)having2.連接查詢(1)內連接(笛卡爾積)(2)外連接(3)內外連接的區…

【Python 高頻 API 速學 ①】

一、為什么先學它們? 在真實代碼里,90 % 的 bug 都源于「拿到的是 A 類型,卻當成 B 類型用」。 把「不確定」變成「確定」——這就是類型轉換三兄弟的核心價值。二、三兄弟速覽函數一句話定位常見輸入失敗會怎樣int(x)把 x 變成整數‘42’, 3…

FFmpeg 視頻旋轉信息處理:3.4 vs 7.0.2

1. 概述 FFmpeg 在處理視頻旋轉信息方面經歷了重要的架構變化。本文檔詳細對比了 FFmpeg 3.4 和 7.0.2 在封裝(muxing)和解封裝(demuxing)視頻旋轉信息時的差異,并提供兼容性解決方案。文檔內容由Claude Sonnet 4輔助撰…

《Resolving tissue complexity by multimodal spatial omics modeling with MISO》

概念多模態空間組學:簡單來說,就是同時研究生物組織里的多種分子信息(比如基因表達、蛋白質、代謝物、表觀遺傳標記等),而且這些信息還帶有空間位置。MISO(MultI-modal Spatial Omics)是這篇論文…

三階段提交(3PC)協議的全面解析:理論、機制與實踐局限性

第一部分:非阻塞提交的起源:從兩階段提交(2PC)的缺陷到三階段提交(3PC)的構想在分布式計算領域,確保跨多個獨立節點執行的事務的完整性是一項至關重要的挑戰。這些節點或站點可能在地理上分散&a…

衰減器的計算

pi型衰減器,如下圖所示。 它適用于輸入輸出阻抗匹配的情況下,還能進行衰減。 不過當輸入輸出阻抗不匹配時,2個R1也會不相等。 已知特性阻抗Z0,衰減比AVin/Vout,怎么計算R1、R2? 1、電阻分壓。 Vout Vi…