经历了前段时间的鸡飞狗跳,扎克伯格的投资似乎终于初见成效。
近期,Meta Superintelligence Labs 联合提出了一个名为 REFRAG 的高效解码框架,旨在解决 LLM 在处理长上下文输入时面临的效率瓶颈,尤其是在 RAG 等应用场景下。
为什么长上下文处理如此困难?
在当前的 AI 应用中,利用 LLM 处理包含大量外部知识的长文本输入,是提升问答、对话和智能体应用能力的关键。然而,这一过程也带来了严峻的挑战:在传统 LLM 中,注意力机制的计算和内存开销会随着输入长度的平方(N²)增长。
这意味着文本长度翻一倍,速度可能会慢 4 倍,这会导致显著的系统延迟,并消耗大量内存用于存储 KV Cache,进而降低系统吞吐量。这使得开发者不得不在知识丰富度与系统效率之间做出痛苦的权衡。
Meta 的研究指出,在 RAG 应用中,LLM 处理的上下文中包含了大量从外部知识库检索拼接而成的段落,但其中只有一小部分与用户查询紧密相关。这些不相关的段落导致了计算资源的浪费。REFRAG 的核心思想正是基于这一观察,通过识别并跳过对这些非相关上下文的无效计算,来优化解码过程。
REFRAG 是如何解决问题的?
REFRAG 框架通过一个精巧的四步流程,利用注意力稀疏结构,实现了显著的性能提升。它与传统 RAG 的关键差异在于,它避免了让 LLM 直接处理冗长的原始文本。
Meta 表示,该框架的有效性已在包括 RAG、多轮对话和长文档摘要在内的多种长上下文任务中得到验证,取得了突破性的成果:
简而言之,REFRAG 让「大上下文 RAG」从理想变成了现实。
虽然其效果听起来非常不错,但评论区也表示,它最终的价值仍需要在更广泛的实际应用场景中进行检验。
还有人对该研究中的 RL 策略提出了质疑。
为实现编码器与解码器的有效对齐,本研究遵循 Yen et al. (2024) 的工作,采用了一种基于「下一段落预测」任务的持续预训练方法。
在训练中,每个数据点包含总计 s+o=T 个词元(token)。通过这一预训练过程,模型能够学习如何利用块嵌入(chunk embeddings)来高效执行下游任务。
为了进一步提升模型性能,该方法还引入了通过 RL 实现的选择性压缩机制。在完成 CPT 对齐后,模型会经过监督微调 ,以适应具体的下游应用场景,例如 RAG 和多轮对话。
这项任务旨在训练模型利用上下文信息进行高效预测,为其在实际应用中的表现奠定基础。其最终目标是让任意的编码器和解码器组合都能协同工作,确保解码器基于压缩上下文生成的内容,与它在拥有完整、未压缩上下文时生成的内容高度相似。
持续预训练方案
为确保 CPT 阶段的成功,研究者提出了一个包含重建任务和课程学习方法的训练方案。消融研究表明,该方案对于实现优异的 CPT 性能至关重要。
该任务主要实现两个目标:
设计重建任务的一个特定意图是,鼓励模型在训练时更多地依赖其上下文记忆(即从输入中获取信息),而非其固有的参数化记忆(即模型自身已经学到的知识)。一旦通过此任务初步对齐了编码器与解码器,便会解冻解码器,正式开始 CPT。
选择性压缩。为了进一步提升答案预测的准确性,该方法(REFRAG)引入了选择性词元压缩机制。其核心思想是,对于上下文中特别重要的信息块,可以不进行压缩,而是以原始形式保留,从而避免关键信息丢失。
一个强化学习策略被用来决定哪些块应当被保留。该策略以下一段落预测的困惑度作为负向奖励信号进行指导(即困惑度越低,奖励越高),从而学习识别并保留关键信息。编码器和解码器都经过微调,以适应这种压缩块与未压缩块混合的输入形式。该策略网络利用块嵌入和掩码技术来优化块的扩展顺序,既保留了解码器的自回归特性,又实现了压缩位置的灵活安排。
更多技术细节请参看原论文。
文章来自于微信公众号“机器之心”。
【开源免费】Browser-use 是一个用户AI代理直接可以控制浏览器的工具。它能够让AI 自动执行浏览器中的各种任务,如比较价格、添加购物车、回复各种社交媒体等。
项目地址:https://github.com/browser-use/browser-use
【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。
项目地址:https://github.com/Significant-Gravitas/AutoGPT
【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。
项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md
【开源免费】FASTGPT是基于LLM的知识库开源项目,提供开箱即用的数据处理、模型调用等能力。整体功能和“Dify”“RAGFlow”项目类似。很多接入微信,飞书的AI项目都基于该项目二次开发。
项目地址:https://github.com/labring/FastGPT
【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。
项目地址:https://github.com/microsoft/graphrag
【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。
项目地址:https://github.com/langgenius/dify
【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。
项目地址:https://github.com/infiniflow/ragflow/tree/main
【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目
项目地址:https://github.com/phidatahq/phidata
【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。
项目地址:https://github.com/TaskingAI/TaskingAI
【开源免费】XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。它帮助开发者提供一个简单易用的平台,可以对大语言模型(LLM)和多模态图文模型(VLM)进行预训练和轻量级微调。XTuner 支持多种微调算法,如 QLoRA、LoRA 和全量参数微调。
项目地址:https://github.com/InternLM/xtuner