AI 基础入门 · 第9课
记忆:为什么大模型"聊到后面就忘了前面"
接上一课:上下文窗口只是本次对话的工作台,关掉就清零。那为什么有的 AI 能记住你上次说的名字?答案是——模型本身根本没有记忆,所谓记忆全是工程师外挂上去的。这一课把"记忆"拆成三层,再讲清四种外挂方案,以及你最该关心的隐私边界。
① 小白第一课怎么学(4 步走,约 50 分钟)
这一课解释"AI 为什么能/不能记住你",是理解各种"AI 助手个性化"产品的底层钥匙。
1先破除误解(10 分钟)
读②③:模型无状态,记忆全是外挂。
2分清三层记忆(15 分钟)
读④:参数 / 会话 / 长期,别混。
3看四种工程方案(15 分钟)
读⑤:拼接 / 向量 / 摘要 / 数据库。
4刷题自测(10 分钟)
做⑦⑩,错题回⑥看易错点。
本课小目标学完你要能:① 说清"模型为什么记不住你昨天聊过什么";② 区分参数记忆、会话记忆、长期记忆三层;③ 说出四种外挂记忆方案各自的优缺点;④ 意识到记忆功能背后的隐私问题。
② 一图看懂:四种记忆方案对比
读法:中心是真相——模型本身记不住任何事。四种外挂方案各有取舍:拼原状最简单最贵;向量库能跨会话;摘要省 token 但丢细节;数据库最适合存结构化的用户偏好。真实产品往往是几种混着用。
③ 本质直觉:模型每次都是"第一次见面"
关键事实:大模型是无状态的(Stateless)。你每发一条消息,它都像第一天上班、第一次见你——它不知道你昨天聊过什么,不知道你叫什么,甚至不知道你们之前还说过话。
那它为什么好像记得?因为你的 App 在背后做了一件事:每次发请求时,把之前的对话历史一起打包塞进这次的上下文窗口(上一课讲的工作台)。模型这一次"看见"了历史,所以答得像记得一样。但这不是它记住了,是你每次都把小抄重新递给它一遍。
推论一:你新开一个对话窗口,它立刻变回"第一次见你"。因为没人给它递小抄了。
推论二:关掉 App、清掉历史,那些对话就真的没了——除非开发者另外存到了别的数据库里。
一句话:模型的"大脑"(参数)是固定的、训练好就冻结的;它的"记性"全靠外面每次递给它的那张纸。
为什么这一点特别重要一旦你接受"模型无状态、记忆全靠外挂",后面所有产品现象都顺了:为什么换个 App 它就不认识你了、为什么开新会话要重说一遍、为什么"记住我的偏好"要专门开通权限——全是因为这些记忆存在模型外面的数据库里。
④ 完整体系:三层记忆,别搞混
| 层级 | 存在哪 | 特点 | 关掉对话还在吗 |
| ① 参数记忆 | 模型权重里 | 训练时学进去的知识,冻结不变,如"北京是中国首都" | 一直在(但不会新增) |
| ② 会话记忆 | 本次上下文窗口 | 当前对话历史,临时塞进输入,聊久了会被截断 | 关了就没 |
| ③ 长期记忆 | 外部数据库 | 跨会话记住"你是谁、你偏好什么",工程外挂 | 在(除非你删) |
三种工程外挂方案怎么选
| 方案 | 做法 | 优点 | 缺点 |
| 历史拼接 | 以前对话全塞进输入 | 最简单、信息全 | 费 token、聊久撞窗口上限 |
| 向量记忆 | 对话变向量存库,按语义检索相关片段 | 跨会话、省 token | 可能检错、不保证全记得 |
| 记忆摘要 | 长对话总结成几句话再塞进去 | 大幅省 token | 摘要会丢细节 |
| 外部数据库 | 存用户画像,用函数调用读取 | 结构化、可控、可删 | 要自己建表、自己写逻辑 |
别把三层记成一层模型"知道圆周率约等于 3.14"是参数记忆;它"记得你刚说你儿子上二年级"是会话记忆;它"跨月还记得你对花生过敏"是长期记忆。三者来源完全不同,别混为一谈。
⑤ 四种外挂方案,逐个讲透
方案一:对话历史拼接(最朴素)
把以前你一句我一句的记录,原封不动拼在这次提问前面。
这是最容易想到、也是所有聊天机器人默认的做法。问题是:每轮都要把全部历史重读一遍,越聊越贵、越聊越慢,最后撞上上下文窗口被截断。适合短对话,不适合长期陪伴。
方案二:向量记忆(Embedding 检索)
把过往每段对话转成一串数字(向量)存进数据库。
下次你提问时,先把你的问题也转成向量,去库里找语义最相近的几段旧对话,只把这几段喂进上下文。它像一个"按意思翻笔记"的检索系统,不把整本笔记都带上。省 token,还能跨会话,是现在长期记忆的主流做法。
方案三:记忆摘要(Summarization)
聊得太长时,让模型先把前面的对话压缩成几句话。
比如"用户有个二年级儿子、对狗害怕、在南京",用这三句话代替几千字原文。优点是极省 token;缺点是摘要必然丢细节——你上周具体说的那句话,可能被概括没了。常和方案二搭配用。
方案四:外部数据库 + 函数调用
把"你是谁"存在一张用户表里,模型要用时通过工具去查。
比如表里记着"昵称、偏好简洁回答、过敏史"。模型这次回答前,先调用 getUserProfile(你的id) 把这行数据读出来,再据此回答。这种最结构化、最可控,也最容易做到"一键删除记忆"。
隐私边界:存了什么、谁能看、怎么删记忆越聪明,意味着它存的你的数据越多。你要主动关心三件事:①它到底存了哪些对话/偏好;②这些数据谁能访问、存在哪;③有没有"清空记忆/注销删除"的入口。记住——能被记住的,理论上也能被导出、被泄露。
⑥ 高频错误诊断(4 条)
错误 1:以为模型"聊久了会自己记住我"模型权重是冻结的,你跟它聊一万句也不会改它。所谓记住,全是 App 把历史塞进上下文或存进了外部库。
错误 2:把参数记忆和长期记忆混为一谈"它知道圆周率"是参数记忆(训练学的);"它记得我过敏"是长期记忆(外挂数据库)。前者改不了、后者能删。
错误 3:以为向量记忆能完整回忆向量检索是"找语义相近的片段",不保证找全、也可能找错。它不是录像机,更像"凭印象翻到几页相关笔记"。
错误 4:忽视记忆带来的隐私风险你以为只是在聊天,其实你说过的住址、病情、家庭关系可能被长期存储、用于个性化甚至被泄露。开通"记忆功能"前,先想清楚哪些话不该说。
⑦ 考点真题演练(4 题)
考点分布
| 考法 | 出题形式 | 应对 |
| 无状态本质 | 问模型为什么新开对话就忘 | 无状态,靠上下文喂历史 |
| 三层记忆区分 | 问"知道圆周率"属于哪层 | 参数记忆 |
| 向量记忆原理 | 问跨会话记忆怎么做 | Embedding 检索相关片段 |
| 隐私边界 | 问记忆功能要注意什么 | 存了什么/谁能看/怎么删 |
真题基础1. 为什么大模型"新开一个对话就不认识你了"?
真题中档2. 模型"知道北京是中国首都",这种知识属于哪一层记忆?
真题中档3. 用"向量记忆"实现跨会话记住你,核心做法是?
真题拔高4. 关于 AI 记忆的隐私,下面哪种做法最稳妥?
⑧ 必背知识点卡
核心真相:模型无状态,每次都是第一次见你 记忆全是外挂
参数记忆:训练进权重的知识,冻结不变 如常识
会话记忆:当前对话历史,塞在上下文里 关了就没
长期记忆:外部数据库,跨会话记住你是谁 工程外挂
四方案:全拼接 / 向量检索 / 记忆摘要 / 外部数据库 各有取舍
向量记忆:Embedding 存库,按语义找相关片段 省 token 跨会话
隐私三问:存了什么 / 谁能看 / 怎么删 开通前想清楚
⑨ 应用输出:跟家人解释"为什么它这次又忘了你"
实战场景:家人抱怨"昨天才跟它说过我过敏,今天又问我,是不是白聊了?"
① 先安抚:不是它不上心,是它大脑本来就不带记忆,每次都是重新开始。
② 打比方:它像一个每次上班都失忆的临时工,你昨天说的话全靠一张纸记着,今天换了工位就没那张纸了。
③ 给办法:想让它长期记住,要用带"记忆/用户画像"的功能,把过敏这种关键信息存进它的外部档案;重要的事自己也重复一遍。
④ 提个醒:它能记住你,也就存了你的隐私,敏感信息想清楚再让它记。
口述全链路"模型本身无状态、不记忆;它知道常识是参数记忆;它记得你刚说的话是会话记忆(塞在上下文里);它跨天记得你是外挂的长期记忆(向量库或用户表)。方案有全拼接、向量检索、摘要、外部数据库四种,越聪明的记忆存的隐私越多,要注意删除入口。"
⑩ 分层练习 16 题(基础 6 + 中档 5 + 拔高 5)
▍基础 6 题
基础1大模型本身有没有"记忆"?
没有。它是无状态的,每次对话都像第一次见你,所谓记忆全是工程外挂。
基础2"它知道水在 100℃ 沸腾"属于哪层记忆?
属于参数记忆——训练时学进权重的知识,冻结不变。
基础3"它记得你刚说的话"靠的是什么?
靠会话记忆:把当前对话历史塞进上下文窗口,这次才看得到。
基础4新开一个对话窗口,模型还记得你是谁吗?
不记得。新窗口没有历史小抄,它又变回第一次见你,除非有外部长期记忆。
基础5跨会话"记住你是谁"靠存在哪里?
靠外部数据库(长期记忆外挂),不在模型权重里。
基础6最简单的"记忆"实现方式是?
对话历史全拼接:把以前所有对话原样塞进每次输入。
▍中档 5 题
中档7为什么"历史全拼接"越聊越贵?
因为每轮都要把全部历史重新读一遍,输入 token 随对话线性增长,费用和延迟都上升,还会撞上下文上限。
中档8向量记忆(Embedding)是怎么工作的?
把过往对话转成向量存库;新问题也转向量,去库里找语义最相近的几段,只把这几段喂进上下文。按意思检索,不整本带。
中档9记忆摘要方案的优点和缺点?
优点:把长对话压成几句话,极省 token。缺点:摘要必然丢细节,具体原话可能被概括没了。
中档10为什么说"外部数据库 + 函数调用"最容易做隐私删除?
因为用户偏好是结构化存在表里的,不像混在对话历史里难清理。删一行记录即可,可控、可审计。
中档11参数记忆能通过"多聊"让它学会新知识吗?
不能。权重冻结,聊天不会改它。要让它"知道新东西",要么外挂 RAG/长期记忆,要么重新训练/微调。
▍拔高 5 题
拔高12向量记忆为什么"可能记错"或"漏记"?
它靠语义相似度检索,不是逐字比对。相关但不完全对得上的片段可能被选进来,真正关键但措辞不同的片段可能没被召回。它像凭印象翻笔记,不是录像机。
拔高13真实产品通常只用一种记忆方案吗?
不是,常组合用:近期对话用拼接(保真),早期对话用摘要(省 token),跨会话偏好存数据库(可控),相关资料走向量检索(RAG)。各取所长。
拔高14"模型记住了我的病"这件事,隐私风险在哪?
这些敏感数据存在服务商的库里,可能被用于训练、被内部访问、被泄露或被监管调取。你以为在私下聊天,其实数据被长期留存,应优先用可删除、可关闭记忆的产品。
拔高15记忆摘要为什么常常和向量记忆一起用?
摘要负责把"整段长对话"压成要点放进上下文(省空间),向量库负责从"海量历史"里捞出相关片段(找得准)。一个管压缩,一个管检索,互补。
拔高16有人说"换个更大窗口的模型就不用做记忆系统了",对吗?
不对。大窗口只解决"单次能装多少",解决不了"跨会话记住你是谁",也不省钱(塞得越多越贵)。长期记忆是独立的工程系统,不能靠堆窗口替代。
⑪ 记忆口诀 + 7 天复习计划
三句口诀
① 模型无状态,每次第一次;记忆全外挂,别信它长心。
② 三层要分清:参数是常识、会话是小抄、长期是档案。
③ 四方案:全拼最贵、向量跨会、摘要省字、库表可控;记隐私三问——存啥、谁看、咋删。
| 天 | 任务 | 自检 |
| 第 1 天 | 读②③,理解"无状态"本质 | 说清新开对话为何忘 |
| 第 2 天 | 读④三层记忆表,背知识点卡 | 分清三层记忆 |
| 第 3 天 | 读⑤四方案,做基础 1-6 | 基础全对 |
| 第 4 天 | 做中档 7-11 | 比较四方案取舍 |
| 第 5 天 | 做⑦真题 + 拔高 12-16 | 讲清隐私边界 |
| 第 6-7 天 | 合上书口述"记忆是怎么外挂出来的" | 不看资料全说对 |
📌 知识链路
本节位置
算清楚一台机器到底跑得起多大的模型:权重占多少、KV Cache 占多少、操作系统再占多少。