北京邮电大学的研究者发现了一个免训练的提示技巧,能让大型语言模型在多轮对话中的推理时间减少73.1%,令牌(tokens)消耗减少59.4%,同时问答准确率还提升了14.1%。

大模型记性差,聊得越久越糊涂

大型语言模型有个软肋,就是记性不太好,尤其是在连续进行多轮对话的时候。

你可以把它想象成一个记忆力只有七秒的鱼,聊着聊着,就忘了你们最开始在聊什么。它更倾向于记住最近听到的几句话,对早先的信息则印象模糊。这在学术上被称为“遗忘现象”或“近因偏见”。

这个毛病很要命。因为很多复杂的任务,比如分析一份长长的报告、当一个智能客服、或者做一个需要多步骤推理的问答,都需要模型能记住并整合贯穿整个对话的所有信息。如果它聊到后面忘了前面,那最终的结论就很可能跑偏,甚至得出完全错误的答案。

为了搞清楚这个问题到底有多严重,北京邮电大学人工智能学院的研究者设计了两个非常直接的实验。

他们用了一个叫HotpotQA的公开数据集,这个数据集的特点是需要模型阅读好几段文字,然后综合里面的信息才能回答一个问题。

第一个实验是测试对话长度的影响。研究者把需要模型阅读的10个段落,分别打包成1轮、5轮和10轮对话发给模型。也就是说,要么一口气把所有材料都给它,要么分5次给,要么分10次给。在每一轮,都要求模型筛选出对回答问题有用的关键句子。

结果怎么样呢?

F1分数(一个衡量准确率的指标)随着对话轮数的增加,稳定地往下掉。对话轮次越多,模型表现越差。有趣的是,模型规模越大,这种性能下降反而越明显。这说明,虽然更大的模型在单次理解能力上更强,但它们同样没能解决在多轮对话中记住历史上下文这个根本性的挑战。

第二个实验更进一步,直接去戳模型的痛点:信息的位置到底有多大影响?

研究者们把回答问题最关键的那个段落,有时候放在第一轮对话就告诉模型,有时候则藏到最后一轮才给它。

结果戏剧性地出现了。

当关键信息出现在最后一轮时,模型的性能得分要高得多。这几乎是无可辩驳的证据,证明了模型存在严重的“近因偏见”。它就是更偏爱眼前的信息,对那些“陈年旧事”则不太上心。

目前主流的多轮对话方式存在两个大问题:第一,模型会忘记早期的输入;第二,模型很难把不同轮次的信息有效地整合起来进行思考。

不聊历史,只更新状态

传统的对话方式,就像我们用微信聊天一样,新的信息不断附加在旧的聊天记录后面,整个历史记录越来越长。这对计算机来说负担很重,因为模型每一轮都要把全部历史记录再读一遍,既浪费时间又消耗计算资源。

研究者提出的新策略叫“状态更新多轮对话策略”,这个方法非常巧妙,它不需要重新训练模型,仅仅通过改变给模型提问的方式(也就是提示工程)就解决了问题。

它的核心思想是:别再让模型背着越来越重的历史包袱前进了。

在每一轮对话结束后,我们不保留完整的对话历史,而是提炼出一个“当前状态”,这个状态只包含到目前为止所有对解决问题有用的关键信息。下一轮对话开始时,我们只需要把新的材料和这个浓缩后的“当前状态”一起交给模型就行了。

这个策略主要靠三个技术组件实现。

第一个叫“状态重构”(State Reconstruction, SR)。它的作用就是减负。每一轮对话,输入给模型的信息长度基本是固定的,不会随着对话轮数的增加而无限膨胀。因为它包含的不是全部聊天记录,而是“新的段落”加上“上一轮提炼出的关键信息”。

第二个叫“历史提醒”(History Reminder, HR)。这是整个策略的点睛之笔。通过一个名为“先前选择”的机制,在每一轮都非常明确地把上一轮筛选出的关键句子再次展示给模型。这就像一个秘书在旁边不停地提醒老板:“老板,别忘了,我们上次开会的核心结论是这些”。这种方式强制模型必须关注并整合所有跨越时间线的关键信息,从而有效对抗遗忘。

第三个是“XML结构化输出”。为了让上面两个机制能自动化地运转起来,模型每次的输出都必须是标准、规范的。研究者要求模型把所有找到的关键句子,都用一个<info>...</info>这样的XML标签包裹起来。这样,程序就能非常轻松准确地解析出上一轮的结果,然后用于构建下一轮的输入。

整个对话流程是这样运作的:

首先,研究者给模型设定一个全局规则,这个规则在所有对话轮次中都一样,写在系统提示(SYSTEM Prompt)里:SYSTEM: You are helping to find supporting sentences...Format your response with <info>...</info>tags. Each response should contain ALL supporting sentences (previous + new ones).

这个提示告诉了模型两件核心任务:第一,你的回答必须用<info>标签包起来。第二,你每次回答,都必须包含之前所有轮次找到的关键句,再加上当前轮次新找到的关键句,是一个累积的过程。

对话开始。

第一轮,用户提出问题,并给出第一段上下文。USER: Question: ...Context: {passage 1}

模型阅读后,会输出它认为的关键句子,并用<info>标签包好。

从第二轮开始,“状态更新”的魔法就启动了。用户会输入新的文本段落,同时,把上一轮模型输出的<info>标签里的内容,作为“先前选择”的历史提醒,一起发给模型。

USER:Question: ...New Context : {passage k}USER: Previously selected: {supporting sentences from turn k-1}

程序在每一轮结束后,自动解析模型输出的关键句子,然后填充到下一轮的“先前选择”字段里。这个过程循环往复,直到所有段落都处理完毕。

模型真的记忆变好了吗?

研究者在三个公开数据集上进行了全面的测试,分别是HotpotQA、2WikiMultiHopQA和QASC。前两个是需要多跳推理的问答数据集,非常考验模型整合信息的能力。

实验用的模型是Qwen2.5-Instruct系列。

他们把传统的线性历史连接方法作为“基线”,用来和新的“状态更新”策略进行对比。

首先看性能。

在所有三个数据集上,基线方法的性能都随着对话轮数的增加而急剧下降,就像我们前面实验看到的那样。而状态更新策略的表现则非常稳健,几乎不受对话长度的影响。在10轮对话的场景下,新方法的Word F1分数平均提高了大约10%,由大型语言模型评估的Info Score(信息分数)更是增加了超过1.5分。这证明它确实有效地整合了历史信息,克服了遗忘问题。

再来看效率,这可以说是最惊人的部分。

表1:主要结果和消融研究。我们的方法在有效性(Info/QA分数)和效率(时间/令牌)方面均优于基线。消融研究证明了HR和SR组件的必要性。(↑:越高越好,↓:越低越好)

在5轮对话中,新方法将总令牌消耗减少了59.4%,推理时间更是减少了73.1%。这意味着过去需要花费100块钱和1分钟才能完成的任务,现在只需要花40块钱和不到20秒就能搞定。这个效率提升是巨大的,因为它避免了每一轮都重复处理冗长的历史记录。

研究者还测试了新方法在不同尺寸模型上的普适性。

结果显示,无论是30亿参数的小模型,还是140亿参数的大模型,状态更新策略都稳定地优于传统方法。这说明这个策略的改进是根本性的,不是碰巧在某个特定设置下才有效。

更重要的是,这种高效的信息过滤能力,直接转化为了下游任务的更优表现。在筛选出关键信息后,模型最终回答问题的得分(QA Score)也比基线方法高出了14.1%。这证明了通过状态更新保留下来的信息,不仅紧凑高效,而且对于完成复杂的推理任务极具价值。

为了验证这个策略设计的合理性,研究者还做了消融研究,也就是把策略的核心组件一个个拿掉,看看会发生什么。

当把“状态重构”(SR)模块去掉后(无SR),整个系统的效率瞬间掉到和基线差不多的水平,证明了SR在压缩上下文、提升效率方面的核心作用。

而当把“历史提醒”(HR)模块去掉后(无HR),性能则出现了灾难性的下滑,信息分数从6.91暴跌至3.74,问答分数也从7.22降到了4.68。这个结果强有力地证明了,历史提醒机制才是跨轮次推理和上下文理解的基石。

结论很明确:状态重构(SR)保证了效率,历史提醒(HR)驱动了性能,两个组件缺一不可。

应用前景广阔

任何需要和用户进行长时间、多轮次交流的系统,都能从中受益。

比如智能客服。它可以帮助客服机器人更好地记住用户之前提到的所有问题和细节,避免让用户重复描述,从而提供更精准、更连贯的服务。

比如在线教育。一个AI辅导老师可以用这个策略来持续跟踪学生的学习进度和历史提问,形成一个动态更新的“学生状态”,从而提供更有针对性的个性化指导。

这项技术也可能为检索增强生成(Retrieval-Augmented Generation, RAG)技术带来新的可能性。RAG系统通过从外部数据库检索信息来提升回答的准确性,但如果检索到的信息很多,如何让模型有效消化并记住这些信息,同样是个挑战。状态更新策略可以帮助RAG系统更高效地管理和利用检索到的知识。

长远来看,这项研究为构建更强大的智能代理(Intelligent Agent)的记忆模块提供了关键的思路。智能代理需要维护一个关于世界和自身任务的内部状态,并根据新的信息不断更新。状态更新策略,本质上就是一种高效、明确的状态管理机制。

下次当你发现大模型开始胡言乱语时,是不是也该考虑帮它“更新”一下状态了?

参考资料:

https://arxiv.org/abs/2509.17766

END

Logo

更多推荐