🔧 AI 知识库

Mem0 vs WorkBuddy:Agent 记忆层的两条路线

原文链接

Mem0 vs WorkBuddy:Agent 记忆层的两条路线

原文链接:https://mp.weixin.qq.com/s/CyZv5BQyW3SSVIJ1U8Ba9A 作者:叶小钗 发布时间:2026年7月8日

摘要

深度拆解 Mem0(59.9K Star)开源 Agent 记忆框架的源码实现。从写入流程(LLM 抽取 → 向量化 → 去重 → 写向量库 + SQLite + Entity Store)、检索流程(语义 + BM25 + Entity Boost 三路融合排序),到如何接入 Agent:检索放推理前、写入放回复后。

主要内容

Mem0 核心架构

对话 → LLM 抽取关键事实 → embedding 向量化 → 去重(LLM 层面 + md5 hash)
    → 写入 Vector Store(默认 Qdrant)
    → SQLite 记录 history + messages(最近 10 条)
    → Entity Store 建立实体→记忆索引

写入流程(ADD-only)

  • LLM 从对话中抽取值得长期保存的事实(偏好、计划、目标),非寒暄内容跳过
  • 两层去重:LLM 参考旧记忆避免重复抽取 + md5 hash 精确去重
  • Vector Store 每条记忆含:文本、向量、作用域(user_id/agent_id/run_id)、元数据、BM25 辅助字段
  • ADD-only 策略保留事实演化轨迹,不覆盖旧记忆(支持 update/delete)

检索流程(三路融合)

检索方式说明
Semantic Scoreembedding 语义相似度
BM25 Score关键词精确匹配(词形还原)
Entity Boost从查询中抽实体 → 关联记忆加权(默认 +0.5)

融合公式:final_score = (semantic + bm25 + entity_boost) / max_possible

内部查询先扩 4 倍 top-k 建候选池,再融合打分,避免过早丢相关记忆。

接入原则

  • 作用域设计:user_id(个人偏好)、run_id(单次任务)、agent_id(能力沉淀)
  • 检索放推理前:先 search → Top-K 记忆注入 system/context
  • 写入放回复后:先响应用户 → 异步 add,不影响响应速度
  • 非所有对话都适合写入:写作 Agent 等长内容需先筛选,或将 add 封装成工具让 Agent 按需调用

原文关键段落

Agent 记忆层的本质就一句话:把发生过的事儿存下来,保证将来能再翻出来用。

对开发者来说,接 Mem0 最需要花心思的不是怎么写几行代码来接入,而是想清楚:什么内容值得写入记忆、怎么隔离不同用户的记忆、什么时候需要去查询记忆。

ADD-only 的好处是保留事实演化轨迹,让时间推理、多跳检索和冲突处理更有空间。