前面几篇,我们聊了LLM本身,聊了怎么用Prompt跟它沟通,聊了怎么用Tools让它干活。但你有没有想过一个问题:你跟模型聊了半天,它是怎么“记住”你前面说了什么的?为什么有时候它记得很清楚,有时候又像失忆了一样?

这篇就来说清楚这件事。两个核心概念:Context(上下文)Memory(记忆)。很多人把它们混着用,但实际上分工很明确——Context管“这一秒能看到什么”,Memory管“这辈子该记住什么”。

Context:毕业生面前那摞资料

Context,翻译过来叫上下文。它指的是模型这一次推理时眼前能看到的全部信息,而不只是你刚发的那一句话。

想象那个毕业生坐在办公桌前。桌上摊着一堆东西:你的系统设定(他是谁、要遵守什么规则)、你们刚才的对话记录、刚才查天气返回的结果、从知识库里翻出来的几页文档……所有这些,统统一股脑堆在他面前。模型只能根据这摞资料来思考和回答。不在桌上的东西,他就当不存在。

Context有个硬上限,就是前面讲LLM时提到的上下文窗口(Context Window)。桌子的面积是有限的,资料摞太厚,最老的就会被挤掉或截断。所以这不是“记得越多越好”的问题,而是要在有限的桌面空间里,放最相关的东西。

举个例子。你只发了句“帮我查一下”,Context很薄,模型根本不知道你要查什么。但如果你带了最近10轮对话、加上系统角色说明、再加一次天气工具的返回结果,Context就变厚了,模型能连续对话,也能引用刚才查到的天气。

这里要厘清一个容易混淆的点:Prompt和Context的区别。Prompt通常指你输入的那一段话;Context是模型这次推理时实际读到的整包输入。Prompt是Context的一部分,但不是全部。System Prompt、历史消息、工具返回,这些你没手动输入的东西,也在Context里。

Memory:给毕业生一个记事本

Memory,翻译过来叫记忆。它是让AI在多次对话、多次任务之间保留有用信息的能力,而不是每次从零开始。

那个超级毕业生有个特点:默认“考完就忘”。你关掉对话窗口,下次再开,他完全不记得你上次说过你过敏、偏好什么风格、项目背景是什么。Memory就是给他配上一个记事本,甚至一套档案柜——把重要事实写下来,下次见面先翻一眼再回答。

记忆不是只有一种。实际做项目的时候,通常会分层处理,对应不同的存储位置和生命周期。

短期记忆是最直接的一层。它就在Context里——最近几轮对话、刚调用的工具结果,模型直接能“看见”。但它受上下文窗口限制,窗口满了,最老的就被挤掉。好比毕业生桌上正在翻的那几页便签,用完就撤。

会话记忆按单次会话来存。你给每次对话一个threadIdsessionId,把整段聊天记录存进数据库。下次打开同一会话能接着聊,比短期记忆活得久,但一般只限于这一条对话线,不会自动跨到别的窗口。比喻的话,就是给每次面谈单独一本会议记录,下次同一场会议接着念。很多框架提供lastMessages这类配置,比如只保留最近10条,就是控制会话记忆塞进Context的量。

长期记忆跨会话、跨任务仍然保留。用户说过的重要偏好、项目背景、上次任务做到哪一步,这些事实存进数据库、文件或专门的记忆表里,需要时再检索进Context。好比档案柜里的文件夹,换天、换会议室也能翻。你在一个会话里告诉过他自己不吃葱,十天后开一个新会话,他还能记得,这就是长期记忆在起作用。

向量记忆是更高级的一层。把历史内容切成片段,做成Embedding存进向量库,按语义相似度召回——也就是“和当前问题最像的往事”。你问“上次说的那个部署方案”,即使你当时用的词是“上线流程”,它也能从海量历史里捞出相关片段。这套思路和后面要讲的RAG是同一套“向量化→检索”逻辑,但RAG偏外部知识库,向量记忆偏AI自己的经历和对话沉淀。

还有一层叫用户画像。这是从多轮交互里归纳出来的结构化用户信息——称呼、语言习惯、角色、禁忌、常用工具等。它比原始聊天记录更短、更稳定,可以手写维护,也可以让模型在对话后自动抽取更新。相当于人事档案里的“个人简介”一栏,比整箱会议录音好查得多。

把这些串起来看就很清楚了。没有Memory的时候,每次你都要重复“我是素食、不吃葱”。只有会话记忆的话,关掉浏览器再开同一会话还能接着聊,但新开一个会话就失忆了。有了长期记忆加用户画像,新会话里AI仍然知道你不吃葱,还能按你的习惯推荐。配上向量记忆,你问“上次说的那个方案”,即使措辞全变了,也能捞回来。

Context和Memory是什么关系?

这是新手最容易绕晕的地方。一句话讲清楚:Memory负责“存什么、什么时候取出来”;取出来的内容进入Context,模型才能用上

短期记忆基本就等于已在桌上的资料。会话记忆、长期记忆、向量记忆、用户画像,这些都是柜子里按需搬上桌的那几摞。模型本身不直接“读”数据库里的记忆,它只读Context。Memory系统的工作,就是在合适的时机,把合适的记忆片段检索出来,塞进Context。

理解了这一层,你就明白了为什么Context窗口大小这么要命——窗口就是桌子的面积,Memory是仓库。仓库再大,桌面就那么大,你得精挑细选往上搬什么。这也是为什么RAG、向量检索、记忆管理这些话题总被放在一起聊,因为它们解决的是同一件事:在有限的Context里,装进最有价值的信息


Context和Memory这两个概念是理解后面Agent和RAG的基石。下一篇,我们正式进入RAG——怎么让模型在回答之前,先去翻你的私有知识库。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐