🧠 RAG / 知识库2026-07-09
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 Score | embedding 语义相似度 |
| 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 的好处是保留事实演化轨迹,让时间推理、多跳检索和冲突处理更有空间。