生成式 AI 三十讲第 11 讲 / 共 30 讲从一问一答到会聊天

工程上怎么给它做记忆

截断、摘要、外部存储三种做法各有代价,选错了体验和成本都会出问题。

周一,你告诉客服助手:“我的设备编号是 A-17,只接受工作日下午送货。”周三再打开同一个窗口,它却又问设备编号;更糟的是,它还把“下午”记成了“上午”。这不是一句“请记住”就能修好的问题。模型每次回答时,只能使用当前请求里装得下的内容;跨过一次请求甚至一次会话之后,产品表现出的“记忆”,都是工程系统另外保存、挑选和重放的结果。

先给答案

AI 产品的记忆不是一个开关,而是三种取舍:删掉较旧内容、把历史压成摘要、把事实存到外部再按需取回。它们都会丢信息,也都可能取错信息;关键不是“记得越多越好”,而是该记什么、保留多久、由谁纠正。

为什么最简单的记忆其实是“带着聊天记录”

多轮对话看起来连续,实际是程序在新请求中重新附上之前的消息。也就是说,模型不是从脑中想起了上周的谈话,而是又读了一遍产品交给它的文本。这些文本还要和系统规则、你刚上传的文件、模型即将输出的内容一起挤进上下文窗口。也就是说,它能临时参考的内容有总量上限,不等于永久档案柜。

最直接的处理叫截断:超过上限时,从较旧或较不重要的消息开始删除。假设一次会话有 80 条消息,系统只重发最近 20 条,第 6 条里写过的“项目代号青松”就可能消失。截断便宜、快,也不会引入新的改写错误;代价是边界很生硬。第 20 条还在,第 19 条刚好被删,两条对理解问题可能同样重要。

因此,成熟一些的产品不会只按时间一刀切。它可能固定保留系统规则和用户最近的问题,优先保留被标记为关键的事实,再删除重复寒暄和很旧的工具结果。但“重要”仍由程序规则或另一次模型判断,判断本身也会错。官方文档也提醒,长内容不自动等于好内容:信息越多,模型从中准确找到关键细节的表现可能下降。给它塞进 300 页会议记录,不如给它 3 页与问题直接有关的记录。

摘要为什么能续聊,也会悄悄改写事实

第二种办法是摘要。系统把较早的 60 条消息压成一段 600 字说明,再与最近消息一起发送。也就是说,它保存的不是原话,而是对原话的一次解释。这样能腾出空间,也能让很长的任务继续;但数量、否定词、尚未决定的选项最容易在压缩中受损。

例如原话是:“甲方案交期 12 天但未确认;乙方案 15 天且已确认,不要替我下单。”摘要若写成“用户倾向 12 天交付的甲方案”,三个变化已经发生:未确认被漏掉,“比较”变成“倾向”,“不要下单”消失。后面的模型即使完全忠实于摘要,也会基于错误前提回答。摘要还可能被反复摘要:第一版丢一个限定词,第二版再把不确定写成确定,误差就像复印件一样累积。

工程上应把可核对的事实和叙事摘要分开。订单号、日期、权限状态保存为字段;讨论过程才压成自然语言。还要保留原始记录的引用位置,让用户能回看“这条记忆从哪来”。涉及合同、医疗或付款时,摘要只适合导航,不应替代原文。

外部存储为什么更长久,却不是自动想起

第三种办法是把信息写到数据库、文件或用户档案中。比如保存三条结构化记录:设备=A-17送货时段=工作日下午记录日期=8月24日。新会话开始时,程序先判断当前问题需要哪些记录,再把选中的几条放进请求。也就是说,长期记忆分成“写入什么”和“什么时候取出”两个问题,模型本身并没有突然获得无限记忆。

写入错了,错误会长期存在;取回少了,模型表现得像忘了;取回多了,又会挤占上下文并带入无关甚至过期信息。用户说“以后都用简体中文”适合长期保存,“我今天有点困”通常不该。送货地址、健康状况等敏感信息还涉及授权、保留期限和删除能力。一个可靠的记忆功能至少要让用户查看、修改、删除,并标明来源与更新时间。

企业验收时可以准备 30 条故意冲突的记录:先写“预算上限 8 万元”,后改为“经批准调整到 10 万元”;再问系统当前上限和依据。测试重点不是它能否复述一句话,而是会不会采用新值、保留变更来源,并在证据冲突时承认不确定。

自己试一下

在任意 AI 聊天框新建对话,先发:

记住这三项:项目代号“青松”;会议在周四 14:30;预算尚未批准。请只回复“已记录”。

接着聊 8 到 10 轮无关内容,再问:“把三项信息原样列出,并标出哪些是确定事实。”然后开启一个全新对话,再问同样的问题。观察旧对话能否保留“不确定”这个状态,新对话是否仍知道三项信息,以及界面是否说明使用了跨会话记忆。

编辑实跑中,同一对话的召回请求返回了空字符串,无法据此判断是历史遗失、服务异常还是空响应问题;全新对话则明确表示没有看到三项信息。本次结果只能说明跨会话没有自动获得旧上下文,不能证明同一会话为何召回失败。你试的时候结果可能不同,重点仍是分清同一对话中的历史重放和跨对话的外部记忆。

常见误解

误解一:上下文窗口够大,就不需要记忆系统。 窗口再大也只是本次可读内容,而且内容变长后,找准关键细节未必更稳。跨会话保留、用户纠错和到期删除仍要由外部系统处理。

误解二:摘要只是压缩,不会改变意思。 摘要是一次生成任务,会遗漏限定条件,也可能把猜测写成事实。数字、权限、否定要求应保存为可校验字段,并能追到原文。

三句话总结

  1. 产品里的“记忆”是把旧信息重新送进当前请求,不是模型自己记住了过去。
  2. 截断会漏信息,摘要会改信息,外部存储则会写错或取错信息。
  3. 可靠记忆必须可查看、可纠正、可删除,还要保留来源和更新时间。

如果你要做决定

要求供应商画出“写入、存储、取回、删除”四步,并用冲突记录做现场测试。若对方只说“支持长期记忆”,却说不清保存范围、纠错入口和敏感数据保留期限,这项能力还不能进入关键流程。

下一篇,我们看一种按问题临时找资料的办法:检索增强生成。