从理论到落地:分层记忆架构在AI Agent中的应用实践
可以是关系型数据库(如 PostgreSQL 的某个表,用于存储摘要)、键值存储(如 Redis)或简单的文件系统。通常与 LangGraph 的配合使用。内容:对过去某个阶段对话的精炼总结。当对话消息过多时,LLM 可以生成一个简洁的摘要,取代部分原始消息传入上下文,从而节省 Token 并保留核心信息。识别出的对话主题、关键实体、用户近期关注点等。在当前会话中用户表达的临时性偏好。特点:即使
要让 AI Agent 告别“金鱼记忆”,真正变得智能、高效,分层记忆(Tiered Memory Architecture) 是核心策略。它模拟了人类大脑处理信息的方式,将不同类型、不同时效性的记忆存储在最适合它们的地方,从而实现 Agent 的高效运作和智能决策。
为什么需要分层记忆?
想象一下我们的大脑:
- 短期记忆: 你正在进行的对话,脑中即时活跃的上下文。它容量有限,但访问速度极快。
- 中期记忆: 你刚刚读完一本书的核心内容,或者最近几天发生的重大事件。它们比短期记忆更持久,但不如长期记忆那样根深蒂固。
- 长期记忆: 你的个人经历、学到的技能、世界观、以及那些你已经掌握的知识。它容量无限,但检索可能需要更长时间。
AI Agent 也面临类似挑战:
- LLM 上下文窗口限制与成本: 大语言模型虽然强大,但其**上下文窗口(Context Window)**是有限的。将所有历史对话都塞进去,不仅会迅速耗尽上下文限制,导致 Agent “遗忘”早期内容,还会显著增加每次调用的 Token 成本。
- 信息检索效率: 对于海量的外部知识,每次都让 LLM 从头“思考”是不现实的。我们需要快速检索相关信息。
- 不同记忆的特性: 有些记忆需要即时、精准的访问(如当前对话),有些需要结构化存储和高级查询(如用户档案),有些则需要向量匹配和语义搜索(如非结构化知识库)。
分层记忆架构正是为了解决这些问题而生,它通过结合不同存储技术和策略,高效利用计算资源,提升 Agent 的智能性和经济性。
。分层记忆架构的核心组成
一个典型的分层记忆架构通常包含以下几个层次:
1. 短期记忆(Short-Term Memory):即时上下文与当前会话状态
存储位置: Agent 的运行时状态(In-memory State / Graph State),通常由 LangGraph 的 AgentState 对象维护。当 Agent 在运行一个循环(如 ReAct 循环)时,当前步骤的所有输入、输出以及 LLM 的思考过程都暂时保存在这里。
内容:
- 当前对话轮次的消息历史(近期 N 条): 这是 LLM 在生成响应时直接访问的核心上下文。通常指最近的几轮用户和 Agent 的交互。
- 当前任务的中间结果: 例如,Agent 正在分析一个用户查询,解析出的实体、计划步骤等。
- 临时变量和标志: 用于控制 Agent 流程的布尔值或计数器。
特点:
- 访问速度极快: 直接在内存中操作。
- 容量有限: 主要受限于 LLM 的上下文窗口和系统内存。
- 生命周期短: 通常只在当前会话或单个请求的生命周期内有效。
实现方式:
- 在 LangGraph 中,通过
AgentState中的messages: Annotated[List[BaseMessage], add_messages]来自动管理和更新消息列表。 - 其他状态变量(如
current_plan)也是 Agent 运行时状态的一部分。
2. 中期记忆(Medium-Term Memory):对话摘要与近期核心信息
存储位置: 可以是关系型数据库(如 PostgreSQL 的某个表,用于存储摘要)、键值存储(如 Redis)或简单的文件系统。通常与 LangGraph 的 Checkpointer 配合使用。
内容:
- 对话摘要: 对过去某个阶段对话的精炼总结。当对话消息过多时,LLM 可以生成一个简洁的摘要,取代部分原始消息传入上下文,从而节省 Token 并保留核心信息。
- 近期关键信息/主题: 识别出的对话主题、关键实体、用户近期关注点等。
- 特定会话的短期偏好: 在当前会话中用户表达的临时性偏好。
特点:
- 持久化: 即使 Agent 重启,这部分记忆也不会丢失。
- 平衡成本与上下文: 在保持上下文连贯性的同时,有效控制 LLM 的 Token 消耗。
- 检索速度中等: 比直接访问内存慢,但比扫描整个长期知识库快。
实现方式:
-
Agent 节点: 在 LangGraph 中设计一个专门的**“摘要节点”**。当
messages列表的长度超过某个阈值时,触发此节点。 -
LLM 调用: 摘要节点内部调用 LLM(通常是成本较低、上下文窗口较大的模型)对旧消息进行总结。
# 伪代码:摘要节点逻辑 def summarize_conversation_node(state: AgentState) -> AgentState: messages_to_summarize = state['messages'][:-N_recent_messages] # 保留N条最新,其余摘要 if len(messages_to_summarize) > THRESHOLD_FOR_SUMMARY: # 调用LLM生成摘要 summary_prompt = f"请总结以下对话的关键信息,提取用户意图和重要结论:\n{''.join([m.content for m in messages_to_summarize])}" new_summary = summary_llm.invoke(summary_prompt).content # 将旧摘要更新为新摘要,或者添加到历史摘要列表中 current_summary = state.get('conversation_summary', '') state['conversation_summary'] = combine_summaries(current_summary, new_summary) # 累积摘要 # 更新消息列表:移除旧消息,添加摘要消息 state['messages'] = [SystemMessage(content=f"历史对话摘要:{state['conversation_summary']}")] + state['messages'][-N_recent_messages:] return state -
存储: 将生成的摘要存储在 LangGraph Checkpointer 管理的数据库中(如 PostgreSQL),或者在
AgentState中新增一个conversation_summary字段,让 Checkpointer 自动持久化。 -
注入: 在每次调用 LLM 时,将存储的
conversation_summary作为 System Message 或额外的工具参数注入到 LLM 的上下文输入中。
3. 长期记忆(Long-Term Memory):持久化知识与经验积累
存储位置: 专门的数据库,如:
- 关系型数据库(PostgreSQL): 存储结构化数据,如用户档案、配置、历史交易记录、Agent 的“学习成果”(例如,某个用户常问的问题模式、特定客户的偏好列表)。
- 向量数据库(PostgreSQL + pgvector): 存储非结构化的外部知识库(External Knowledge Base),如产品文档、FAQ、历史招聘案例、代码库文档、领域专家知识等。
- 图数据库: 存储实体关系,构建复杂的知识图谱。
内容:
- 外部知识库: 大量的、不随每次对话改变的、需要检索才能获得的知识。
- 用户档案/偏好: 用户的基本信息、长期兴趣、个性化设置、历史行为模式等。
- Agent 学习到的知识/技能: Agent 在长期运行中总结出的经验、优化过的决策规则、对特定问题的解决方案等。
- 历史执行记录/日志: 完整的 Agent 运行日志,用于分析、审计和模型训练。
特点:
- 巨大容量: 能够存储海量数据,几乎无限。
- 持久性最高: 数据长期保存,支持跨用户、跨会话的知识共享和积累。
- 检索方式多样: 通过 SQL 查询、向量相似度搜索、图遍历等方式进行检索。
- 访问速度相对较慢: 通常需要通过专门的工具(Tools)进行查询。
实现方式:
-
PostgreSQL 作为结构化存储:
# 伪代码:存储用户偏好的工具 @tool def save_user_preference(user_id: str, preference_key: str, preference_value: str) -> str: """保存用户的特定偏好到数据库。""" # 实际代码会调用数据库 ORM 或客户端 (如 SQLAlchemy, psycopg2) # 例如:db_session.query(User).filter_by(id=user_id).update({preference_key: preference_value}) print(f"--- 💾 保存用户 {user_id} 的偏好:{preference_key}={preference_value} ---") return"用户偏好已保存。" # 伪代码:读取用户偏好的工具 @tool def get_user_preference(user_id: str, preference_key: str) -> str: """从数据库读取用户的特定偏好。""" # 例如:user_pref = db_session.query(User).filter_by(id=user_id).first().preference_key user_pref = "黑色"if preference_key == "fav_color"else"未知"# 模拟 print(f"--- 📚 读取用户 {user_id} 的偏好:{preference_key}={user_pref} ---") return user_pref- 在 PostgreSQL 中创建独立的表,例如
users_profile、agent_learned_preferences、recruitment_job_templates等。 - 在 LangGraph Agent 中,设计自定义工具(Custom Tools),这些工具内部封装了对 PostgreSQL 数据库的 CRUD (创建、读取、更新、删除) 操作。
- Agent 根据 LLM 的思考(ReAct 模式),决定何时调用这些工具来读取或写入长期结构化记忆。
- 在 PostgreSQL 中创建独立的表,例如
-
PostgreSQL +
pgvector作为向量数据库 (RAG):# 伪代码:RAG 检索工具 # from langchain_community.vectorstores import PGVector # from langchain_openai import OpenAIEmbeddings # # 假设 embeddings 和 vectorstore 已初始化并加载了知识 # embeddings = OpenAIEmbeddings() # pg_vector_store = PGVector( # connection_string=POSTGRES_CONNECTION_STRING, # embedding_function=embeddings, # collection_name="enterprise_knowledge" # ) # @tool # def retrieve_enterprise_knowledge(query: str) -> str: # """从企业知识库中检索与查询相关的文档片段。""" # docs = pg_vector_store.similarity_search(query, k=3) # 检索最相关的3个文档片段 # return "\n".join([doc.page_content for doc in docs]) # # 将 retrieve_enterprise_knowledge 工具添加到 Agent 的工具列表中,让LLM可以调用 # tools.append(retrieve_enterprise_knowledge) # llm_with_tools = llm.bind_tools(tools)- 安装
pgvector扩展并创建表。 - 使用
LangChain的OpenAIEmbeddings或其他Embeddings模型将你的非结构化知识(文档、FAQ、历史招聘数据)转化为向量。 - 使用
langchain-community的PGVector存储器将这些向量及其原始文本存入 PostgreSQL。 - 设计一个检索工具。Agent 在接收用户查询后,如果判断需要外部知识,就会调用这个检索工具。检索工具会执行向量相似度搜索,从
pgvector中找到最相关的文本片段,并将其返回给 Agent。Agent 再将这些片段作为上下文传递给 LLM,生成答案。
- 安装
🎨 分层记忆架构的整体工作流示意
-
用户输入: 用户提出问题或指令。
-
短期记忆(
AgentState.messages)更新: 用户输入作为HumanMessage添加到messages列表。 -
Agent 思考(LLM Node): LLM 接收
AgentState.messages(包含最近的对话历史和可能注入的摘要/长期记忆信息),根据提示词和工具定义进行推理。- 直接回答(结束当前运行)。
- 调用某个工具(转到 Tool Node)。
- 要求澄清(更新状态,引导用户继续输入)。
- (如果有中期记忆) 评估消息长度,如果需要,触发摘要工具。
- (如果有长期记忆) 如果判断需要外部知识或用户偏好,决定调用相应的检索工具或数据查询工具。
-
LLM 可能会决定:
-
工具执行(Tool Node): 如果 LLM 决定调用工具,Agent 执行相应工具(如
search_web,retrieve_enterprise_knowledge,get_user_preference,save_user_preference等)。 -
工具结果: 工具执行结果作为
ToolMessage添加回AgentState.messages。 -
持久化(Checkpointer): LangGraph 的
PostgresSaver在每个“可检查点”的步骤(通常是每次节点执行后)自动将当前的AgentState保存到 PostgreSQL。 -
循环/结束: Agent 根据工具结果或 LLM 的最新判断,决定是继续循环(如返回 LLM 节点进行进一步思考)还是结束当前运行并返回最终答案。
-
中期记忆更新(周期性/事件触发): 如果配置了摘要策略,当消息数量达到阈值时,触发摘要流程,更新中期记忆中的摘要。
-
长期记忆更新(按需): Agent 在执行特定任务时(如用户更新个人信息、Agent 学习到新模式),会通过工具将相关信息写入 PostgreSQL 的长期记忆表中。
⚖️ 挑战、最佳实践与未来展望
核心挑战:
- 数据安全与隐私: 这是最重要的一点。确保 PostgreSQL 部署安全、数据传输加密、访问权限控制,并严格遵守 GDPR、国内数据安全法等法规。
- 模型偏见与公平性: 如果训练数据或 Agent 的学习过程中引入了偏见,长期记忆可能会放大这些偏见。需要持续的监控、审计和去偏见策略。
- 成本与性能: 长期记忆会带来额外的存储和检索成本。优化数据库查询、合理设计 RAG 策略(如分层检索、缓存)、控制 LLM 调用频率和 Token 长度是关键。
- 复杂性管理: 分层记忆架构的引入会增加系统设计的复杂性。需要清晰的模块划分、强大的可观测性工具(如 LangSmith),以及健壮的错误处理机制。
- 模式设计与演进: 随着业务需求变化,记忆的 schema 和内容需要灵活演进。
最佳实践:
- 明确记忆边界: 清楚定义不同层次记忆的职责和存储内容。
- 异步操作: 对于耗时的数据库操作或 LLM 调用,尽量采用异步方式,避免阻塞 Agent 的主流程。
- 监控与调试: 积极利用 LangSmith 等工具,可视化 Agent 的执行路径,监控 Token 使用、延迟、错误,这对于复杂 Agent 的调试至关重要。
- 版本控制: 对 Agent 的逻辑、工具和记忆 schema 进行版本控制,便于回溯和管理。
- 灰度发布与 A/B 测试: 在生产环境中逐步推出新功能,并进行效果评估。
未来展望:
随着 AI Agent 技术的成熟,以及多模态 LLM 和更强大的具身智能体的出现,分层记忆架构将变得更加复杂和精巧。Agent 将不仅仅是简单的“对话机器”,而是能真正地“学习”、“成长”和“决策”,成为各行各业的超级智能助手。
拥有了永不遗忘的记忆,我们的 AI Agent 将不再只是工具,更是能够与人类协作、共同推动生产力进步的“数字生命体”。
普通人如何抓住AI大模型的风口?
领取方式在文末
为什么要学习大模型?
目前AI大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 , 大模型作为其中的重要组成部分 , 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力, 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 ,为各行各业带来了革命性的改变和机遇 。
目前,开源人工智能大模型已应用于医疗、政务、法律、汽车、娱乐、金融、互联网、教育、制造业、企业服务等多个场景,其中,应用于金融、企业服务、制造业和法律领域的大模型在本次调研中占比超过 30%。
随着AI大模型技术的迅速发展,相关岗位的需求也日益增加。大模型产业链催生了一批高薪新职业:
人工智能大潮已来,不加入就可能被淘汰。如果你是技术人,尤其是互联网从业者,现在就开始学习AI大模型技术,真的是给你的人生一个重要建议!
最后
只要你真心想学习AI大模型技术,这份精心整理的学习资料我愿意无偿分享给你,但是想学技术去乱搞的人别来找我!
在当前这个人工智能高速发展的时代,AI大模型正在深刻改变各行各业。我国对高水平AI人才的需求也日益增长,真正懂技术、能落地的人才依旧紧缺。我也希望通过这份资料,能够帮助更多有志于AI领域的朋友入门并深入学习。
真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发
【附赠一节免费的直播讲座,技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等,欢迎大家~】
大模型全套学习资料展示
自我们与MoPaaS魔泊云合作以来,我们不断打磨课程体系与技术内容,在细节上精益求精,同时在技术层面也新增了许多前沿且实用的内容,力求为大家带来更系统、更实战、更落地的大模型学习体验。

希望这份系统、实用的大模型学习路径,能够帮助你从零入门,进阶到实战,真正掌握AI时代的核心技能!
01 教学内容

-
从零到精通完整闭环:【基础理论 →RAG开发 → Agent设计 → 模型微调与私有化部署调→热门技术】5大模块,内容比传统教材更贴近企业实战!
-
大量真实项目案例: 带你亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事!
02适学人群
应届毕业生: 无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。
零基础转型: 非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界。
业务赋能突破瓶颈: 传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型。

vx扫描下方二维码即可
【附赠一节免费的直播讲座,技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等,欢迎大家~】
本教程比较珍贵,仅限大家自行学习,不要传播!更严禁商用!
03 入门到进阶学习路线图
大模型学习路线图,整体分为5个大的阶段:
04 视频和书籍PDF合集

从0到掌握主流大模型技术视频教程(涵盖模型训练、微调、RAG、LangChain、Agent开发等实战方向)

新手必备的大模型学习PDF书单来了!全是硬核知识,帮你少走弯路(不吹牛,真有用)
05 行业报告+白皮书合集
收集70+报告与白皮书,了解行业最新动态!
06 90+份面试题/经验
AI大模型岗位面试经验总结(谁学技术不是为了赚$呢,找个好的岗位很重要)

07 deepseek部署包+技巧大全

由于篇幅有限
只展示部分资料
并且还在持续更新中…
真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发
【附赠一节免费的直播讲座,技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等,欢迎大家~】
更多推荐



所有评论(0)