重新定义 RAG 新架构设计,10倍提升长文本处理慢问题 原创

发布于 2025-9-11 09:17
浏览
0收藏

现在的大语言模型(比如:DeepSeek、GPT 系列)在做 “检索增强生成”(RAG)时,经常会遇到一个大麻烦:为了生成准确答案,需要把从外部检索到的很多段落都塞进模型里当 “参考资料”,但这些资料太长了,会导致两个严重问题:

速度变慢:模型要处理的文字越多,生成第一个 token 的时间(TTFT)就越长,甚至成倍数增加;后续每个 token 的生成时间(TTIT)也会变长,整体反应变慢。

内存不够用:模型需要专门的 “键值缓存”(KV Cache)来存这些参考资料,资料越长,缓存占用的内存就越多,有时候甚至会超出硬件限制,导致程序崩溃。

更关键的是,RAG 里的参考资料其实 “水分很大” --  检索到的 10 段话里,可能只有 2 段和用户的问题直接相关,剩下的 8 段都是 “无效信息”。但传统模型会把所有段落都当成 “重点” 来处理,做了很多无用功。而且这些检索到的段落,因为来源不同、内容差异大,模型在 “关注” 它们时,只会盯着同一段落里的文字,很少会跨段落关联,这和平时写文章时的 “连贯关注” 不一样,进一步说明很多计算是多余的。

Meta 提出了新 RAG 架构设计:REFRAG,优雅地解决了这个问题。

重新定义 RAG 新架构设计,10倍提升长文本处理慢问题-AI.x社区

下文我们详细剖析之。

一、新 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​  作者:玄姐

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
收藏
回复
举报
回复
相关推荐