【論文閱讀】REFRAG:一個提升RAG解碼效率的新思路

引言

看到一則報道[1],重組后的Meta實驗室在9月1號發布了一篇關于提升RAG解碼效率的論文,提出的思路有點啟發作用,于是把原文下載下來仔細看下。

論文標題:REFRAG: Rethinking RAG based Decoding

論文地址:https://arxiv.org/pdf/2509.01092

1. 動機

通過將外部知識檢索結果與用戶問題拼接后輸入模型,檢索增強生成(RAG)已成為提升模型回答質量的重要途徑。

然而,這種機制的代價極其高昂:拼接的上下文通常包含數千甚至上萬 Token,其中只有少數段落與問題密切相關,其余則是冗余信息。對于解碼器而言,這意味著需要維護線性增長的 KV Cache,同時在預填充階段進行近似二次復雜度的注意力計算,導致**首 Token 延遲(TTFT)**大幅增加,吞吐量下降。

現有的長上下文優化方法大多從稀疏注意力或高效緩存角度出發,但這些方案往往面向一般長文本任務,而未能利用 RAG 特有的“塊對塊低相關性”結構性特征。于是,REFRAG 的提出正是為了填補這一空白,它將 RAG 的解碼過程重新設計為一個壓縮、感知與擴展的動態過程,從而顯著降低延遲與計算成本。

2. 框架

REFRAG 的核心思路是將檢索得到的長上下文從 Token 級別提升到 Chunk 級別表示

具檢索文檔會被切分為固定大小的塊,每個塊通過輕量級編碼器(如 RoBERTa)生成一個壓縮后的向量表示,再通過投影層映射到解碼器可理解的 Token 空間。

這樣,原本需要處理數千 Token 的解碼器輸入被壓縮為幾百個 Chunk Embedding,輸入規模大幅縮短,注意力計算也隨之減少。

并且,REFRAG 并未犧牲自回歸生成的特性,Chunk Embedding 可以插入在任意位置,與原始 Token 并存,從而保持方法的普適性。

為了避免“一刀切”壓縮帶來的信息損失,REFRAG 還引入了一個輕量的強化學習策略,動態決定哪些 Chunk 必須保留原文 Token,哪些可以以壓縮表示替代。這一機制使得模型能夠在有限算力預算下,把計算資源分配到最關鍵的上下文部分。

整體流程如下圖所示。

下圖展示了REFRAG和其它方法在以下三個指標上的加速效果:

  • TTFT (Time to First Token): 首詞元生成延遲,指的是模型接收到輸入指令后,生成并輸出第一個詞元(token,可以理解為一個單詞或一個漢字)所花費的時間。這個指標衡量的是模型的“反應速度”。
  • TTIT (Time to Iterative Token): 迭代詞元生成時間,指的是在生成第一個詞元之后,生成每一個后續詞元所花費的時間。這個指標衡量的是模型生成連續文本的“輸出速度”。
  • Throughput: 吞吐量,指的是單位時間內(通常是每秒)模型能夠生成的總詞元數量。這個指標是衡量模型整體處理效率和性能的關鍵指標,綜合了啟動延遲和生成速度。

3. 具體方法

在 REFRAG 的方法論中,核心挑戰是:如何讓解碼器能夠“理解”由編碼器生成的塊級壓縮表示,并在必要時動態選擇哪些塊需要恢復為原始 Token,從而保證生成質量。

為此,作者提出了一套 分階段訓練流程,具體流程如下:

3.1 編碼器與解碼器對齊:持續預訓練(CPT)

REFRAG 的關鍵創新在于用 Chunk Embedding 替代原始 Token 嵌入。然而,解碼器原本是習慣接收逐 Token 的序列表示,如果直接將壓縮后的向量送入解碼器,模型很難理解其中的語義。因此,需要一個 對齊過程

具體做法是設計 下段預測(Next Paragraph Prediction)

任務:給定輸入 Token 的前半部分 x1:sx_{1:s}x1:s?,由編碼器生成 Chunk Embedding,輔助解碼器預測接下來的 Token xs+1:s+ox_{s+1:s+o}xs+1:s+o?

通過這種方式,解碼器逐漸學會利用壓縮表示來完成預測,形成對 Chunk Embedding 的依賴關系。這一步訓練被稱為 持續預訓練(CPT),是連接編碼器和解碼器的橋梁。

3.2 重建任務:減少信息損失

僅僅通過下段預測進行對齊仍然不足,因為 Chunk Embedding 本身會丟失部分細節。為此,作者在 CPT 前額外引入了一個 重建任務(Reconstruction Task)

  • 輸入:原始上下文 Token 塊 x1:sx_{1:s}x1:s?
  • 編碼器:壓縮為向量表示
  • 解碼器:嘗試從壓縮向量重建原始 Token 序列

在該任務中,解碼器參數被凍結,只訓練編碼器和投影層。這相當于讓編碼器學會“盡可能無損地壓縮”,而投影層學會“把向量翻譯回 Token 空間”。經過這一階段,編碼器與投影層能生成較為保真的壓縮表示,解碼器也能正確解讀,從而為后續 CPT 奠定基礎。

3.3 課程學習:緩解訓練難度

當塊大小 kkk 增大時,壓縮任務變得極其困難,因為需要用一個定長向量表示 VkV^kVk 種 Token 組合(VVV 是詞表大小)。直接訓練模型去重建大塊信息容易陷入困境。為解決這個優化難題,REFRAG 引入 課程學習策略

  • 單塊重建 開始(例如只壓縮 x1:kx_{1:k}x1:k? 并重建它)。
  • 隨著訓練進行,逐步增加塊數(重建 2k,3k,...2k, 3k, ...2k,3k,... 的序列)。
  • 在數據采樣上,先以簡單任務為主,逐步增加復雜任務的比例。

這種漸進式訓練讓模型逐步掌握壓縮表示的規律,而不會在一開始就陷入高維空間的難題。

3.4 選擇性壓縮:強化學習策略

盡管壓縮能帶來效率提升,但并非所有上下文塊都適合壓縮。例如,一個包含關鍵定義或數值的段落,如果被過度壓縮,可能嚴重影響模型輸出的正確性。因此,REFRAG 引入了一個 強化學習(RL)策略網絡,用來在推理時動態決定:

  • 哪些塊保留原始 Token(高保真但開銷大);
  • 哪些塊替換為 Chunk Embedding(低開銷但近似)。

訓練方式如下:

  • 獎勵信號:使用預測困惑度(Perplexity)作為負獎勵,即如果某塊被壓縮后困惑度急劇上升,說明信息損失過大,應保留原文。
  • 策略機制:RL 策略在序列層面逐步做決策,以保證解碼器的自回歸特性不被破壞。
  • 輸出形式:生成一個壓縮掩碼(mask),指導哪些塊用向量替代,哪些保留 Token。

與啟發式規則(如“壓縮低困惑度塊”)相比,RL 策略在不同任務和不同上下文規模下都能取得更優的平衡,證明了其靈活性和魯棒性。

3.5 微調階段(SFT)

完成 CPT 和 RL 策略學習后,REFRAG 還需要進一步在具體下游任務(如問答、對話、摘要)上進行 監督微調(SFT)。這一階段的目標是讓模型在實際應用中學會如何最優地結合壓縮塊與原始塊,從而兼顧速度和準確性。

4. 實驗

4.1 實驗設置與基線

作者主要在 LLaMA-2-7B 模型上進行實驗,并將其與幾種典型的長上下文優化方法作對比,包括:

  • LLaMA-Full Context:原始 LLaMA 模型,完整上下文輸入。
  • LLaMA-32K:擴展上下文窗口到 32K Token 的版本。
  • LLaMA-No Context:不輸入上下文,只依賴提示。
  • LLaMA256:只保留最近 256 Token 上下文。
  • REPLUG:優化檢索器的方法。
  • CEPE:基于 KV Cache 的壓縮擴展方法。
  • REFRAG8 / REFRAG16 / REFRAG32:分別對應壓縮率為 8、16、32 的 REFRAG 模型。

訓練數據采用 SlimPajama 子集(包括 Books、ArXiv 等文檔),用于持續預訓練;驗證與測試數據包括 PG19(長篇小說)、ProofPile(數學推理)等,用于檢驗長文本理解和生成能力。

這張表的評價指標是困惑度(Perplexity),是衡量語言模型預測下一個 token 的不確定性:

  • PPL 越小,說明模型越“不困惑”,模型能更準確地預測下一個 token,說明語言理解/生成能力更強。
  • PPL 越大,說明模型越“困惑”,模型給正確詞分配的概率很低,相當于“沒猜對”,性能差。

4.2 推理效率與加速效果

REFRAG 的最大亮點在于顯著降低了 首 Token 延遲(TTFT)

  • 壓縮率 32 的設定下,REFRAG 在 LLaMA-2-7B 上實現了 30.85× 的 TTFT 加速,吞吐率也提升了數量級。
  • 相比之下,CEPE 的加速倍數僅為 3.75×,說明 REFRAG 在利用結構性稀疏性方面更高效。
  • 更重要的是,這種大幅提速并未導致困惑度顯著上升,說明壓縮表示并未破壞模型的語義理解能力。

此外,REFRAG 的推理開銷主要集中在預填充階段,一旦完成壓縮處理,后續 Token 的生成速度與原始 LLaMA 基本一致,這保證了系統在實際應用中的低延遲體驗。

4.3 消融實驗

作者進一步進行了消融實驗,以驗證各個組件的貢獻:

  • 無重建任務:困惑度顯著上升,說明重建訓練對于壓縮表示的保真性至關重要。
  • 無課程學習:模型難以收斂,訓練過程不穩定。
  • 無強化學習策略:準確率下降,說明啟發式壓縮無法適應不同任務和上下文復雜度。

總結

本文提出方法優勢在于它是非侵入式的,即沒有對下游的語言模型進行改造,理論可適配現有的語言模型,

然而,這項工作實際上只在7B參數級規模的模型上進行實驗,更大參數量的語言模型的效果未可知。

并且,此方法需要訓練過程是比較多的,按照文章給出的實驗環境,在8個節點上進行訓練(每個節點8張H100),總共64張H100,也只有meta這樣的實驗室有這種實驗資源。

最后,本文暫未開源,一些方法細節尚未可知。

總之,整體是一個不錯的想法,在提升模型響應速度和提升上下文窗口長度上,是一個新的思路。

參考

[1] Meta超級智能實驗室首篇論文:重新定義RAG: https://www.qbitai.com/2025/09/329342.html

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

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

相關文章

QT M/V架構開發實戰:QFileSystemModel介紹

目錄[TOC](目錄)前言一、QFileSystemModel初步介紹二、基本功能1.創建2.基本屬性與方法三、示例(簡單的文件瀏覽器)四、性能注意事項前言 本文主要介紹的是使用代碼生成的情況下對控件的介紹,包括擁有的功能及能修改的樣式,也會說…

視頻生成迎來效率革命!字節提出視頻生成稀疏注意力機制,計算量降20倍,速度升17.79倍!

論文鏈接:https://arxiv.org/pdf/2509.01085亮點直擊BSA——一種可訓練的雙向動態稀疏注意力框架,該框架首次在視頻擴散訓練中對全注意力機制中的查詢(Query)及鍵值對(Key-Value)進行正交稀疏化處理以加速訓…

STM32HAL庫_cubeMX

ADC簡介STM32f103的是12位逼近型ADC代碼連續非掃描模式(1個通道)1:校準ADC(這個可要可不要)2:ADC初始化3:配置ADC通道(這個函數只有一個通道時就是可要可不要)4&#xff…

【Qt】清空QDateTimeEdit

代碼 ui->startDate->setSpecialValueText(" "); //這里是空格 ui->startDate->setMinimumDate(QDate(2024, 1, 1)); ui->startDate->setDate(QDate::fromString("2024-01-01", "yyyy-MM-dd"));原理 設置特殊值顯示文本&#…

LiTS 2017 datasets

下載記錄 論文地址:https://doi.org/10.1016/j.media.2022.102680 官方下載鏈接:https://competitions.codalab.org/competitions/17094 進入鏈接后,需要先注冊才能拿到下載點擊Train data下面的Mirro1,在google云盤會看到Trai…

kafka3.8集群搭建

kafka集群需要三臺機器搭建,并使用內置zookeeperIP10.0.0.110.0.0.210.0.0.3安裝jdk # ubuntu sudo apt install -y openjdk-8-jdk-headless # centos sudo yum install -y java-1.8.0-openjdk下載kafka wget https://archive.apache.org/dist/kafka/3.8.1/kafka_2…

從15kHz 到20MHz:為什么LTE帶寬不能被子載波間隔整除?

從 15 kHz 到 20 MHz:為什么 LTE 帶寬不能被子載波間隔整除? 1. 引言 在 LTE 系統中,子載波間隔被固定為 15 kHz,而系統帶寬卻被設計為 1.4、3、5、10、15、20 MHz 六個檔位。乍一看,這些帶寬似乎無法被 15 kHz 整除&a…

html css js網頁制作成品——HTML+CSS娃娃店網頁設計(4頁)附源碼

目錄 一、?????網站題目 二、??網站描述 三、??網站介紹 四、??網站效果 五、?? 代碼實現 ??HTML

【計算機網絡 | 第15篇】動態主機配置協議

文章目錄為何需要DHCP?手動配置的痛點🤔DHCP的基本工作模式🥝DHCP的核心功能:IP地址的動態管理🥝租用期的特點租用期的管理機制DHCP四步工作流程:從“發現”到“綁定”🐦?🔥中繼代理…

嵌入式系統內存分段核心內容詳解

一、嵌入式內存分段整體規則(按地址從低到高)嵌入式系統內存按 “功能 屬性” 劃分為 6 個核心段,地址從低到高依次分布,各段職責與存儲對象明確,具體規則如下表:地址范圍段類型(Segment&#…

開發避坑指南(45):Java Stream 求兩個List的元素交集

需求 java 中如何用stream求兩個List元素的交集&#xff1f; 代碼實現 直接上代碼 public class ListTest {public static void main(String[] args) {List<Integer> list1 new ArrayList<>();list1.add(1);list1.add(2);list1.add(3);List<Integer> list2 …

gitlab流水線與k8s集群的聯通

gitlab流水線與k8s集群的連接&#xff0c;首先是通過gitlab-ci.yml文件中的命令&#xff0c;通過runner執行器實例運行對應的kubectl命令實現的。 那么runner執行器實例執行器如何執行kubectl命令&#xff0c;執行環境的配置&#xff0c;kubectl命令如何與k8s集群互認&#xff…

【Linux】常用命令速查表

Linux 常用命令速查表查看進程內存映射pmap -x <pid> # 查看進程的內存映射信息查看系統架構uname -m # 查看操作系統架構&#xff08;x86_64 / arm64 等&#xff09;磁盤與文件du -sh /home/* # 查看 /home 下每個用戶目錄的大小&#x…

Windows下編譯SLEPc

本文記錄在Windows下編譯SLEPc的流程。 零、環境 操作系統Windows 11VS Code1.92.1MSYS2msys2-x86_64-20250830 一、安裝依賴 1.1、依賴 首先&#xff0c;下載并安裝MSYS2&#xff0c; 打開MSYS2 MINGW64控制臺&#xff0c;運行以下命令安裝依賴包&#xff0c; pacman -S …

運動生理實驗室解決方案 人體生理實驗整體解決方案

&#xff08;一&#xff09;、硬件參數 集成化折疊式無創型生理實驗平臺&#xff1a;1.1、 集成化設計:至少包含設備操作臺、可收納式交互實驗桌、可收納式檢查床、生物信號 采集處理系統、計算機工作站集成于一體的高度集成設計&#xff1b;&#xff08;o561-6o623…

Axure RP 9 最新版安裝包+安裝步驟Win系統適用(附安裝包)

Axure RP 9? 是一款專業的 ?原型設計工具&#xff0c;主要用于 ?網站、APP、軟件等產品的界面設計和交互原型制作。 一、準備工作 ?下載好安裝包? Axure RP 9安裝包下載&#xff1a;https://pan.quark.cn/s/bc2b35011106 二、開始安裝 第一步&#xff1a;雙擊運行安裝包…

AutoMQ 亮相首爾:KafkaKRU 分享日志流處理新思路

全球 Kafka 社區都在關注 AutoMQ&#xff01;憑借在 Kafka 生態的獨特創新&#xff0c;AutoMQ 深受 Kafka 用戶喜愛&#xff0c;已成為眾多企業和開發者的首選實時數據解決方案。昨天&#xff0c;我們非常高興看到來自韓國的 KafkaKRU 核心社區在首爾舉辦第2屆官方線下交流會。…

從零開始使用 axum-server 構建 HTTP/HTTPS 服務

axum-server 是 Rust 生態中為 axum 框架設計的高性能服務器實現&#xff0c;基于 hyper&#xff08;底層 HTTP 引擎&#xff09;和 tower&#xff08;服務抽象&#xff09;構建&#xff0c;支持 HTTP/1、HTTP/2 及 HTTPS。本教程將從環境準備到實戰功能&#xff0c;一步步帶你…

電路運行的核心-RTC

1. 時鐘芯片是什么&#xff1f;時鐘芯片&#xff0c;更準確的名稱是實時時鐘芯片&#xff0c;英文是 Real-Time Clock&#xff0c;簡稱 RTC。它是一個專用的集成電路&#xff0c;其核心功能是追蹤時間和日歷。你可以把它想象成電子設備里的一個“電子表”或“日歷鐘”。關鍵特性…

AR消防頭盔:火場救援的智能“透視眼”

在濃煙彌漫、能見度幾乎為零的火場中&#xff0c;消防員們依靠什么來精準掌握隊友的位置和狀態&#xff1f;答案是AR智能消防頭盔&#xff08; www.teamhelper.cn &#xff09;。這種頭盔通過多種定位技術的融合&#xff0c;為消防員提供了強大的團隊協作和指揮協同能力&#x…