Mem0:从聊天里留下事实,再为下一次回答挑选记忆

开源项目猫目发布于 来源:Mem0 当前开源概览、算法迁移文档与官方示例
记忆写入已改为只新增;旧事实保留后,下一次能否检索到合适信息更值得检查。
Mem0:从聊天里留下事实,再为下一次回答挑选记忆

为什么值得关注

把对话中可复用的事实单独保存并按当前问题检索,减少持续对话产品反复交代背景;也让新旧信息的选择成为可检查环节。

适合谁:正在开发持续对话助手、客服或个性化产品,需要接入长期记忆的产品与开发团队

这次有哪些亮点

  • 官方流程先检索相关记忆再回答,之后提取本轮新事实
  • 当前自动提取采用单次模型调用、只新增事实,不自动覆盖旧偏好
  • 可融合语义、关键词与实体信号,对语义候选进一步排序

使用前需要知道

身份范围需应用正确传入;只新增不等于自动消除冲突。混合检索依赖组件,图记忆已移至托管平台,平台自报分数不能视为开源实测;默认外部模型和嵌入调用并非全本地处理,中文质量未验证。

一个写作助手已经知道你喜欢“先给结论,再举例子”,换个话题后却又从头询问偏好;如果每次都把全部聊天记录重新附上,材料又会越来越长。Mem0 做的是中间这一层:从对话中提取值得保存的事实,按用户等范围存储,再在回答新问题前检索相关记忆。

它主要面向在开发助手、客服或持续对话产品的团队。普通使用者得到的是更连贯的交互,开发者则需要把存储、检索和回答衔接起来。Mem0 提供开源库、自托管服务和托管平台,三者的功能范围与数据部署方式需要分开看。来源:Mem0 开源概览

一段对话怎样进入下一次回答

官方代码中的基本循环很清楚:先拿当前问题检索同一用户的相关记忆,把找到的事实加入回答所用的上下文,再调用模型生成回复,最后把本次对话交给记忆层提取新事实。来源:官方基本用法

用一个中文教学情境解释:用户先说“以后讨论文章,先告诉我你的判断,再展开例子”。系统可以把它作为偏好保存;以后用户要求审一篇稿,先按这个用户的身份检索相关记忆,再把偏好与当前稿件一起交给回答模型。最后得到怎样的审稿意见,仍取决于模型与提示。这是流程说明,没有实际运行,也没有验证中文抽取质量。

这里有一个容易忽略的分工:Mem0 返回的是相关记忆,最终回复由应用所接的模型生成。记忆层不会自动接管整段对话,也不能仅凭“搜到偏好”就证明回答遵循了偏好。用户标识同样得由应用正确传入;记忆过滤条件不等于用户身份认证。

当前写入方式,已经不是旧教程中的更新与删除

当前官方迁移指南说明,自动提取改为单次模型调用、只新增事实。处理时先取相关旧记忆作为去重背景,抽出新事实,再做嵌入、精确去重与批量存储。过去让模型判断新增、更新、删除的流程,已经改变。来源:当前算法迁移指南

下图来自这份迁移文档的算法小节。重点看提取流程中的“只新增”,以及后面的检索流程;这是编辑对公开页面的真实截图,不是运行成绩或效果测试。

Mem0 官方迁移文档算法小节,说明只新增事实的提取流程

编辑真实截图:Mem0 官方文档,未改写页面内容。打开原图阅读流程。

假设那位用户后来改口,希望“先看原材料,再看判断”,新偏好会与旧事实一起留下,自动写入流程不会先删除旧偏好。官方把选择相关、当前信息的责任更多放到了检索阶段。

这改变了采用时最该看的问题:不能只检查“有没有记下来”,还要看面对新旧事实时,系统是否找回了适合当前问题的那一条。对于会变化的习惯和项目状态,保存历史有价值;如何解释时间和冲突,也随之成为真实负担。“只新增”不是“永远记对”。

多种检索信号,也有明确边界

当前开源文档描述了语义、关键词和实体匹配等信号的融合,但有一处尤其值得留意:候选仍由语义检索提供,关键词与实体信号用于提高候选的排序,不会另外补进新的候选。如果语义阶段漏掉了目标事实,后续加分本身救不回来。

混合能力也依赖额外组件;缺少部分依赖时,会退回较少的检索信号。README 展示的托管平台成绩还包含开源 SDK 没有的专有优化,不能把那些数字视为本地安装后的成绩。当前图记忆也已移至平台,开源版不再提供旧的外部图存储集成。

开源代码采用 Apache-2.0 许可,但自托管不自动意味着模型调用留在本机:默认组件使用外部模型与嵌入服务,需要按自己的数据要求配置。来源:代码许可

对希望减少重复交代背景的产品团队,Mem0 值得看的,是“先找相关事实,再回答”的循环。开始时可以选一组会重复出现、也会变化的偏好,检查提取、身份范围和冲突检索三个环节;只有下一次回答用对了记忆,保存才真正产生价值。

原始资料:Mem0 当前开源概览、算法迁移文档与官方示例

以上为编辑整理,功能、许可与使用条件以官方说明为准。

返回每日分享