RAG效果不及预期,试试这10个上下文处理优化技巧
对大部分开发者来说,搭一个RAG或者agent不难,怎么把它优化成生产可用的状态最难。
在这个过程中,检索效率、准确性、成本、响应速度,都是重点关注问题。
那么,如何对其进行优化?业内一致看好Context Engineering也就是上下文工程。
本系列文章,将从上下文工程的不同环节(上下文处理与生成、上下文处理、上下文管理)最新的行业探索与进展,进行解读。本文为系列第一篇,上下文处理篇。
备注:本文翻译自论文https://arxiv.org/html/2507.13334v1
上下文工程的本质是通过动态构建、优化LLM推理时的信息负载(含查询、外部知识、历史对话等,比“提示词”更宽泛),提升系统长期性能与效率。它是算法驱动的系统级优化,涵盖提示词工程、RAG、多智能体等技术,
从框架来看,上下文工程分为基础组件(信息生命周期核心模块)和复杂系统实现(组件的高级集成应用),二者可灵活组合适配不同场景。

构成上下文工程的三大核心技术支柱:上下文检索与生成、上下文处理以及上下文管理。这些技术方法是实现高效、智能上下文系统的具体手段。
其中,上下文处理是上下文工程的第二个核心组件,它专注于对获取到的上下文信息进行转换和优化,以克服LLM在处理复杂信息时面临的挑战,并最大化信息的效用。
以下为行业关于上下文处理所做出的一些行之有效的探索。
处理超长序列上下文是LLM面临的一个根本性挑战,主要源于Transformer自注意力机制O(n²)的计算复杂度,这导致了随着序列长度增加而急剧增长的计算和内存瓶颈。例如,将Mistral-7B的输入从4K tokens增加到128K tokens,计算量会增加122倍。Llama 3.1 8B在处理128K tokens的请求时,可能需要高达16GB的内存。为了解决这些问题,研究者们从架构创新、位置插值和优化技术等多个角度进行了探索。
为了从根本上解决Transformer的二次复杂度问题,研究者们提出了一系列创新的模型架构。
对于已经预训练好的模型,直接扩展其上下文窗口长度是一个挑战。位置插值技术通过在推理时智能地重新缩放位置索引,而不是外推到未见过的位置,从而实现了对更长序列的处理。
在不改变模型基本架构的前提下,研究者们还开发了多种优化技术来提高长上下文处理的效率。
上下文自我精炼与适应是一种让大型语言模型模仿人类修订过程,通过循环反馈机制自主改进其输出的技术范式。
与依赖外部奖励模型的强化学习方法不同,自我精炼主要通过模型自身的自我评估和对话式交互来实现,通常利用精心设计的提示词工程来引导模型进行迭代优化。
这种方法的核心思想是,对于一个给定的任务,识别并修正错误往往比一次性生成完美解决方案更容易。通过赋予模型自我批判和修正的能力,可以显著提升其在复杂推理、代码生成、创意写作等任务上的表现,并使其能够更好地适应新的任务和环境。
一系列基础框架为上下文自我精炼提供了具体的实现路径。Self-Refine框架是一个典型的代表,它使用同一个LLM同时扮演生成器(generator)、反馈提供者(feedback provider)和精炼器(refiner)的角色。
模型首先生成一个初始解决方案,然后对自己的输出提供具体的、可操作的反馈,最后根据这些反馈对解决方案进行精炼。这个过程可以循环多次,直到达到满意的结果。
Reflexion框架则更进一步,它引入了“反思文本”(reflective text)的概念,将模型在任务执行过程中的失败经验和教训以自然语言的形式存储在情节记忆缓冲区(episodic memory buffer)中。
这些反思文本在后续的任务中可以被检索出来,作为指导模型决策的上下文,从而避免重复犯错。然而,研究也表明,简单的提示词往往不足以实现可靠的自我修正,因此需要更结构化的引导。
例如,N-CRITICS框架采用基于集成(ensemble-based)的评估方法,让多个不同的模型或同一个模型的不同实例对初始输出进行评估,并汇总它们的反馈来指导精炼过程,从而获得更全面、更独立的评价。
上下文自我精炼的高级阶段是元学习(Meta-Learning)和自主进化(Autonomous Evolution),其目标是让模型不仅学会解决具体任务,更学会如何学习(learning to learn)。
SELF框架通过少量示例教会LLM元技能,如自我反馈和自我精炼,然后让模型通过生成和筛选自己的训练数据来进行持续的自我进化。自奖励(Self-rewarding) 机制则让模型通过迭代式的自我评判来自主提升,模型同时扮演执行者(performer)和评判者(judge)的角色,通过最大化自己给自己分配的奖励来优化行为。
Creator框架将这种范式扩展到工具使用,使LLM能够自主地创建和使用自己的工具,通过一个包含创建、决策、执行和识别的四模块流程来完成复杂任务。
而Self-Developing框架则代表了最高度的自主性,它使LLM能够自主地发现、实现和精炼自己的改进算法,通过迭代循环生成算法候选者作为可执行代码,从而实现真正的自我发展。这些框架共同指向了一个长期演变方向,即LLM将不再是静态的工具,而是能够持续学习和进化的智能体。
多模态上下文工程旨在将大型语言模型的能力从纯文本领域扩展到能够理解和处理包含视觉、听觉、3D环境等多种数据类型的复杂现实世界场景。
通过将不同模态的信息整合到统一的上下文表示中,多模态大型语言模型(MLLMs)能够执行图像描述、视觉问答、视频理解等更为复杂的任务。
然而,这种扩展也带来了新的挑战,包括如何有效地融合不同模态的信息、如何进行跨模态的推理,以及如何高效地处理长序列的多模态数据。该领域的研究致力于构建能够像人类一样,综合利用多种感官信息来理解世界的智能系统。
模态融合是多模态上下文处理的核心,其目标是将来自不同来源(如图像、文本、音频)的信息整合成一个连贯、统一的表示。
基础的融合方法通常是将视觉输入通过专门的编码器(如CLIP)转换为一系列离散的token,然后与文本token拼接,共同输入到LLM中。然而,这种简单的拼接可能无法实现深度的语义融合。
更先进的策略,如交叉模态注意力机制(cross-modal attention) ,允许模型在LLM的嵌入空间内直接学习文本token和视觉token之间的细粒度依赖关系,从而增强对图像编辑等任务的理解。
为了处理长序列输入,分层设计(hierarchical designs) 将不同模态的处理分阶段进行,以确保可扩展性。
此外,一些研究尝试绕过对纯文本LLM的适配,采用从一开始就联合预训练多模态数据和文本语料的统一训练范式,以从根本上缓解模态对齐的挑战。跨模态推理则要求模型不仅能理解每个模态,还能推断它们组合后的整体含义,例如理解一张图片和一段文字共同表达的讽刺意味。
实现多模态融合的关键技术组件是外部的多模态编码器和连接它们与LLM主干的对齐模块(alignment modules) 。
目前,主流的架构范式是使用专门的多模态编码器来处理特定类型的数据,例如使用CLIP(Contrastive Language-Image Pre-training)模型来处理视觉信息,或使用CLAP(Contrastive Language-Audio Pre-training)模型来处理音频信息。
这些编码器将原始的多模态数据(如像素、声波)转换为高维的特征向量。接下来,对齐模块负责将这些特征向量映射到LLM的嵌入空间中,使其能够与文本token进行交互。
常见的对齐模块包括简单的多层感知机(MLP)和更复杂的Q-Former(Querying Transformer)。Q-Former通过一个可学习的查询token集合来从视觉编码器的输出中提取与文本最相关的视觉特征,从而实现更精细的模态对齐。这种模块化的设计允许独立地更新多模态编码器,而无需对整个LLM进行重新训练,提供了极大的灵活性。
大型语言模型在处理表格、数据库、知识图谱等关系型和结构化数据时面临着根本性的限制。
其主要原因在于LLM的输入是基于线性序列的文本,而结构化数据内部蕴含着复杂的、非线性的关系和层次结构。将结构化数据简单地线性化(例如,将表格的每一行转换成一句话)往往会丢失关键的结构性信息,导致模型性能下降,尤其是在信息分散在上下文不同位置时。
为了克服这一挑战,研究者们探索了多种方法,旨在将结构化信息以一种LLM能够有效利用的方式编码和整合,从而提升模型在需要复杂推理和事实核查的任务上的表现。
知识图谱(Knowledge Graphs, KGs)作为一种强大的结构化知识表示形式,其与LLM的集成是当前研究的热点。
一种直接的方法是利用知识图谱嵌入(Knowledge Graph Embeddings) ,将图谱中的实体和关系转换为低维的数值向量。这些嵌入向量可以被整合到LLM的输入或内部表示中,为模型提供结构化的背景知识。
更进一步的集成方式是引入图神经网络(Graph Neural Networks, GNNs) 。GNNs能够直接在图结构上进行计算,捕捉实体之间复杂的多跳(multi-hop)关系。一些混合架构,如GraphFormers,将GNN组件嵌套在Transformer块中,实现了语言上下文和图结构信息的深度交互。例如,GreaseLM模型在所有模型层中促进了语言上下文表示和结构化世界知识之间的双向交互,使得两者能够相互增强。
QA-GNN则通过构建联合图和基于图的消息传递机制,实现了问答上下文和知识图谱之间的双向注意力连接。
文字化(Verbalization) 是一种将结构化数据(如知识图谱三元组、表格行、数据库记录)转换为自然语言句子的技术。
这种方法的优势在于,它无需对现有的LLM架构进行任何修改,即可将结构化信息无缝地整合到语言系统中。例如,一个知识图谱三元组 (Albert Einstein, bornIn, Ulm) 可以被转换成句子“阿尔伯特·爱因斯坦出生于乌尔姆”。
然而,简单的文字化可能无法完全保留原始数据的结构和关系。因此,研究者们也探索了使用编程语言(如Python或SQL)来表示结构化数据。研究表明,在复杂的推理任务中,使用Python实现知识图谱或SQL查询数据库,其性能优于传统的自然语言表示,因为它们能够更好地利用数据固有的结构性。
此外,一些方法还利用LLM自身的能力来提取结构化信息,并将其表示为图、表格或关系模式,从而实现对输入文本的多层次结构化。
为了更有效地处理结构化数据,研究者们设计了多种混合架构,将LLM与专门处理图结构的模块相结合。
GraphToken 是一个典型的例子,它通过引入参数高效的编码函数,显式地将结构信息表示为特殊的token,在图推理任务上取得了高达73个百分点的性能提升。
Heterformer 等混合GNN-LM架构则在统一的模型中执行上下文相关的文本编码和异构图结构编码,解决了扩展这些集成系统时面临的计算挑战。这些混合架构通常遵循不同的集成范式。
例如,K-BERT 在预训练阶段就将知识图谱三元组注入到模型中,使模型内化事实知识。而KAPING等推理时(inference-time)方法则通过检索相关事实并将其前置到提示词中,实现了无需重新训练模型的实时知识访问。
更复杂的实现,如通过适配器模块和交叉注意力机制将知识图谱衍生的表示直接嵌入到模型的潜在空间中,实现了更深度的融合。
文章来自于微信公众号 “Zilliz”,作者 “Zilliz”
【开源免费】Browser-use 是一个用户AI代理直接可以控制浏览器的工具。它能够让AI 自动执行浏览器中的各种任务,如比较价格、添加购物车、回复各种社交媒体等。
项目地址:https://github.com/browser-use/browser-use
【开源免费】DeepBI是一款AI原生的数据分析平台。DeepBI充分利用大语言模型的能力来探索、查询、可视化和共享来自任何数据源的数据。用户可以使用DeepBI洞察数据并做出数据驱动的决策。
项目地址:https://github.com/DeepInsight-AI/DeepBI?tab=readme-ov-file
本地安装:https://www.deepbi.com/
【开源免费】airda(Air Data Agent)是面向数据分析的AI智能体,能够理解数据开发和数据分析需求、根据用户需要让数据可视化。
项目地址:https://github.com/hitsz-ids/airda
【开源免费】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
【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。
项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md
在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0