Mem0,用LLM给智能体解决记忆问题,开源

admin 2025年5月28日09:33:16评论37 views字数 2511阅读8分22秒阅读模式
人类记忆是智力的基础——它塑造我们的身份,指导决策,并使我们能够学习、适应和建立有意义的关系,记忆也是人类个性化的基础。
大模型在完成训练后,知识不再增加,记忆不再增加,是非常大的问题。现在快速发展的智能体,就是在大模型的外围增加工具能力,规划能力和记忆能力。从现在的情况看,工具能力在函数调用(Function calling)和MCP之后,得到迅速发展,规划能力则在推理类模型(GPT O*,Deepseek R*)的加持下,也得到较好的发展。
Mem0,用LLM给智能体解决记忆问题,开源
而记忆能力,发展一直不理想。RAG,向量数据库都可以理解为在这方面的努力,但目前还是针对外围数据的处理,算不上模型的记忆能力。
2024年6月,Openai收购了数据库公司Rockset,(Rockset主要的技术是向量数据库),并于今年推出了记忆功能,Openai memory。这是个很好的探索,但至今,Openai并没有公布其记忆的方案原理。同时,这项目功能还无法通过API实现,也限制了它的使用范围。
最近,国外的Mem0针对其AI记忆技术发表了论文,并开源,详细阐述了其技术原理和实现方法,值得研究。
01

大模型记忆的难点

1.大模型有输入长度限制(及成本),而会话会很长。随着人机之间有意义的关系在数周或数月内发展,对话历史不可避免地会超出最宽松的上下文限制。
2.更重要的是,现实世界的对话很少能保持主题的连续性。用户可能会提到饮食偏好(素食),然后进行数小时不相关的编程任务讨论,最后才返回到与食物相关的晚餐选择查询。在这种情况下,全上下文方法需要推理大量不相关的信息,而关键的饮食偏好可能会被掩埋在成千上万个编码讨论的标记中。
3.仅仅呈现更长的上下文并不能确保有效检索或利用过去的信息,因为注意力机制会因处理较远的标记而退化。为了应对这些挑战,人工智能代理必须采用超越静态上下文扩展的记忆系统。强大的人工智能记忆应该选择性地存储重要信息,巩固相关概念,并在需要时检索相关细节——模拟人类的认知过程 。
简单概括:AI的记忆必须把有价值的信息筛选出来,同时作归类记忆和检索。
02

Mem0的方案

Mem0通过引入两阶段内存流水线来应对这些挑战,该流水线仅提取、合并和检索最突出的对话事实。这种方法确保 LLM 代理能够保持连贯的长期记忆,而不会降低速度。
Mem0的技术方案分两个,分别是Mem0和Mem0g,二者有区别。
Mem0

Mem0,用LLM给智能体解决记忆问题,开源
如上图,Mem0系统的架构概览, 展示了提取和更新阶段。提取阶段处理消息和历史上下文以创建新的记忆。更新阶段将提取的记忆与类似的现有记忆进行比较,并通过工具调用机制应用适当的操作。数据库充当中央存储库,为处理和存储更新的记忆提供上下文。
提取阶段
在提取阶段,Mem0 提取三个关键上下文源:
  1. 最新交流:用户与LLM代理之间的最近一次互动。
  2. 滚动摘要:截至当前点的对话的简要摘要。
  3. 最新消息:最新消息的选择,通常限制为预定义的数量(例如,最后 10 条消息)。
最关键的是,这两个阶段的关键动作,都有大模型完成。这个,可以认为对传统RAG的思路是一个大的超越,当然,也会带来成本的增加。
更新阶段
在更新阶段,Mem0 负责确保内存存储的一致性和非冗余性。每个新事实都会与向量数据库中最相似的条目进行比较。然后,LLM 会选择以下四种操作之一:
  1. 添加:如果新事实是唯一且相关的,则将其添加到内存存储中。
  2. 更新:如果新事实与现有记忆相似但包含附加信息,则更新现有记忆。
  3. 删除:如果新事实是多余的或不相关的,则将其丢弃。
  4. 合并:如果新的事实可以与现有的记忆结合起来形成更全面的条目,则将两者合并。
这些操作,跟人的记忆有相同的地方,远超原来一股脑把数据保存的方法。
Mem0g

在设计思想上,Mem0g更突出关系的处理,提出阶段和更新阶段都不同。数据据库采用了图数据库。
Mem0,用LLM给智能体解决记忆问题,开源
基于图的内存架构Mem0g, 图示实体提取和更新阶段。
提取阶段使用 LLM 将对话消息转换为实体和关系三元组。更新阶段在将新信息集成到现有知识图谱时采用冲突检测和解决机制。
在提取阶段,系统采用两阶段流水线将非结构化文本转换为结构化图表征。实体提取器模块首先识别对话中的关键信息元素,包括人物、地点、物体、概念等,通过分析元素的语义重要性、唯一性和持久性来确定实体。接着,关系生成器组件分析这些实体间的有意义连接,建立关系三元组来捕捉信息的语义结构。
更新阶段采用复杂的存储策略,通过计算实体嵌入和语义相似度来决定是否创建新节点或使用现有节点。系统实现了冲突检测机制,当新信息与现有知识冲突时,基于LLM的更新解析器会将过时关系标记为无效而非删除。
检索功能采用双重策略:以实体为中心的方法通过识别关键实体构建相关子图,语义三元组方法则将查询编码为嵌入向量进行全局匹配。系统基于Neo4j图数据库实现,结合GPT-4o-mini的函数调用功能,兼具结构丰富性和语义灵活性。
两种方法比较

两个方法,应对的场景不同。在论文给出的性能数据,包含四个场景:单跳查询(涉及定位一个对话回合内包含的单个事实跨度)。多跳查询(需要整合分散在多个对话会话中的信息,这对记忆整合和检索提出了重大挑战),时间推理性能(时间推理任务的关键在于对事件序列、其相对顺序以及对话历史中持续时间的精确建模),开放域性能(Open-Domain,不设限)。
其中Mem0在单跳及多跳查询中表现出色,而Mem0g在时间推理性能和开放域性能中表现出色。
03

发展情况

Mem0的解决方案,用大模型做数据分析和处理,明显优于之前RAG以分片加向量搜索的方法。
该方案目前已经得到很多应用,象Browseruse已经要新版里正式加入Mem0的能力。还有一些应用,包括OpenNote,RevisionDojo,Sunflower等,都已经加入支持。AWS也把它整合进 Strands Agents SDK中。
Mem0不仅开源,还提供了SaaS服务,有免费,有收费。
Mem0,用LLM给智能体解决记忆问题,开源
所有Agent都需要一个理想的记忆方案。这一块,将会是一个很好的发展领域。
论文在 https://arxiv.org/html/2504.19413v1
Mem0,用LLM给智能体解决记忆问题,开源
END

原文始发于微信公众号(AI与安全):Mem0,用LLM给智能体解决记忆问题,开源

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月28日09:33:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Mem0,用LLM给智能体解决记忆问题,开源https://cn-sec.com/archives/4105047.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息