当前位置: 首页 > news >正文

langmem

https://github.com/langchain-ai/langmem

Advances and Challenges in Foundation Agents–Memory调研

https://www.doubao.com/chat/15848166096118786

LangMem的记忆系统通过多层次的设计实现了LLM应用中的长期记忆管理,核心围绕记忆类型划分记忆提取与更新机制存储与检索策略以及集成模式展开,具体实现方式如下:

1. 记忆类型的结构化定义

系统将记忆划分为三种类型,每种类型有明确的用途和存储模式,对应人类记忆的结构:

  • 语义记忆(Semantic Memory):存储事实和知识(如用户偏好、专业技能),以集合(Collection)档案(Profile) 形式存储。
    • 集合:记录大量无边界信息(如用户的多个兴趣点),适合 runtime 搜索。
    • 档案:遵循严格 schema 的特定任务信息(如用户的姓名、沟通风格),便于快速查询。
  • 情景记忆(Episodic Memory):存储过去的交互经验(如成功的问题解决案例),包含场景、思考过程、行动和结果四要素,用于指导未来行为。
  • 程序记忆(Procedural Memory):存储系统行为规则(如响应风格、交互逻辑),通过提示词优化实现,随用户反馈动态更新。

2. 记忆的提取与更新机制

记忆的形成分为两种方式,平衡实时性与深度处理:

  • 主动形成(Active Formation)
    在对话过程中实时提取记忆(如用户提到偏好时立即记录),通过 create_memory_manager 工具调用LLM分析对话,生成结构化记忆(支持Pydantic模型定义格式)。

    • 支持插入、更新、删除操作(可通过参数 enable_inserts 等控制)。
    • 示例:用户说“我喜欢深色模式”时,工具会生成包含“偏好类型、内容、上下文”的语义记忆。
  • 背景形成(Background Formation)
    对话间隙异步处理记忆,通过LLM分析历史交互中的模式(如用户对哪种解释方式更敏感),生成总结性记忆,不影响实时响应速度。

3. 存储与检索系统

基于LangGraph的存储原语,支持灵活的记忆持久化和检索:

  • 存储结构
    记忆按命名空间(Namespace) 分层组织(如 (组织ID, 用户ID, 记忆类型)),支持动态模板变量(如 {user_id}),方便多用户、多场景管理。
  • 检索方式
    • 直接访问:通过键获取特定记忆。
    • 语义搜索:基于内容相似度查找相关记忆。
    • 元数据过滤:按记忆属性(如创建时间、类型)筛选。

4. 核心工具与集成模式

  • 核心API

    • create_memory_manager:提取、更新记忆的基础工具,支持结构化(Pydantic模型)和非结构化记忆,独立于存储系统。
    • create_prompt_optimizer:优化程序记忆(如系统提示词),根据对话反馈调整agent行为。
  • 状态集成
    结合LangGraph的存储层,提供 Store ManagersMemory Management Tools,实现记忆的自动持久化和agent的直接调用(如通过工具在对话中主动查询记忆)。

示例流程

  1. 用户对话输入后,memory_manager 实时分析内容,提取语义记忆(如用户偏好)或情景记忆(如成功的解释案例)。
  2. 记忆按命名空间存储在LangGraph的 BaseStore 中,支持Postgres等持久化存储。
  3. 后续对话中,agent通过语义搜索或元数据过滤检索相关记忆,结合程序记忆的规则生成个性化响应。
  4. 背景任务定期优化记忆(如合并重复信息、更新过时内容),提升长期有效性。

通过这种设计,LangMem实现了记忆的动态学习、持久化存储和高效复用,让agent能够跨会话适应用户需求。

http://www.dtcms.com/a/326269.html

相关文章:

  • 排序与查找,简略版
  • 《算法导论》第 18 章 - B 树
  • linux 秒 安装谷歌浏览器 区分ubuntu和centos 给python爬取网站使用
  • Haystack:面向大模型应用的模块化检索增强生成(RAG)框架
  • 简单Modules 的配置与管理,灵活应对多版本软件环境的需求。
  • 基于SpringBoot+Uniapp的血压监控小程序(Echarts图形化分析)
  • C++进阶:C++11(2)
  • 应用层模拟面试题
  • 【Jmeter】两个函数拼接
  • IPCP(IP Control Protocol,IP控制协议)
  • 李宏毅2025《机器学习》-第十讲:AI“思想钢印”:深入解析大模型的知识编辑技术
  • docter的使用、vscode(cursor)和docker的连接,详细分析说明
  • (一)vscode搭建espidf环境
  • react路由跳转与路由懒加载等(对照vue来说一说不同之处)
  • 前端开发:React(3)—— 组件运作和事件处理
  • 【论文阅读】BEVFormer论文解析及Temporal Self-Attention、Spatial Cross-Attention注意力机制详解及代码示例
  • 如何平衡短期与长期需求
  • PCIE 设备百科
  • 【运维进阶】LAMPLNMP 最佳实践
  • MPXxx6115A Series的概述以及 MPXxx6115A series 用OSS-ECAL的提供情况
  • Pytest 全流程解析:执行机制与报告生成实战指南
  • html转成markdown(1.0.0)
  • Eino中的两种应用模式:“单独使用”和“在编排中使用”
  • ZKmall开源商城多商户架构:平衡管理与运营的技术方案
  • 【lucene】livedocs描述
  • 如何开始创业?
  • OpenBMC中phosphor-ipmi-host深度解析:架构、原理与应用实践
  • 机器学习TF-IDF算法详解
  • scikit-learn/sklearn学习|岭回归解读
  • AI 视频卫士:AI 无人机巡检,适配多元河道场景的治理利器