让机器读记忆的方式,可能一直都错了

你有没有想过,当你和一个AI助手聊了三个月,它到底是怎么"记住"你说过的话的?
大部分人的直觉答案是:把聊天记录存起来,需要的时候再喂给它读一遍。这听起来理所当然,但如果你算一下账,会发现这套做法有点荒谬。想象你雇了个秘书,每次开会前你都得把过去三个月所有的会议纪要打印出来,逐字念给他听一遍,他才能回答你"上周三我们和谁吃了午饭"。这不是记忆,这是每次都重新经历一遍历史。
现在的AI系统大多就是这么干的。无论是聊天记录、长文档,还是检索出来的资料,最终都要变成人能看懂的文字,或者渲染成图片,再让语言模型去"读"。问题是,语言模型本身根本不需要文字。文字是给人看的格式,机器读的是一串数字向量。这中间那道"转成文字再转回向量"的工序,纯粹是因为我们习惯了这么做,而不是因为必须这么做。
两位研究者,Zhengze Zhou和Hejian Sang,就是从这个角度出发,提出了一个叫LatentPress的方案。他们的核心想法很直接:既然语言模型最终读的是向量,那为什么不直接把历史压缩成向量,跳过文字这一步?
这件事到底难在哪
先说说这件事的技术背景,免得显得凌空蹈虚。
压缩上下文成连续向量这个思路其实不新鲜,已经有几年历史了。比较有代表性的工作包括Gist、AutoCompressor和ICAE。
ICAE*:In-Context AutoEncoder,一种用LoRA微调LLM编码器把上下文压成向量的方法,但压缩后的向量需要先"解码"回文字才能被读取。
这些方法有个共同的毛病:它们要训练或微调一个和大模型同等规模的编码器,这个训练成本高得吓人,而且很多方法压缩完之后还得把向量"翻译"回文字,等于绕了一圈又回到了文字。
另一条路是视觉压缩,比如DeepSeek-OCR,把文字渲染成图片再用OCR识别回来。这个思路巧妙,但问题在于,OCR识别本身是个自回归解码过程,速度慢,而且这条路的终点还是文字。
论文里给出了一组很直观的对比数据。在LongMemEval这个测试长期记忆能力的基准上,如果直接把没压缩的原始证据喂给模型,准确率是0.490。听起来还不错,但要注意,这已经是理想情况:模型拿到的是标准答案对应的那一小段对话,不用自己去海量记录里找。就算这样,0.490也不算高,说明单纯"给足够的原文"并不能保证模型答对,因为很多问题需要跨多轮对话拼凑信息、判断时间先后、追踪信息更新。
而如果用传统的文字摘要方式压缩这段历史,准确率直接掉到0.184,几乎是腰斩再腰斩。用DeepSeek-OCR的视觉压缩方式,压缩到9.34倍时准确率是0.312,也明显不如直接读原文。这就是研究者面对的现实:现有的压缩手段几乎都在拿准确率换空间,压得越狠,答得越差。
LatentPress想做的是打破这个交换关系:既要压缩,又不想牺牲准确率。这听起来有点贪心,但他们确实做到了在7.70倍压缩率下拿到0.504的准确率,比不压缩的0.490还要高一点。
直接读向量:跳过文字这道关卡
LatentPress的核心设计,是让一个被冻住不动的解码器(也就是最终回答问题的那个大语言模型)直接读取一小段连续向量,这段向量由一个小巧的"写入器"生成,全程不经过文字。
冻结(frozen)*:指模型参数在训练和使用过程中完全不更新,就像被冻在冰块里,只能用不能改。
具体流程是这样的:一段长对话或长文档进来,先被这个小写入器压缩成一串"软token"(soft token)。
软token(soft token)*:不是普通文字词汇对应的离散符号,而是连续数值向量,直接活在模型的embedding空间里,模型可以"读"但没法把它转换回具体某个汉字或单词。
这些软token被塞进冻结解码器的输入embedding接口,后面紧跟着用户的问题,模型就这样一次性读完软token和问题,直接生成答案。整个过程只有一次前向传播,没有文字生成,没有OCR识别,没有中间产物需要人工检查。
这里有个关键的工程选择:这个写入器并不是从零训练的,而是"借用"了冻结解码器本身最底层的两个transformer层,在这基础上加一个小小的可训练适配器。适配器的参数量小到什么程度?以Qwen2.5-7B为例,只有12.849M参数,占整个解码器参数的大约0.1%。换句话说,99.9%的模型完全不动,只训练那一点点。
这个设计像什么呢?你可以想象一个大型图书馆,馆长(解码器)几十年没换过,脾气、阅读习惯、知识储备都固定死了。现在你要给他配一个摘要员,专门把新来的资料浓缩成他能快速消化的形式。如果这个摘要员完全不懂馆长的阅读习惯,从零学起,那得花很久时间才能摸清馆长喜欢什么样的表达方式,摘要出来的东西馆长可能还看不顺眼。但如果摘要员本身就是从馆长的助手里挑出来的,他天然就懂馆长的"语言",摘要效率自然高得多,训练成本也低得多。这就是为什么写入器要"借用"解码器自己的底层结构,而不是另起炉灶训练一个独立的编码器。如果不这么做,就得像ICAE那样训练一个LLM规模的编码器,成本直接上去了一个量级。
哪些内容该压,哪些不该压
压缩不是一刀切的事。论文里有个特别聪明的设计,叫"角色感知"压缩(role-based schedule)。
在对话场景里,不同角色说的话,信息密度差得很远。用户说的话往往是精确的事实:"我从三个月前开始收集古董相机"、"上周三的午饭是和Emma一起吃的"。这些短句包含具体的名字、时间、数字,一旦压缩变形,答案就全废了。而助手说的话往往是更长的解释性文字,信息冗余度更高,压一压问题不大。
于是研究者定了个规则:用户轮次完全不压缩,一个字都不丢(k_user=1),助手轮次则按8倍、16倍、32倍的比例去压缩。这个策略听起来简单粗暴,但效果惊人。
论文里做了个对照实验来验证这个策略到底值不值。如果把这个"角色感知"规则去掉,换成不区分角色、直接把助手部分做池化平均而不经过学习,准确率从0.476掉到0.325。如果干脆把助手轮次整个删掉只留用户轮次,准确率0.217。而如果把规则反过来,压缩用户轮次、保留助手轮次,准确率直接崩到0.087。
这组数字讲的是一个很朴素的道理:记忆里不是所有内容都同等重要,答案往往藏在特定的位置。这就好比你整理一个装满收据和账单的抽屉,你不会把每张纸都同等仔细地扫一遍,你知道信用卡账单上的具体金额和日期是关键信息,一个字都不能错,而超市小票上"祝您购物愉快"这种客套话可以直接扔掉不看。如果你把这个优先级搞反了,仔细核对小票上的祝福语,却随手扫一眼信用卡账单,那你迟早要在报税的时候栽个大跟头。LatentPress做的正是这种"分清主次"的压缩,而不是把所有文字一视同仁地压扁。
不过论文作者也很诚实地承认,这个角色分配规则目前是人工设定的,靠经验和试验挑出来的固定档位(8倍、16倍、32倍),并不是让模型自己学出来的。这算是这项工作留下的一个明显缺口,作者自己也在文章末尾提到,未来应该让一个学习出来的策略去决定"每段内容该压多狠",而不是人工写死规则。
写入速度快到什么程度
除了准确率,另一个绕不开的问题是:这套压缩到底要花多长时间?如果写入过程比直接读原文还慢,那压缩就没有意义了。
论文给出的数据相当直接。在一块NVIDIA H100 GPU上,用Qwen3-8B做后端,批量处理8条对话时,LatentPress生成软token只需要43毫秒每条对话。作为对比,DeepSeek-OCR那套"渲染成图片再OCR识别"的流程,每条对话要花844到1056毫秒,平均约934毫秒,慢了大约22倍。文字摘要方式也要407到645毫秒,慢了9到15倍。就连同样属于软token家族的ICAE,因为它要用完整的大模型去编码而不是像LatentPress借用底层两层,速度也要350到700毫秒,慢8到15倍。
这个速度差距的根源其实很直白:LatentPress的写入过程是一次性的前向传播,不涉及逐字生成,也不需要走一遍图像识别的解码流程。而OCR和文字摘要都得"一个字一个字地吐出来",这种自回归生成天然比一次性前向传播慢得多。
读取阶段的速度优势也很明显。在LongBench-QA的测试里,读原始上下文平均要2.44到4.14秒,读缓存好的OCR结果要2.71到4.34秒,而读LatentPress压缩后的软token只需要0.43到0.49秒,快了5到9倍。这个差距的原因很简单:软token序列短,模型处理的输入长度小了,自然算得快。
这里可以做个类比。假设你是个法官,每天要审理大量案卷。如果每次开庭前都要把整份案卷从头读一遍,那审案速度肯定慢。如果案卷提前被压缩成一份精炼的摘要,你翻几页就能进入状态,效率自然高。但压缩摘要本身也需要时间成本,如果这个"压缩"过程比"从头读一遍"还慢,那这套流程就本末倒置了。LatentPress的价值就在于,它的"压缩"环节做得比"直接读原文"快得多,压缩和阅读两头都省时间,这才是它真正划算的地方。
跨领域搬家好不好用
一个自然会被问到的问题是:这个写入器是不是只能死记硬背训练时见过的那种对话,换个场景就不灵了?
研究者专门设计了两组迁移实验来回答这个疑问。第一组是"零样本迁移":写入器完全在UltraChat这个通用对话数据集上训练,从没见过LongMemEval里的任何一条记忆问答,然后直接拿去评测。
UltraChat*:一个规模较大的通用多轮对话数据集,常用于训练对话模型,内容覆盖广泛日常话题,不针对特定问答任务。
结果是在Qwen2.5-7B、Qwen3-8B、Qwen3-1.7B三个不同的模型底座上,LatentPress都能拿到0.48到0.50左右的准确率,压缩倍数在4.6到7.7倍之间。三个底座横跨两个模型家族,参数规模相差4.7倍,这个稳定性说明写入器学到的东西不是针对某个特定模型死记硬背出来的技巧,而是某种更通用的"哪里该压、哪里该留"的规律。
第二组更有挑战性:从对话记忆场景直接搬到完全不同的长文档问答场景,也就是LongBench-QA,测试narrativeqa、qasper、hotpotqa等六个子任务。这里连"角色"这个结构都没有了,文档不像对话那样有用户和助手的区分,所以只能用统一压缩比例。
结果是喜忧参半的。在4倍压缩这个相对温和的档位上,跨领域迁移是有效的:Qwen2.5-7B从原始的43.80分升到45.13分,Qwen3-8B从30.80分升到32.79分。但一旦压缩倍数提高到8倍、16倍,效果就开始变差,甚至跌破不压缩的基线。这说明单纯靠"从别的领域学来的压缩经验",在压缩强度加大后是不够用的,毕竟对话记忆和文档问答的信息分布本来就不一样。
于是研究者又做了第三组实验:直接用目标领域(长文档问答)自己的训练数据去训练写入器,而不是从别处迁移过来。这次效果好得多。Qwen2.5-14B原始得分47.93,用本领域数据训练后在4倍压缩下冲到57.99分,8倍压缩下也有52.18分,都超过了不压缩的基线。Qwen2.5-7B在4倍压缩下从43.80涨到49.06,Qwen3-8B从30.80涨到39.62。不过16倍这种激进压缩比例下,所有模型的表现都掉到基线以下,说明压得太狠,终究会丢失重要信息。
这组实验讲的道理其实和前面用户/助手角色分配那个实验是同一个逻辑:压缩这件事,越了解"要保留什么",效果就越好。跨领域迁移就像是一个没去过某个城市的导游,凭着"大概哪里是市中心、哪里是景点"的经验带团,能应付一般情况,但遇到具体细节就容易露怯;而本地训练出来的写入器,就像本地向导,知道哪条巷子有隐藏的老字号,哪个路口容易堵车,细节把握得更准。如果没有这种本地经验,压缩越狠,丢的细节就越多,答错的概率也跟着往上走。
这几个方法到底差在哪
论文把LatentPress和几种代表性方法放在一张表里对比,这里用文字梳理一下核心差异,方便理解。
Gist、AutoCompressor这类方法要么整体微调解码器,要么让LLM自己做递归摘要,训练成本高,且压缩比例是固定或统一的,没法针对不同内容灵活调整。ICAE用LoRA微调编码器,压缩后的向量还得解码回文字才能用,这就意味着推理阶段还多了一步"翻译"。xRAG把冻结解码器的思路走通了,但它一次只压缩一段独立检索出来的文本,压成单个token,没法处理多轮对话或整篇长文档这种复杂结构。DeepSeek-OCR代表的视觉压缩路线则完全绕开了软token,走的是"渲染成图、OCR识别回文字"的路,本质上还是没跳出文字这个框架,只是用图像做了个中转站。
LatentPress的位置比较特殊:解码器完全冻结,只训练大约0.1%的参数,压缩后的向量直接进入输入embedding层,全程不经过文字重建,而且压缩比例是可变的,能根据角色或结构灵活调整。这几个特点凑在一起,才是它区别于前面所有方法的地方,不是软token这个概念本身新鲜,而是这套"冻结+直读+可变压缩"的组合方式没人这么干过。
三年前,Ge等人发表ICAE的时候,思路已经很接近了:把上下文压成向量,让语言模型直接消费。但ICAE的训练成本仍然停留在LLM量级,而且推理时还依赖自编码重建这一步。LatentPress相当于把ICAE的思路又往前推了一步:既然编码器不需要重新学一整套语言理解能力,直接借用解码器自己的底层参数不就行了?这个想法看似简单,但省下的训练成本是实打实的,从LLM规模的参数量降到不到1%。
再往后看,2025年的Glyph和更晚一点的AgentOCR,走的是另一条路,把视觉压缩用到智能体的历史记录管理上。这些工作和LatentPress的分歧点在于:视觉压缩终究要经过一次图像识别的重建过程才能被语言模型读懂,而LatentPress选择完全不重建,直接把向量喂给模型。这是两种哲学上的分岔:一种相信"文字终究是必须的载体",另一种相信"机器读的从来就不是文字,何必绕这一圈"。
写在后面
读完这篇论文,最让我意外的一点,其实是那个"角色感知"压缩策略的效果反差。0.476对0.325,只是把"学习出来的表示"换成"简单池化平均",中间隔了将近15个百分点的准确率。这说明在很多所谓的"压缩创新"里,真正立功的往往不是那个花哨的架构设计,而是"该留的东西有没有留住"这个朴素的判断。
另一个值得单独说一说的细节是,论文里那张失败案例表格挺诚实的。压缩到16倍的时候,Qwen3-8B会陷入"Answer: Answer: Answer:"这种无限重复循环,或者把内部推理标签``直接泄漏到最终答案里。这些不是模型"不知道答案",而是压缩把生成过程的稳定性也带垮了。这提醒我们,评估压缩方法不能只看准确率数字,还要看输出的"健康程度",一个方法在低压缩率下表现完美,不代表它在极限压缩下的失控方式是可以接受的。
这篇论文也让我想到一个不完全相关但挺有意思的联想:人类的记忆本身也是高度压缩且非均匀的。你记不住三个月前某次会议的每一句话,但你可能清楚地记得对方说的某句刺耳的评论,因为大脑天然就在做"角色感知式"的压缩,只是评判标准是情绪强度而不是问答准确率。LatentPress某种程度上是在用工程手段,模拟一种我们大脑本来就在做的事情。
留下的问题也很现实:这套压缩策略目前完全是人工设定的档位,8倍、16倍、32倍,谁来决定这个数字,靠的是试验和经验。如果未来真能训练出一个自动判断"这段该压多狠"的策略,那才是这条路真正走向成熟的时刻。
Q&A
Q1:LatentPress是什么?
A:LatentPress是一种上下文压缩方法,它把对话历史和长文档压缩成连续向量形式的软token,让冻结不动的语言模型直接读取这些向量来回答问题,全程不经过文字重建。
Q2:LatentPress相比OCR压缩和文字摘要有什么优势?
A:在LongMemEval测试中,LatentPress在7.70倍压缩下准确率达到0.504,超过不压缩的0.490,同时明显好于文字摘要的0.184和OCR压缩的0.312,写入速度还快了一个量级。
Q3:LatentPress训练成本高不高?
A:非常低。它只训练一个小型适配器,参数量约占解码器整体的0.1%,解码器本身完全冻结不动,不需要像ICAE那样微调整个LLM规模的编码器。