news 2026/10/11 1:43:04

Agent 的 Memory:从基本概念到工程实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Agent 的 Memory:从基本概念到工程实践

1. 引言

随着大语言模型(LLM)与智能体(Agent)技术的快速发展,Memory(记忆)已经成为决定 Agent 智能化水平的关键组件。一个没有记忆的 Agent,每次对话都像第一次见面,无法记住用户的偏好、历史决策和上下文信息;而一个拥有良好记忆设计的 Agent,则能持续积累经验、形成个性化服务,并在复杂任务中保持连贯性。

本文将从基本概念出发,逐步深入到核心技术、开源框架对比、应用场景实践,最后总结在实际落地过程中需要注意的几个关键问题,并附上参考链接,帮助读者系统性地理解和构建 Agent 的 Memory 体系。

2. 基本概念

2.1 什么是 Agent Memory

Agent Memory 是指智能体在运行过程中存储、管理和检索信息的能力。它让 Agent 能够跨越单次对话的边界,记住用户偏好、任务状态、历史决策和领域知识,从而在长期交互中表现出连贯性和个性化。

2.2 Memory 的分类

从时间维度划分,Agent Memory 通常分为三类:

  • 短期记忆(Short-term Memory):指当前会话上下文中的信息,通常由对话历史、当前任务状态组成,受限于 LLM 的上下文窗口长度。
  • 长期记忆(Long-term Memory):指跨会话持久化的信息,包括用户画像、历史偏好、已完成任务的结果等,通常存储在外部数据库或向量库中。
  • 工作记忆(Working Memory):指 Agent 在执行当前任务时临时持有的中间状态,如推理过程中的中间步骤、待办清单等。

从内容来源划分,还可以分为:

  • 情景记忆(Episodic Memory):记录具体发生过的事件和交互历史。
  • 语义记忆(Semantic Memory):存储事实性知识和概念性理解。
  • 程序性记忆(Procedural Memory):保存如何执行任务的技能和流程。

2.3 为什么 Memory 对 Agent 至关重要

  • 个性化体验:记住用户偏好,提供定制化回复。
  • 任务连续性:多轮任务中保持状态一致,避免重复提问。
  • 知识积累:从历史交互中学习,持续优化行为。
  • 多 Agent 协作:共享记忆让多个 Agent 之间协同更高效。

3. 核心技术

3.1 记忆的存储与索引

Memory 的存储方案直接影响检索效率与扩展性。常见方案包括:

  • 向量数据库:将文本嵌入为向量,支持语义相似度检索,适合非结构化记忆。
  • 关系型数据库:适合结构化记忆,如用户属性、任务状态等。
  • 键值存储:适合快速读写的小型记忆片段。
  • 图数据库:适合存储实体间复杂关系,如知识图谱。

3.2 记忆的写入与更新

记忆写入需要解决「记什么」和「怎么记」的问题:

  • 记忆提取:从对话中自动抽取值得记住的信息,可通过 LLM 判断信息重要性。
  • 记忆压缩:对长对话进行摘要,保留关键信息,降低存储成本。
  • 记忆更新:当新信息与旧记忆冲突时,需要设计更新或覆盖策略。

3.3 记忆的检索与召回

检索是 Memory 系统的核心瓶颈,常用技术包括:

  • 向量相似度检索:基于 embedding 计算语义距离,召回最相关的记忆片段。
  • 混合检索:结合关键词匹配(BM25)与向量检索,兼顾精确与语义。
  • 重排序(Rerank):对初筛结果进行精排,提升召回质量。
  • 时间衰减:对旧记忆进行权重衰减,让近期信息更优先。

3.4 记忆的遗忘机制

遗忘是记忆系统设计中常被忽视却至关重要的一环:

  • 显式遗忘:用户主动删除或指定过期时间。
  • 隐式遗忘:系统根据访问频率、时间戳自动降权或清理。
  • 记忆合并:将多条相似记忆合并为一条概括性记忆,减少冗余。

3.5 记忆与上下文窗口的协同

LLM 的上下文窗口有限,Memory 系统需要与上下文管理协同:

  • 动态注入:根据当前任务,只把最相关的记忆片段注入提示词。
  • 分层摘要:将历史对话分层摘要,逐层压缩,保留高层语义。
  • 外部工具调用:当记忆量过大时,通过工具调用按需检索,而非全量注入。

4. 已开源框架的对比分析

4.1 主流开源框架概览

框架核心语言Memory 特点适用场景
LangChainPython提供 Memory 模块,支持对话缓冲、摘要、向量存储等多种类型通用 Agent 开发
LlamaIndexPython以索引为核心,支持文档级与对话级记忆管理知识密集型应用
AutoGPTPython基于向量数据库的长期记忆,支持任务分解与自我反思自主任务执行
MemGPTPython模拟操作系统分层内存管理,突破上下文窗口限制长对话、虚拟助手
ZepPython/Go专为 Agent 设计的记忆服务,自动提取实体与摘要生产级对话应用
Letta(原 MemGPT)Python提供可管理的 Agent 记忆,支持记忆编辑与检索个性化助手

4.2 框架对比维度

  • 记忆类型支持:是否同时支持短期、长期、情景、语义记忆。
  • 存储后端:支持哪些数据库(向量库、关系库、图库)。
  • 检索能力:是否支持混合检索、重排序、时间衰减。
  • 易用性:API 设计是否简洁,接入成本高低。
  • 生产就绪度:是否支持持久化、并发、可观测性。

4.3 选型建议

  • 若追求快速原型验证,推荐LangChain,其 Memory 模块开箱即用。
  • 若构建知识密集型应用(如 RAG 问答),推荐LlamaIndex。
  • 若需要突破上下文窗口限制、构建长期自主 Agent,推荐MemGPT / Letta。
  • 若面向生产环境、需要开箱即用的记忆服务,推荐Zep。

5. 应用场景实践

5.1 个性化对话助手

场景描述:助手需要记住用户的偏好(如称呼、语言风格、常用工具),在多次会话中保持一致。

实践方案:

  • 使用向量数据库存储用户画像与偏好。
  • 每次对话开始时,检索该用户的历史记忆并注入系统提示词。
  • 对话结束后,提取新信息并更新记忆。
fromlangchain.memoryimportVectorStoreRetrieverMemoryfromlangchain.vectorstoresimportFAISSfromlangchain.embeddingsimportOpenAIEmbeddings# 初始化向量存储vectorstore=FAISS.load_local("user_memory",OpenAIEmbeddings())# 创建基于向量检索的记忆memory=VectorStoreRetrieverMemory(retriever=vectorstore.as_retriever(search_kwargs={"k":3}),memory_key="history")# 注入到对话链fromlangchain.chainsimportConversationChainfromlangchain.llmsimportOpenAI llm=OpenAI(temperature=0.7)conversation=ConversationChain(llm=llm,memory=memory)

5.2 多轮任务执行 Agent

场景描述:Agent 需要在一个多步骤任务中保持状态,如订机票、安排行程。

实践方案:

  • 使用工作记忆保存当前任务状态(已订航班、待定酒店)。
  • 每完成一步,更新工作记忆。
  • 任务中断后,可从记忆恢复继续执行。
# 使用简单的字典作为工作记忆working_memory={"flight_booked":False,"hotel_booked":False,"current_step":"search_flight"}defupdate_memory(key,value):working_memory[key]=value# 持久化到数据库save_to_db(working_memory)

5.3 知识库问答与 RAG 结合

场景描述:Agent 需要基于企业文档回答用户问题,并记住用户关注过的主题。

实践方案:

  • 将文档切分为块,存入向量库作为语义记忆。
  • 用户提问时,先检索相关文档块,再结合用户历史关注主题生成回答。
  • 将用户提问与回答存入情景记忆,用于后续推荐。

5.5 中医智能问诊与辨证助手

场景描述:Agent 需要基于中医理论,在多次问诊中记住患者的体质、病史、用药反应与生活习惯,辅助医生进行辨证论治与长期健康管理。

实践方案:

  • 使用向量数据库存储患者的长期健康档案,包括体质类型(如气虚、阳虚)、既往病史、过敏史与用药记录。
  • 每次问诊开始时,检索该患者的长期记忆并注入系统提示词,让 Agent 结合既往情况给出更贴合体质的辨证建议。
  • 问诊结束后,将本次症状、舌象、脉象、处方与疗效反馈写入情景记忆,持续更新患者的健康画像。
  • 结合语义记忆沉淀中医知识库(如《伤寒论》条文、方剂组成、穴位功效),供 Agent 在辨证时检索参考。
fromlangchain.memoryimportVectorStoreRetrieverMemoryfromlangchain.vectorstoresimportFAISSfromlangchain.embeddingsimportOpenAIEmbeddings# 加载患者长期健康档案向量库vectorstore=FAISS.load_local("patient_health_profile",OpenAIEmbeddings())# 创建基于向量检索的记忆,按患者维度召回历史问诊记录memory=VectorStoreRetrieverMemory(retriever=vectorstore.as_retriever(search_kwargs={"k":5}),memory_key="patient_history")# 注入到中医辨证对话链fromlangchain.chainsimportConversationChainfromlangchain.llmsimportOpenAI llm=OpenAI(temperature=0.5)tcm_consultation=ConversationChain(llm=llm,memory=memory)

关键点:中医辨证高度依赖长期连续观察,Agent Memory 让「同一位患者」的体质变化、用药反应与疗效趋势得以跨会话沉淀,从而辅助医生做出更精准的辨证与调方决策。

5.4 多 Agent 协作中的共享记忆

场景描述:多个 Agent 分工协作,需要共享任务进度与中间结果。

实践方案:

  • 使用共享数据库或消息队列作为公共记忆区。
  • 每个 Agent 读写共享记忆,避免重复劳动。
  • 通过记忆中的任务状态协调各 Agent 的执行顺序。

6. 需要注意的几个问题

6.1 隐私与安全

  • 敏感信息脱敏:写入记忆前对个人隐私信息进行脱敏处理。
  • 访问控制:不同用户之间的记忆必须隔离,防止数据泄露。
  • 合规要求:遵守 GDPR 等数据保护法规,提供记忆删除入口。

6.2 记忆污染与错误累积

  • 错误记忆:LLM 提取记忆时可能出错,需要人工审核或置信度过滤。
  • 偏见固化:历史记忆中的偏见会被持续放大,需定期审查。
  • 冲突处理:新旧记忆冲突时,需要明确的覆盖策略。

6.3 检索质量与性能

  • 召回率与准确率平衡:检索结果过多会稀释注意力,过少则丢失关键信息。
  • 延迟控制:记忆检索会增加响应延迟,需要缓存与预取优化。
  • 扩展性:记忆量增长后,检索性能会下降,需要分片与索引优化。

6.4 成本控制

  • 存储成本:向量数据库与 embedding 计算都有成本,需要控制记忆规模。
  • Token 成本:注入记忆会占用上下文窗口,增加 Token 消耗。
  • 定期清理:设计遗忘机制,定期清理低价值记忆。

6.5 可观测性与调试

  • 记忆可视化:提供界面查看 Agent 当前记忆内容,便于调试。
  • 日志记录:记录记忆的写入、检索、更新操作,便于回溯。
  • 版本管理:对记忆结构变更进行版本管理,避免破坏性更新。

7. 参考链接

  • LangChain Memory 文档:https://python.langchain.com/docs/modules/memory/
  • LlamaIndex 官方文档:https://docs.llamaindex.ai/
  • MemGPT 论文与代码:https://memgpt.ai/
  • Zep 官方文档:https://www.getzep.com/
  • AutoGPT 项目地址:https://github.com/Significant-Gravitas/AutoGPT
  • Letta 项目地址:https://github.com/letta-ai/letta
  • 向量数据库对比:https://github.com/erikbern/ann-benchmarks
  • RAG 与记忆结合实践:https://www.pinecone.io/learn/retrieval-augmented-generation/
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/11 1:42:35

05-编码与单元测试

第 5 章 编码与单元测试 学习目标 理解"编码是设计的精确化"这一原则掌握编码规范与可读性实践理解重构(refactoring)及其安全网(自动化测试)掌握单元测试的基本原则(Arrange-Act-Assert、隔离、可重复)理解 TDD(测试驱动开发)的红-绿-重构循环了解代码覆盖率与静态分…

作者头像 李华
网站建设 2026/10/11 1:42:22

AI Agent进入生产后,如何做到可观测、可评估、可运营?

导读 本文整理自云器科技技术专家蔡瀛在 DataFun 云器科技直播中的分享。随着 AI Agent 从 Demo 进入真实业务,团队需要回答的问题已经从“能不能跑”变成“任务到底有没有做对”。围绕这一问题,云器科技介绍了 SingSight 的产品设计、生产环境中的持续…

作者头像 李华
网站建设 2026/10/11 1:42:02

用Python做股票价格序列相似性分析:DTW与形态匹配实践

简介:基于Python的股票价格序列相似性分析课程设计资源包,面向金融数据分析、Python编程及算法课程设计人群,围绕动态时间弯曲(DTW)算法实现股票价格序列的相似性度量,并通过折线图直观呈现对比结果&#x…

作者头像 李华
网站建设 2026/10/11 1:41:40

基于STM32单片机超声波雷达测距仪雷达扫描视频监控温补蓝牙/WiFi/视频监控/云平台无线APP-DIY设计S468

S468-超声波雷达动态扫描舵机温度补偿调整方向启动停止测距报警频率变化扫描范围OLED屏声光提醒按键蓝牙/WiFi/视频监控/云平台APP本系统由STM32F103C8T6单片机核心板、OLED屏、无线蓝牙/WIFI/视频监控/云平台模块-可选、超声波模块、温度补偿检测电路、舵机控制电路、蜂鸣器报…

作者头像 李华