尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

AI Agent 的记忆机制:短期记忆与长期记忆实现

AI Agent 的记忆机制:短期记忆与长期记忆实现
📅 发布时间:2026/7/1 16:47:25

AI Agent 的记忆机制:短期记忆与长期记忆实现

记忆是 AI Agent 从"单次问答工具"进化为"持续学习助手"的关键。本文将系统介绍 Agent 的两种记忆类型及其实现方案。

一、为什么 Agent 需要记忆?

没有记忆的 Agent 就像金鱼——每次对话都是全新的开始。记忆让 Agent 能够:

  • 记住用户偏好(如"我喜欢简洁的回答")
  • 保持对话上下文(多轮对话不脱节)
  • 积累知识经验(从历史交互中学习)
  • 识别用户身份(不同用户不同服务)

二、记忆分类:短期 vs 长期

维度 短期记忆 | 长期记忆 ----------------|----------存储内容当前对话上下文 | 历史对话、知识、经验生命周期会话期间 | 永久存储存储位置内存/Redis | 数据库/向量库检索方式全量加载 | 语义检索(相似度)技术方案ConversationBuffer | VectorStore + RAG

三、短期记忆实现

1. ConversationBufferMemory(缓冲区记忆)

最简单的短期记忆,将所有对话历史保存在内存中。

from langchain.memory import ConversationBufferMemory

memory = ConversationBufferMemory()memory.save_context({"input": "你好"}, {"output": "你好!有什么可以帮你的?"})memory.save_context({"input": "我叫张三"}, {"output": "你好张三,很高兴认识你!"})

print(memory.load_memory_variables({})) # 返回完整对话历史

问题:对话越长,Token 消耗越多,最终超出模型上下文窗口。

2. ConversationBufferWindowMemory(滑动窗口)

只保留最近 N 轮对话,控制上下文长度。

from langchain.memory import ConversationBufferWindowMemory

memory = ConversationBufferWindowMemory(k=3) # 只保留最近3轮

3. ConversationSummaryMemory(摘要记忆)

当对话过长时,自动用 LLM 生成摘要,替代原始对话。

from langchain.memory import ConversationSummaryMemoryfrom langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-4")memory = ConversationSummaryMemory(llm=llm)

memory.save_context({"input": "今天天气很好"}, {"output": "是的,适合出去走走!"})memory.save_context({"input": "你喜欢什么运动?"}, {"output": "我喜欢跑步和游泳。"})

print(memory.load_memory_variables({}))

输出:总结:用户今天提到天气好,询问了我的运动喜好。我喜欢跑步和游泳。

4. 组合方案:Token 限制 + 摘要

from langchain.memory import ConversationSummaryBufferMemory

memory = ConversationSummaryBufferMemory( llm=llm, max_token_limit=1000 # 超过1000 token时自动摘要)

四、长期记忆实现

长期记忆的核心是向量数据库(Vector Store)+ 语义检索。Agent 可以将历史信息存入向量库,需要时检索相关内容。

1. 基础架构

用户输入 -> 向量化 -> 相似度检索 -> 召回相关记忆 -> 注入Prompt -> LLM生成回复 ^ 历史对话存入向量库

2. 使用 FAISS 实现向量记忆

from langchain.memory import VectorStoreRetrieverMemoryfrom langchain_community.vectorstores import FAISSfrom langchain_openai import OpenAIEmbeddings, ChatOpenAIfrom langchain.schema import Document

初始化向量库和嵌入模型

embeddings = OpenAIEmbeddings()vector_store = FAISS.from_documents([Document(page_content="初始文档")], embeddings)retriever = vector_store.as_retriever(search_kwargs={"k": 3})

创建向量记忆

memory = VectorStoreRetrieverMemory(retriever=retriever)

存储记忆

memory.save_context( {"input": "我的职业是软件工程师"}, {"output": "好的,我记住了你是一名软件工程师。"})

检索记忆(根据语义相似度)

relevant = memory.load_memory_variables({"input": "我平时写什么代码?"})print(relevant)

可能召回:"我的职业是软件工程师"

3. 使用 ChromaDB 持久化存储

from langchain_community.vectorstores import Chroma

持久化到磁盘

vector_store = Chroma( persist_directory="./chroma_db", embedding_function=embeddings)vector_store.persist()

4. 自定义长期记忆类

class LongTermMemory: def __init__(self, vector_store, embedding_model): self.vector_store = vector_store self.embedding = embedding_model def remember(self, text, metadata=None): """存储记忆""" doc = Document(page_content=text, metadata=metadata or {}) self.vector_store.add_documents([doc]) def recall(self, query, k=3): """检索记忆""" results = self.vector_store.similarity_search(query, k=k) return [r.page_content for r in results]

使用示例

ltm = LongTermMemory(vector_store, embeddings)ltm.remember("用户喜欢吃川菜,尤其是火锅", {"type": "preference", "user": "user_001"})ltm.remember("用户在深圳工作", {"type": "profile", "user": "user_001"})

print(ltm.recall("用户有什么饮食偏好?"))

输出:['用户喜欢吃川菜,尤其是火锅']

五、混合记忆架构:短期 + 长期

生产环境中通常需要同时使用两种记忆:

from langchain.memory import CombinedMemory

class HybridMemory: def __init__(self, short_term, long_term): self.short_term = short_term # ConversationBufferMemory self.long_term = long_term # VectorStoreRetrieverMemory def load_memory(self, query): """加载混合记忆""" short = self.short_term.load_memory_variables({}) long = self.long_term.load_memory_variables({"input": query}) return { "chat_history": short.get("history", ""), "relevant_memories": long.get("memory", "") }

使用

hybrid = HybridMemory( short_term=ConversationBufferMemory(memory_key="chat_history"), long_term=VectorStoreRetrieverMemory(retriever=retriever, memory_key="relevant_memories"))

六、记忆架构对比表

方案 适用场景 | 优点 | 缺点 ----------------|------|------ BufferMemory 短对话 | 实现简单 | 无法处理长对话 WindowMemory 中等长度对话 | 控制Token消耗 | 可能丢失重要信息 SummaryMemory 长对话 | 保留核心信息 | 摘要可能丢失细节 SummaryBufferMemory 超长对话 | 自动平衡 | 需要LLM生成摘要 VectorStoreMemory 长期知识 | 语义检索能力强 | 需要向量数据库 HybridMemory 生产环境 | 兼顾短期和长期 | 架构复杂

七、总结

记忆机制是 Agent 智能化的重要基石。短期记忆解决"对话连贯性",长期记忆解决"知识积累"。在实际项目中,推荐采用SummaryBufferMemory + VectorStore的混合方案,既能控制上下文成本,又能实现长期知识检索。

---

下一篇将介绍 Agent 的工具调用(Tool Use)实战,教你如何让 Agent 真正"动手做事"。

相关新闻

  • KKManager终极指南:如何三分钟搞定游戏Mod管理,告别手动安装烦恼
  • DayZ单机离线模式完全指南:打造专属末日生存世界
  • AI写专著神器揭秘!利用AI工具,20万字专著写作效率提升数倍!

最新新闻

  • 2026年无外机厨房空调大比拼:哪款技术更胜一筹?
  • 别小看小摄像头,Windows Hello 红外才是 PC 安全守门员
  • Steam成就管理终极指南:轻松掌控你的游戏成就
  • IntelliJ IDEA中5款AI插件隐私合规性穿透审计(GDPR/等保2.0/信创适配三重验证):2款默认上传生产代码至境外服务器,1款支持纯离线LLM模型——附工信部认证清单编号
  • IDC报告显示:低代码增速42.3%,低代码工作流凭什么成为新引擎?
  • Codex++ 启动 Codex 失败排查教程

日新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号