前情回顾
HI,大家好,我们是大模型PLUS-Agent团队,我们的记忆专题系列又来更新啦~
历史文章回顾:
-
产品调研相关:
-
产品体验相关:
-
技术调研相关:
好的,接下来本次文章我们来聚焦行业上的记忆开源框架,来逐一对比他们的优劣势~
概览
| Mem0 | EverMemOS | Zep | Secondme | MIRIX | M3-Agent | |
|---|---|---|---|---|---|---|
| 公司/学校 | Mem0 | EverMind | Zep AI | 心识宇宙(Mindverse) | 加州大学与纽约大学团队联合 | 字节跳动 SEED 团队与浙江大学、上海交通大学联合 |
| 框架特点 | 基于检索 | 基于检索 | 基于检索 | 基于模型训练 | 基于检索 | 基于检索 |
| 支持模态 | 对话文本 | 对话文本 | 对话文本 | 对话文本 | 图片、对话文本 | 音视频流 |
| 存储方式 | 向量+Graph | 向量 | Graphiti | 模型 | 向量 | Graph |
| 特点 | - 向量:自动将对话内容进行摘要总结和更新;- Graph: 将原始内容抽取实体-关系三元组,构建图结构记忆 | - 抽取原子、情景记忆、用户画像记忆库;- 迭代式检索方案 | - 一种动态的、有时间感知的知识图谱引擎;- 三个subgraph, 支持情景记忆、语义记忆和记忆群组 | - 对用户数据进行归纳总结,形成个用户偏好数据,用于个性化模型训练。 | - 六类仿生记忆模块 (核心、情景、语义、程序、资源、知识金库);- 多智能体协调架构 | - 融合实时视听处理,支持情景记忆库和语义记忆库;- 自研跨模态的用户身份推理(声纹、人脸);- 支持复杂查询的多轮推理 |
| 优势 | - 轻量化,记忆构建效率高 | - 引入前瞻记忆内容,支持对用户未来状态的推理 | - 时序推理能力突出 | - 模型稳定,响应速度快 | - 首创六类分层记忆模块,更贴近人类大脑记忆机制,能处理复杂的长期记忆场景 | - 支持跨模态的内容和用户身份推理;- 支持复杂查询的多轮推理 |
| 不足 | - 扁平化记忆管理,将所有内容都存储到一个向量数据库中。 | - LLM调用频繁,计算成本高 | - 计算成本高,记忆构建延迟高 | - 无法实时更新,且资源成本高 | - 模块较多,多智能体协调机制复杂,不适合直接落地。 | - 只支持30s视频片段的语义记忆生成。 |
| 项目地址及stars | 地址 45.1k | 地址 1.5k | 地址 21.1k | 地址 14.8k | 地址 3.6k | 地址 1.2k |
方案介绍
Mem0
-
核心思路
- 临时记忆:为当前会话的历史多轮对话;
- 摘要记忆:基于历史会话摘要和最近消息结合起来,与当前的新消息一起,调用LLM生成摘要。只基于向量检索,也是利用LLM进行更新;
- 图谱记忆:利用LLM对当前对话中抽取实体和关系。采用三元组和语义向量混合的双重检索策略。
-
详细方案
| 模块 | 内容 | | - | - | | 记忆提取 | - 临时记忆:当前会话的历史对话;- 摘要记忆:首先,当新的对话消息进入系统后,Mem0会通过一个异步摘要生成模块生成并存储一个会话摘要(S)。它的作用是概括整个对话的核心主题,从而为后续的记忆提取提供全局记忆。这个过程并不是一次性的,而是随着对话的进展持续进行更新。;- 图谱记忆:Mem0g 首先通过一个实体提取模块从对话中识别出所有相关的实体(例如人物、地点、事件等)及实体类别。随后,系统会通过关系生成模块根据对话上下文建立实体之间的关系,形成一组三元组(如实体 A 、实体 B及关系 R)。这些三元组也就组成了一个记忆知识图谱。这里Mem0g在抽取实体和关系的时候就是用大模型+prompt完成,没有用传统nlp中实体识别或者关系抽取的方法。并且,它是采用两阶段完成,即先实体抽取,再关系生成。 | | 记忆更新 | - 摘要记忆库:Mem0 会将 会话摘要 和 最近消息 结合起来,与当前的新消息(用户和助手的最新一轮对话)一起,生成一个 综合提示(P)。这个提示会被送入一个提取函数,通过大语言模型(LLM)来处理和提取出一组 候选记忆。系统会将刚提取的候选记忆组与现有记忆进行对比,确保它们的一致性并避免冗余。为此,Mem0 首先会检索出与候选记忆语义最相似的若干个现有记忆(向量数据库向量检索)。然后通过function call的形式调用记忆更新工具来更新记忆。工具有4个:- 添加(ADD):当没有语义相似的记忆时,将新记忆添加到知识库。; - 更新(UPDATE):当现有记忆与新记忆有部分重叠时,更新现有记忆,以纳入新信息。; - 删除(DELETE):当现有记忆与新记忆存在冲突时,删除旧记忆。; - 无操作(NOOP):当新记忆与现有记忆一致时,保持现有记忆不变。; 当现有记忆与新提取的候选记忆存在冲突时,Mem0 会决定是否删除、更新或添加新记忆- 图谱记忆库:Mem0g 通过 图数据库 Neo4j进行节点和边的检索。具体来说,Mem0g 会计算新提取的实体与现有节点之间的语义相似度,并根据阈值决定是否更新或添加新的节点和关系。对图的操作(其实就是修改数据库中的三元组信息)也是通过function call的形式完成,具体tool和Mem0类似:- 添加(ADD):当新信息对应的实体和关系在图中没有对应节点时,Mem0g 会创建新的节点并建立关系。; - 更新(UPDATE):当现有图中的节点与新信息重合时,Mem0g 会通过更新节点属性(时间戳)来增强现有记忆。; - 删除(DELETE):如果新提取的信息与现有关系发生冲突,Mem0g 会删除这些冲突的关系,确保图结构的一致性。; - 无操作(NOOP):如果新信息与现有记忆一致,则不做任何操作,避免不必要的更新。 | | 记忆检索 | - 摘要记忆库:直接向量数据库语义相似度取top-k个最相似的记忆即可。;- 图谱记忆库:Mem0g 在处理查询时,采用了 双重检索策略,一方面是基于 实体 的检索,首先通过识别查询中的关键实体并在图中找到相应节点,之后探索这些节点的关联关系及对应的尾实体。另一方面,Mem0g 采用 语义三元组检索,即通过将整个查询转换为一个 向量表示,与图中的三元组进行匹配。(就是两种检索策略叠加使用,以期获得更全面的信息) |
EverMemOS
-
核心思路
- 记忆构建上设计了三阶段的记忆生命周期
- 记忆应用上采用了迭代式检索的复杂链路
- 系统架构上构建了四层仿生记忆架构:代理层(任务理解、任姐与生成)、记忆层(管理长期记忆的提取)、索引层(通过多种方式实现记忆关联和高效检索)和存储层(持久化存储各类记忆数据)
-
详细方案
| 模块 | 内容 |
|---|---|
| 阶段一:;情景记忆形成 | - 通过基于LLM的对话边界检测,将完整事件的对话片段流转成为MemCells(记忆单元)- 情景记忆:使用LLM从原始对话中抽取基于主题的事件描述; - 原子事实:使用LLM从对话中提取的关键事实; - 前瞻信号:使用LLM抽取时间绑定的未来状态信息,包含其有效区间 |
| 阶段二:;语义巩固 | - 将 MemCells 组织为MemScenes(记忆场景),提炼稳定语义结构并更新用户画像:- MemScene 构建:基于主题相似性和时间邻近性将 MemCells 聚类为 MemScenes,每个 MemScene 代表一个连贯的语义主题,包含场景摘要和相关 MemCells; - 用户画像更新:通过场景摘要而非单个对话轮次更新用户画像,区分稳定特征与临时状态,维护包含显式事实(含时变测量)和隐式特征的紧凑画像,并支持冲突跟踪与近期感知更新; - 记忆演化:采用生命周期管理机制,根据记忆重要性、访问频率和时效性动态更新和淘汰记忆 |
| 阶段三:;重构性会议 | - 将检索建模为主动重构过程,而非静态查找- MemScene 选择:通过融合密集检索和 BM25 检索(RRF 融合)计算相关性,选择高分 MemScenes; - 情节与前瞻过滤:池化所选的MemScenes对应的Episodes并重新排序,保留时间有效的前瞻性信号; - 智能体验证与查询重写:LLM 验证器评估检索上下文的充分性,不足时触发查询重写补充检索 |
Zep
-
核心思路
- 把Agent的对话历史、用户信息、行为记录全部转化为“节点+边”的时序知识图谱
- 三个记忆库:情景记忆、语义记忆和社区记忆的subgraph, 三层subgraph可以双向引用
-
详细方案
| 模块 | 内容 |
|---|---|
| 记忆构建 | - 情节子图:包含原始的输入数据,消息、问题或者 Json 格式,作为一个无损的数据存储。每条情节内容作为一个节点,并从情节内容中抽取语义实体也作为node,情节边是连接情节内容node和语义实体node。;- 语义子图:基于情节子图,语义节点即为情节子图抽取的语义实体,语义边表示语义实体之间的关系。;- 社区子图:强连接实体的聚类为一个社区摘要,作为一个node, 社区摘要包含了对聚类的高层次的概括;社区边将社区和其成员相连接。 |
| 记忆管理 | - 双时间线管理模型:Zep架构在每条“关系边”上会同时记录两个时间1. Valid Time(事件时间):事实在现实里从何时开始、到何时为止。比如 "张三 2023 年 5 月入职"); 2. Transaction Time(系统时间):系统什么时候知道这件事,或者说我们何时写入这条事实、以及后续的何时把它判为失效。(比如 "这条信息是 2023 年 5 月 10 日录入的");- 记忆更新1. 记忆去重:提取的语义实体会进行去重,避免存储冲突的记忆。对实体的去重会通过对实体名和实体摘要进行全文检索来找到相似的实体,通过 LLM 进行判重,如果判定重复会更新当前实体的相关信息。; 2. 边失效机制:当新信息出现后,如果有发现存在时间重叠的矛盾事实,会对该事实标记为失效并且记录失效时间。这样既能保留最新的事实,也能保留事实的变化。; 3. 采用标签传播算法构建社区子图:标签传播算法在动态扩展方面具备简单性的优势,使得系统在新数据不断进入图结构时,能够在更长时间内保持稳定的社区子图,从而延缓完全重新计算社区的需要。但是长时间后所形成的社区结构会逐渐偏离完整运行标签传播算法所得出的结果。因此,仍需定期对社区结构进行重新计算。 |
| 记忆检索 | - 混合检索策略- 通过语义相似度、BM25全文、广度优先搜索BFS三个搜索方法,分别对事实、实体、记忆群进行检索和召回,从而保证了候选召回结果的全面覆盖。; - subgraph在检索中的协同作用:先通过Community索引,将搜索范围确定到某个“记忆群”;再通过Semantic的相关检索,在搜索时通过实体名、事实边、时间戳等请准抓取;最后还可以将对应的Episodic拼接到回答中提升回答的可信度。;- 重排- 倒序排序融合; - 最大边际相关性; - 图重排机制; - 节点距离重排器 |
Secondme
-
核心思路
- 记忆不应仅仅是外部存储的数据,而应通过模型训练,将知识(尤其是个性化知识)内化到LLM自身的参数中,使其成为模型理解和推理能力的一部分。
- 三层混合记忆架构
-
详细方案
| 模块 | 内容 |
|---|---|
| 记忆构建 | - L0: 原始数据层 (Raw Data Layer)- 定位:基础层,存储所有未经处理的原始用户数据(笔记、文档、聊天记录等)。; - 特点:信息完整但结构性差,直接利用效率低。; - 作用:提供全面的事实依据和细节来源。;- L1: 自然语言记忆层 (Natural Language Memory Layer)- 定位:中间层,对L0数据进行初步处理和结构化。; - 内容:存储用自然语言描述的关键信息,如提取的实体、关系、主题标签,以及自动生成的用户简介、偏好总结等。; - 特点:信息经过整理,易于快速检索和理解。; - 作用:提供快速访问的显式知识和结构化上下文。;- L2: AI原生记忆层 (AI-Native Memory Layer)- 定位:核心智能层,通过LLM微调实现。; - 内容:不直接存储文本,而是将L0和L1中蕴含的深层模式、关系、偏好、思维习惯等隐式知识编码到模型参数中。; - 特点:实现对用户的深度理解和个性化推理,但记忆内容非直接可读。; - 作用:驱动智能行为,根据上下文进行推理、预测和生成个性化响应。 |
| 记忆应用 | - L0提供基础事实,L1提供结构化上下文,L2则利用内化的隐式知识,并结合从L0/L1获取的信息进行智能决策。;- L2如同“指挥官”,协调利用各层记忆资源。Second Me特别强调加强了层级间的整合,使L0/L1能为L2提供更丰富的上下文支持,L2也因此能更好地扮演协调者的角色。这种分层设计旨在结合原始数据的完整性、结构化知识的易用性和AI模型深度理解的智能性。 |
MIRIX
-
核心思路
- 设计六种精心设计的、各司其职的记忆模块
- 采用了一个模块化的多智能体架构
-
详细方案
| 模块 | 内容 |
|---|---|
| 记忆构建 | - 核心记忆(Core Memory):存储关键且持久的信息,如用户姓名、喜好、助手人格特征等。分为 human 和 persona 两大块,当容量超过 90% 时会自动重写以保持精炼。;- 情景记忆(Episodic Memory):记录按时间戳排序的事件,如用户的一次操作或对话。每条条目包含事件类型、摘要、详情、主体与时间,方便检索近期行为。;- 语义记忆(Semantic Memory):存储抽象概念和事实,如「Harry Potter 的作者是 J.K. Rowling」或「John 是用户的朋友」。每条信息载有名称、摘要、详情与来源,便于建立用户知识图谱。;- 程序记忆(Procedural Memory):专注于任务流程和操作指南,例如「如何部署应用」、「设置 Zoom 会议」等。条目由流程类型、描述与步骤组成,支持结构化调用。;- 资源记忆(Resource Memory):保存用户当前正在处理的文档、截图、语音等资源。使用条目包括标题、摘要、资源类型及全文或摘要内容,以便任务连续性回溯查询。;- 知识金库(Knowledge Vault):用于储存敏感信息,如 API Key、密码、联系方式等。带有敏感等级(低/中/高),并设置访问控制和加密机制,确保安全不被随意调用。 |
| 记忆应用 | 多智能体工作流(Multi-Agent Workflow)MIRIX 中设置了 一位 Meta Memory Manager(元记忆管理者) 与 六位子 Memory Manager(记忆子模块)- 协作方式- 元记忆管理器(Meta Memory Manager):这是整个记忆系统的「总管」。负责协调所有记忆操作。当有新的信息输入时,它会判断这些信息应该去哪个「记忆宝库」;当需要检索信息时,它会调度各个「分管家」去查找。; - 六个记忆管理器(Memory Managers):每个「记忆宝库」都有一个专门的二级「主管」负责管理。负责各自记忆组件内部的存储、更新、重写和检索逻辑,确保信息不冗余。; - 聊天智能体(Chat Agent):这是直接与用户对话的「前台接待」。接收用户查询,并与「总管家」协调,获取相关记忆来生成响应。如果用户提供了需要更新记忆的信息,它也会直接通知相应的「分管家」进行更新。;- 更新流程(Memory Update Workflow)- 输入触发:屏幕截图或对话输入进入系统,首先触发全局记忆搜索。; - 路由分析:Meta Manager 判断哪些 memory component 相关,决定路由方向。; - 并行更新:对应的 Memory Manager 接手更新条目,去除冗余。; - 汇报完成:所有更新完毕后,Meta Manager 通知系统,进入下一轮;、- 检索与对话流程(Retrieval & Chat Workflow)- 主动检索(Active Retrieval):用户问问题时,Chat Agent 先用 LLM 自动生成一个「topic」。; - 多 memory 检索:依 topic 从六个 memory component 中检索 topk 信息。; - 拼接响应:检索内容按来源打标签(如 episodic_memory...),输入系统 prompt。; - 自然回答:结合检索信息给出对话答复。; - 若有新信息:系统会将用户新输入路由至相关记忆模块进行补充 |
M3-Agent
-
核心思路
- 针对音视频流设计的多模态记忆框架,能够持续处理实时的视觉和听觉信息流,并将其组织成一个以实体为中心的多模态知识图谱,这种结构确保了记忆的长期一致性,例如能持续追踪同一个人的身份和偏好。
- 通过强化学习 训练出一个能够进行多轮、迭代式推理和记忆检索的控制模型。
-
详细方案
| 模块 | 内容 |
|---|---|
| 记忆构建 | - 双重记忆库- 情景记忆 (Episodic Memory) :记录在特定时间、特定场景下发生的具体事件。它关注「What happened?」,包含了丰富的上下文细节,如人物的动作、外貌、对话内容以及环境描述。; - 语义记忆 (Semantic Memory) :从一个或多个情景中提炼出的、不依赖于特定上下文的通用知识、事实或规律。它关注「What does it mean?」。;- 跨模态的用户身份一致性- 实体识别与 ID 分配:系统利用外部工具,如人脸识别和声纹识别模型,从视频流中提取出关键实体(主要是人)的生物特征。每个被识别的独立实体都会被分配一个持久且唯一的 ID,例如 或。这个 ID 成为该实体在整个记忆系统中的「身份证」。; - 记忆的组织:所有新生成的记忆(无论是情景还是语义)都会与相关的实体 ID 进行关联。例如,关于 Alice 的所有信息,包括她的外貌描述(与 关联)、她说的话(与 关联)、她的行为、以及推断出的偏好,都会被链接到代表她的实体节点上。; - 跨模态关联:语义记忆的一个重要功能是建立跨模态实体间的等价关系。例如,系统通过分析场景,可能会推断出 和 指向同一个人,于是会在记忆图谱中为这两个节点建立一条边,并生成一条语义记忆:「Equivalence: , 」。此后,系统便可以将这两个 ID 统一视为同一个角色 ``,从而实现了视觉和听觉信息的无缝整合。 |
| 记忆应用 | 多轮迭代式推理- [Search]:如果信息不足,模型会决定继续搜索。它会生成一个具体的查询语句(query),调用记忆库的搜索工具来获取更多相关信息。;- [Answer]:如果模型认为信息已经充分,它会终止搜索循环,并生成最终的答案。 |
开源评测集
对话记忆
LoCoMo
-
数据集:包含50个非常长的对话,每个对话包含300轮,最多35个会话,平均9K个token。
-
长上下文历史记忆的对话检索与评估任务
-
问答类任务
- 单跳:单跳问题需要基于单个会话的答案
- 多跳:多跳问题需要综合来自多个不同会话的信息
- 时间推理:时间推理问题可以通过时间推理和捕捉对话中与时间相关的数据线索来回答
- 开放域知识:开放领域知识问题可以通过将说话者提供的信息与常识或世界事实等外部知识相结合来回答
- 对抗问题:对抗性问题旨在诱使代理提供错误答案,并期望代理正确地将其识别为无法回答的答案
-
事件总结类任务:要求代理总结指定时间范围内的事件
-
Long-MT-Bench+
- 通过将长距离问题纳入 MT-Bench+ 而重构的,以解决有限的问答对和短对话的问题。
- 它将五个连续的会话合并为一个单一的长期对话。包含11个对话,平均有4.9个会话和19194.8个token。与LoCoMo不同的是,它专注于用户与人工智能的互动,不提供会话日期。
LongMemEval
-
五个核心的长期记忆能力:信息提取、跨会话推理、时间推理、知识更新和放弃回答无法回答的问题。
- 信息提取:从聊天历史中提取特定信息的能力。
- 跨会话推理:综合多个会话中的信息以回答复杂问题的能力。
- 时间推理:理解和推理与时间相关的信息的能力。
- 知识更新:随着时间的推移,动态更新用户信息的能力。
- 弃权:在问题超出已知信息范围时,选择不回答的能力。
-
LongMemEval提供了两种标准设置以便进行一致的比较:
- LongMemEvalS:每个问题的聊天历史大约有115k个token。
- LongMemEvalM:包含大约500个会话,大约1.5百万个token。
多模态记忆
M3-Bench
-
M3-Bench 是一个用于评估多模态智能体长期记忆推理能力的长视频问答(LVQA)数据集,由字节跳动Seed、浙江大学和上海交通大学的研究团队开发并开源。该基准旨在推动多模态智能体在持续感知和长期知识积累方面的研究,特别关注记忆形成与基于记忆的复杂推理能力。
-
M3-Bench 的核心特点在于其真实世界场景和多样化问题设计。 它包含两个子集:
- M3-Bench-robot:基于100个从机器人第一人称视角录制的真实世界视频,模拟家用场景(如客厅、厨房),平均时长34分钟,涉及67名演员和51个地点。QA对:1344个
- M3-Bench-web:包含929个网络来源的视频(如纪录片、烹饪视频),平均时长27分钟,覆盖46类主题。
问题类型覆盖多细节推理、多跳推理、跨模态推理和人类理解等,要求模型整合分散信息或推断角色关系,而非简单感知。QA对:5037个
如果大家对记忆 Agent感兴趣,欢迎随时联系我们 董双 吴洁,还可以加入「大模型 plus 需求和体验反馈」交流群,一起解锁更多玩法!