重新定義 RAG 新架構設計,10倍提升長文本處理慢問題 原創
現在的大語言模型(比如:DeepSeek、GPT 系列)在做 “檢索增強生成”(RAG)時,經常會遇到一個大麻煩:為了生成準確答案,需要把從外部檢索到的很多段落都塞進模型里當 “參考資料”,但這些資料太長了,會導致兩個嚴重問題:
速度變慢:模型要處理的文字越多,生成第一個 token 的時間(TTFT)就越長,甚至成倍數增加;后續每個 token 的生成時間(TTIT)也會變長,整體反應變慢。
內存不夠用:模型需要專門的 “鍵值緩存”(KV Cache)來存這些參考資料,資料越長,緩存占用的內存就越多,有時候甚至會超出硬件限制,導致程序崩潰。
更關鍵的是,RAG 里的參考資料其實 “水分很大” -- 檢索到的 10 段話里,可能只有 2 段和用戶的問題直接相關,剩下的 8 段都是 “無效信息”。但傳統模型會把所有段落都當成 “重點” 來處理,做了很多無用功。而且這些檢索到的段落,因為來源不同、內容差異大,模型在 “關注” 它們時,只會盯著同一段落里的文字,很少會跨段落關聯,這和平時寫文章時的 “連貫關注” 不一樣,進一步說明很多計算是多余的。
Meta 提出了新 RAG 架構設計:REFRAG,優雅地解決了這個問題。

下文我們詳細剖析之。
一、新 RAG 架構設計剖析
1、新 RAG 架構設計 REFRAG 是怎么解決問題的?
簡單說,REFRAG 的核心思路是 “壓縮無用信息、聚焦有用信息”,不用改模型本身的結構,只在 “給模型喂數據” 和 “模型解碼” 這兩步做優化,具體分 3 步:
第一步:把參考資料 “打包壓縮”
先把檢索到的長參考資料切成一小塊一小塊(比如:每 16 個 token 算一塊),然后用一個輕量級的 “編碼器”(比如:RoBERTa 模型)把每一小塊壓縮成一個 “濃縮向量”(叫 “塊嵌入”)。這個向量就像 “資料摘要”,能保留小塊里的關鍵信息,但長度只有原來的 1/16(甚至 1/32)。
舉個例子:如果檢索到一段 128 個 token 的參考資料,切成 8 塊(每塊 16 詞),壓縮后就變成 8 個 “濃縮向量”,相當于把 128 個 token 的輸入量變成了 8 個 “虛擬 token”,模型要處理的內容直接少了 16 倍。
而且這些 “濃縮向量” 可以提前算好存起來,比如:同一個段落被多次檢索到,不用每次都重新壓縮,直接拿現成的用,又能省不少時間。
第二步:用 “智能判斷” 決定要不要解壓
不是所有 “濃縮向量” 都完美 -- 有些關鍵段落(比如:直接回答問題的句子)壓縮后可能會丟信息。所以 REFRAG 訓練了一個輕量級的 “判斷模型”(用強化學習 RL 訓練的),能自動識別:哪些 “濃縮向量” 對應的段落很重要,需要解壓回原來的文字;哪些不重要,保持壓縮狀態就行。
比如用戶問 “Bruce Lee 怎么去世的”,檢索到 5 段資料,其中 2 段詳細講了醫學原因,“判斷模型” 就會把這 2 段的 “濃縮向量” 解壓成文字,剩下 3 段保持壓縮,既不丟關鍵信息,又能繼續省時間。
第三步:給模型 “喂優化后的數據”
最后給模型的輸入,就變成了 “用戶的問題(原文字)+ 壓縮 / 解壓后的參考資料”。因為參考資料被大幅壓縮,模型的 “鍵值緩存” 占用會少很多,生成第一個詞的時間(TTFT)也會大幅縮短,比如:壓縮率 16 倍時,TTFT 能快 16 倍;壓縮率 32 倍時,TTFT 能快 30 多倍。
更妙的是,這種方式還能讓模型 “裝下更多參考資料”:原來模型只能處理 4000 個 token 的參考資料,用 REFRAG 壓縮后,能處理 64000 個詞(擴展 16 倍),相當于讓模型 “讀更多書” 卻 “花更少時間”。
2、REFRAG 效果到底怎么樣?
通過多次實驗表明,核心結論就 3 個:
第一、速度快很多,還不丟精度
生成第一個 token 的速度(TTFT):壓縮率 32 倍時,比傳統 LLaMA 模型快 30.85 倍,比之前最先進的方法(CEPE)快 3.75 倍。
回答精度:不管是算 “困惑度”(模型對答案的自信程度,越低越好),還是 RAG 的回答準確率(比如:MMLU、常識問答等任務),REFRAG 和用完整參考資料的模型差不多,甚至在 “參考資料質量差”(比如:檢索到很多無關段落)的場景下,因為能裝更多資料,精度還會更高。
比如:在 “弱檢索器” 場景(隨機選檢索結果),REFRAG 比傳統 LLaMA 的回答準確率平均高 1.93%,同時速度快 5 倍多。
第二、能處理更長的參考資料
傳統 LLaMA-2-7B 模型最多只能處理 4000 個詞的參考資料,REFRAG 能擴展到 64000 個詞(16 倍),而且處理 64000 個詞時,速度比傳統模型處理 4000 個詞還快,精度也沒下降。
第三、適用場景廣
除了 RAG,REFRAG 在 “多輪對話”(比如:客服聊天,需要記之前的對話 + 檢索資料)和 “長文檔總結”(比如:總結一篇 10 萬字的論文)里效果也很好。
多輪對話時,傳統模型會因為對話歷史太長而 “忘事”,REFRAG 能壓縮歷史對話,同時保留檢索資料,回答更準確。
長文檔總結時,比如:總結 Arxiv 論文或 PubMed 醫學文獻,REFRAG 生成的摘要和人工寫的相似度(Rouge 指標)比傳統模型高 10% 左右,同時速度快 6 倍。
3、和之前的方法比,REFRAG 好在哪?
之前也有方法想解決 “長文本處理慢” 的問題,比如:
StreamingLLM:能省內存,但不能加快生成第一個 token 的速度;
CEPE:能省內存,但只能處理 “開頭的參考資料”,多輪對話或中間插參考資料就不行;
壓縮 Transformer:需要重新訓練整個模型,成本高,還不能復用之前的壓縮結果。
而 REFRAG 的優勢很明顯:
不用改模型:基于現有 LLaMA、RoBERTa 等模型就能用,不用重新訓練大模型;
靈活:參考資料可以在輸入的任意位置(開頭、中間、結尾),支持多輪對話、長文檔總結等場景;
能復用:“濃縮向量” 可以提前存,多次檢索不用重復算;
智能解壓:不會因為壓縮丟關鍵信息,精度有保障。
二、新 RAG 架構設計總結
REFRAG 本質上是給 RAG 做了個 “數據優化插件”:通過 “壓縮無用資料、智能解壓關鍵資料”,讓模型在 “讀更多參考資料” 的同時,“速度更快、內存用得更少”,而且不用改模型本身的結構,容易落地。
不管是企業落地做智能客服(多輪對話 + 檢索)、學術問答(長論文總結 + RAG),還是 Web 搜索(快速處理大量檢索結果),REFRAG 都能派上用場 -- 相當于讓大模型 “既聰明又敏捷”,不用再在 “速度” 和 “精度” 之間做妥協。
好了,這就是我今天想分享的內容。
?
本文轉載自??玄姐聊AGI?? 作者:玄姐

















