在agent开发中短期记忆、长期记忆、对话历史也算是耳熟能详的概念了,一开始我一直很迷惑,经过一些时间的实践和探索,得出了一些结论,今天就用十分凝练易懂的方式让你5分钟贯通。
- 什么是短期记忆、长期记忆、对话历史?
- 他们在agent运行的过程中起到什么作用?
- 🌟彼此之间如何相互配合运作🌟
一、概念简介
其实对话记忆这些在简单的chat_bot场景、work_flow中也是经常用到的,不止局限于agent场景,可以把思路打开。下面我来介绍他们的概念和作用。
短期记忆
所谓短期记忆,就是llm所读取的上下文,这部分记忆长度有限受模型上下文窗口的限制,目前市面上主流大模型的上下文基本都在128k,短期记忆需要高频次读写,所以一般存储在内存当中,但是并非绝对,也可以做持久化处理。
由于存储在内存中这就导致短期记忆具有临时性、线程性、会话性这些特点,线程重启或对话关闭便会丢失并且不可打破对话边界。
在我们开发agent的过程中常用的一些开发框架比如langchain都有对应的组件,其中的ChatMessageHistory是所有高级记忆组件的底层依赖,本质是对「
List[BaseMessage]」的轻量封装,提供增、删、查、清空消息列表的便捷方法,支持内存中临时存储消息 。BaseMessage是所有消息对象的基类
长期记忆
长期记忆是突破会话边界、可持久化存储、能按需检索复用的非临时信息集合,核心作用是让 AI 具备跨时间、跨会话的 “持续认知能力”,而非仅局限于当前对话的上下文。 在长期记忆中不仅可以存储对话历史,更可以对用户的偏好进行总结存储,让agent在与用户交互的过程中更贴近用户的需求。
长期记忆可以保障llm即使经过多轮对话或者超长时间跨度依然可以“想起”曾经的内容,与短期记忆结合构成一个相对完整的记忆体系。
Gemini就会对用户的偏好、特性进行总结记忆,比方说他会从我跟他的交互历史中判断出我的职业是程序员,并且主要从事agent开发,那么后续的一些对话中他的回答就会考虑这些,当然这点的好坏其实是具有辩证性的:当我们问一些行业相关的东西,他会根据你的职业给出针对性的建议,显然体验很好;但是问一些日常问题他也会使用程序员思维来回答你,这就有点没必要了。
对话历史
很奇怪吧,为什么我上面说“短期记忆+长期记忆”只是相对完整的记忆体系,为什么我要提出对话历史这个概念呢?
因为一个成熟可工程化落地的项目中:短期记忆和长期记忆都是依托于对话历史的。
我这里说的对话历史,是完整的、全量的用户和agent交互记录,包括思考过程、工具调用等所有的信息。用几个场景就能让你明白对话历史的重要性。
场景1:
用户与模型对话了200轮远超模型上下文窗口,需要多次压缩投喂给ai,已经损失很多内容了,但是用户视角来看,内容依然是完整的,这里前端上下文的加载展示,需要全量完整的对话历史
场景2:
用户关闭了对话,下次对话开始时,短期记忆因为存储在内存中完全丢失,但是用户继续询问,他依然有当时的记忆,ai的记忆从哪里来的?全部从长期记忆中找的吗?不是的,长期记忆存了多次对话的信息,记录的内容更半结构化、个性化,并且已经经过一次压缩抽取,内容多、杂,如果再加载到llm对话上下文中还需要压缩,会丢失很多信息,并且会存在上下文语意不连贯的问题。
那怎么办?
——根据完整对话历史进行总结,加载到当前上下文中,构建短期记忆,可以保证语意连贯,避免碎片化信息
场景3:
用户跟大模型对话,快要超出模型上下文窗口时进行短期记忆压缩,构建长期记忆时怎么办?用压缩后的短期记忆 ?肯定不行啊,还是上面的问题两次压缩总结丢失内容,这个时候就需要原始的对话历史来构建长期记忆了
总结来说,对话历史的作用是:
- 向用户展示对话历史
- 会话重启后重构短期记忆
- 在交互过程中构建长期记忆
二、他们三者如何相互配合运作
对话进行时运作流程示意
- 用户和ai的每一条消息都会被实时同步到数据库中结构化存储
- 当对话超出我们预设的对话压缩的阈值时,对短期记忆进行压缩,这时是对内存中的对话历史进行压缩。
- 每过n轮自动触发长期记忆归档,将传统数据库中的最近的n轮对话进行半结构化归档存入向量数据库作为长期记忆。
对话重启后运作流程示意
当对话被关闭,内存中的上下文都会被清空,重新进行对话时,要从传统数据库中读取历史消息进行总结,加载到上下文列表中;与此同时也返回给前端,用于展示。当用户的query到达大模型以后按需求去向量数据库检索信息,将召回的内容填入上下文一个专属的长期记忆区域(RAG)
注意在上下文窗口中将长期记忆和短期记忆分开是必要的,具体原因后面的文章会细讲
三、总结
在 Agent 开发的工程实践中,三者的关系可总结为:对话历史是数据底座,短期记忆是逻辑现场,长期记忆是知识资产。
核心协作逻辑提炼:
数据流向:
- 对话历史(Source)→\rightarrow→ 实时落库,作为最原始的真值来源。
- 短期记忆(Runtime)→\rightarrow→ 从对话历史截取/总结,维持当前任务的推理连贯性。
- 长期记忆(Asset)→\rightarrow→ 从对话历史中异步提取(Extraction),实现跨会话的个性化对齐。
核心差异表:
| 维度 | 短期记忆 (STM) | 长期记忆 (LTM) | 对话历史 (History) |
|---|---|---|---|
| 存储载体 | 内存 / Redis | 向量数据库 (Pinecone/Milvus) | 关系型数据库 (MySQL/PG) |
| 主要功能 | 维持当前会话逻辑 | 跨会话偏好对齐 & 知识检索 | 审计、回放、数据加工 |
| 更新频率 | 随每轮对话实时读写 | 异步/周期性抽取更新 | 随消息实时追加 |
开发者金律:
- 不要信任单一记忆:短期记忆会因长度溢出而丢失,长期记忆会因检索精度而产生偏差,必须依赖对话历史进行动态重构。
- 显式上下文路由:在 Prompt 构建中,必须通过结构化标签明确区分[当前对话]与[召回背景],避免模型产生角色或时序上的认知混淆。
一句话贯通:对话历史记录了“发生了什么”,长期记忆提炼了“你是谁”,短期记忆决定了“现在该做什么”。
学习资源推荐
如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示
因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取
四、AI大模型商业化落地方案
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。