首页 文章 分类 标签 关于

怎么让AI记住我们的对话?——关于记忆和上下文

🤖 怎么让AI记住我们的对话?——关于记忆和上下文

你有没有这样的经历:跟AI聊了十分钟,对方已经忘了你五分钟前说过的话。你提到自己的名字、职业、刚才讨论的方案——它一脸茫然,好像第一次见你。

你不是一个人。这不是AI"笨",这是它的底层设计决定的。

今天就把这件事彻底讲明白:AI到底有没有记忆?它的"记性"是怎么回事?我们怎么让它记住该记住的东西?

AI的记忆,不是你想的那种记忆

先说结论:大语言模型本身没有任何长期记忆能力

你不是记性不好,你是根本不存在"记忆"这个模块。

每个模型,不管是GPT-4o还是Claude还是DeepSeek,它们的工作方式都是这样的:你发一段话(Prompt),它根据这段话预测最合理的回复。回复完,任务结束。你下一条消息进来——它又会把你之前说过的所有内容(加上新的消息)重新塞进去,重新"算"一遍。

你以为是它在"记住"之前说过的话,其实是你自己在帮它记。

每次对话,你在聊天框里看到的全部内容——你第一条消息、它第一次回复、你的追问、它第二次回复——全都被原封不动地再次发给模型。模型读一遍,然后续写。

所以你每次问"还记得我刚才说的吗?",它说"记得"——那不是它在翻阅记忆,是它刚刚读了你提供的聊天记录。

这个"能放多少历史对话"的上限,就叫上下文窗口

上下文窗口:你的"便签纸"有多大

上下文窗口是有大小限制的。就像你只能在桌面上放一张便签纸,桌子有多大,你就能写多少内容。

  • GPT-4o的上下文窗口是128K Token——大约相当于9-10万字的英文内容,或者更少的中文内容。
  • Claude 3.5 Sonnet是200K Token
  • DeepSeek-V3是128K Token
  • Gemini 1.5 Pro达到了2M Token——目前业内最大。

128K听起来挺多?换算成汉字,大约是6-8万字。看起来够聊很久了吧?

但现实是,你很难真正用完这128K。

为什么长对话AI还是会"失忆"?

有三个坑:

第一,Token不是按字数平均消耗的。

你说"今天天气不错",消耗5个Token。但AI返回的一篇长文章,可能就消耗了2000个Token。十轮问答下来,你的上下文可能已经被AI自己的输出塞满了。你聊天时每说一个字,AI回复的每一个字——全都在消耗你的上下文窗口。

第二,模型在中间会"迷糊"。

数学上有个现象叫"注意力衰减":当上下文序列变得非常长时,模型的注意力(Attention)机制会越来越难将早期内容和当前内容关联起来。不是你忘了,是你翻到第100页之后,不记得第3页写了什么。

有研究显示,即使上下文窗口是128K,模型在长度超过30K-40K之后,对早期信息的召回准确率就已经明显下降了。你的128K窗口,实际有效部分可能只有一半。

第三,不同位置的记忆强度不同。

模型对开头和结尾的内容"印象最深",对中间的内容最容易遗忘。这叫"U型效应"(也叫序列位置效应)。你刚开始对话时说的"我叫张三,是一名程序员"——很快就会淹没在中间的闲聊里。

三个技巧,让AI"长记性"

你知道了AI的记忆机制,就能用技巧对付它。

技巧一:关键信息放开头和结尾

既然中间的内容最容易被遗忘,那就把关键信息放在开头重申一次,结尾再强调一次。

比如你要AI帮你写一篇产品分析报告,开头先写清楚核心要求:

“你是一名资深产品分析师。以下是我要分析的产品的核心背景:产品X是一个面向中小企业的SaaS工具,成立于2020年……”

在最后一条消息,再补一句:

“请重点围绕上面提到的几点展开分析……”

这样等于在模型最容易"记得"的两个位置各放了一份关键信息。

技巧二:使用System Prompt(系统提示词)

这是被最多人忽略的高级技巧。

很多大模型的API(包括ChatGPT的自定义指令、Claude的Project Knowledge、DeepSeek的System Prompt)都支持设置一个系统提示词。这个提示词不管你后面的对话怎么进行,始终保持在对话的最开头——也就是模型"最关注"的位置。

你可以把用户的基本信息、核心需求、始终不变的约束条件放在System Prompt里。

举个例子,如果你是一个每天用AI辅助工作的产品经理,可以这样设System Prompt:

“我叫李明,是一个跨境电商产品经理,负责B端供应链系统。我习惯用中文沟通,喜欢结构化的回答。请始终基于我的行业背景给出具体建议,不要泛泛而谈。”

这就像在AI的记事本第一页贴了一张永不翻页的便利贴。它每次"读"对话,首先看到的就是这一页。

技巧三:主动"刷新"上下文

如果你的对话比较长,可以主动帮AI"翻篇"。不是在同一个上下文里无限延续,而是开始一个新的对话,但把之前的摘要带过去。

比如你和AI讨论了三个小时的代码设计,准备进入编码阶段,你可以说:

“以下是我们刚才讨论的核心结论:我们决定使用Python FastAPI框架,数据库用PostgreSQL,采用了三层架构设计。现在请你基于这个结论,帮我生成项目入口文件。”

你相当于帮AI做了一次上下文压缩——把3个小时的闲聊压缩成两句核心结论。

为什么有些服务"似乎"能记住你?

你可能会问:那ChatGPT的"Custom Instructions"、Claude的"Project"、Mem.ai这类工具是干嘛的?它们不是AI记忆吗?

这些本质上都不是AI自身的记忆能力,而是外部缓存系统

ChatGPT把你的Custom Instructions放在System Prompt里。Claude的Project知识库是把上传的文档切碎了拼到每次对话的上下文里。Mem.ai则是把一个单独的数据库挂在了AI外面,需要的时候去查。

这些实现方式都绕不开一个核心约束:上下文窗口的大小。你放再多的外部信息,最后能"喂"给模型的,始终只有那个窗口大小的内容。

所以,现在市面上有一个比较新的研究方向——Infinite Context(无限上下文)。它的思路是:舍弃把所有历史对话塞回去的做法,改用类似人类大脑的"摘要+索引"机制。AI只保留关键信息摘要,需要细节时再去"查档"。Gemini 2M Token的上下文窗口就是朝着这个方向迈出的一步。

但目前,还处于实用化的早期阶段。

小结:给AI装一个"便签系统"

说到底,让AI"记住"内容,靠的不是AI本身的记忆能力——而是你作为使用者的上下文管理能力

把AI想象成一个超级聪明但健忘的助理。它每次见到你,都是"初次见面"。你需要做的,就是:

  1. 把最重要的话写在最前面——System Prompt就是你的标签纸
  2. 长对话中定期"做摘要"——重新喂给AI
  3. 关键信息放开头和结尾——利用U型效应
  4. 别指望AI自己记住——它的设计里就没有"记忆"这个模块

下回你发现AI"失忆"了,别生气。它不是在偷懒,是它从来就没记住过。是你忘了再次告诉它。


📖 本文是MST「30天AI科普专栏」第18篇 / 共25篇 🔖 分类:实操技巧 关注MST,每天一个AI小知识,把大模型讲明白。