犀牛鸟 2026 研究笔记 estelledc.github.io

Memory 与 RAG 边界

DB-Agent-Memory:精读: tencentdb-agent-memory WeKnora(RAG):精读: WeKnora 腾讯生态:腾讯记忆生态 记忆设计模式:记忆设计模式目录

调研元信息

项目
调研日期 2026-06-22
涉及研究轴 跨赛道(AI Memory + RAG/Knowledge)
证据等级 [已有] 为主

一句话定位

Memory 和 RAG 不是同一件事——Memory 是 Agent 从交互中学到的,RAG 是 Agent 从外部文档中查到的。但两者在”提炼后知识”区域存在重叠,需要明确的边界判断才能避免重复建设 [已有]

记忆类型标注

类型 涉及 说明
Working 不涉及 session 上下文
Profile 不涉及规则配置
User Memory 系统的核心
External RAG 系统和 MCP 记忆服务

日常类比

想象你是一个新入职的员工:

Memory(记忆):你每天工作中学到的东西——”老板喜欢简短的邮件”“部署前必须跑 smoke test”“上次数据库迁移踩了连接池的坑”。这些是经验,来自你的亲身经历。

RAG(检索增强生成):你在公司 Wiki、Confluence、内部文档中查到的东西——”数据库迁移 SOP”“API 接口文档”“产品需求规格说明”。这些是知识,来自别人整理好的文档。

重叠区:你从经验中学到”部署前必须跑 smoke test”,而公司 Wiki 也有一份”部署检查清单”包含同样的内容。两者说的是同一件事,但来源和更新机制不同。


决策树:何时用 Memory vs RAG

flowchart TB
    START[Agent 需要信息] --> Q1{信息来源是什么?}

    Q1 -->|"来自 Agent 与用户的对话"| Q2{是否跨 session 有用?}
    Q2 -->|否| WORKING["Working Memory<br/>(session 内上下文)"]
    Q2 -->|是| Q3{是否个性化?}
    Q3 -->|是| USER_MEM["User Memory<br/>(memdir / Codex memories)"]
    Q3 -->|否| Q4{是否可沉淀为文档?}
    Q4 -->|是| BOTH["Memory + 考虑沉淀到 RAG"]
    Q4 -->|否| USER_MEM

    Q1 -->|"来自外部文档/知识库"| Q5{文档是否经常更新?}
    Q5 -->|是| RAG["RAG 系统<br/>(WeKnora / Dify 等)"]
    Q5 -->|否| RAG_STATIC["RAG + 可缓存"]

    Q1 -->|"来自 Agent 自身的推理结论"| Q6{结论是否可复用?}
    Q6 -->|是| USER_MEM
    Q6 -->|否| WORKING

系统性对比

维度 Memory RAG
数据来源 Agent-用户对话 外部文档/知识库
写入触发 自动(extractMemories/Phase1/flush) 手动(文档上传/爬取)
写入者 Agent/系统自动 人工管理员或爬虫
更新频率 实时(每次对话) 批量(文档变更时)
操作粒度 对话/会话级 文档/段落级
个性化 高(per user/project) 低(共享知识库)
知识形态 经验、偏好、历史 事实、文档、规范
生命周期 跟随 Agent/用户 跟随知识库
检索需求 “你上次说过什么?” “文档里怎么说的?”
代表系统 mem0、DB-Agent-Memory、Letta WeKnora、RAGFlow、Dify

重叠区域分析

Memory 和 RAG 在三个区域存在功能重叠 [已有]

重叠 1:提炼后事实

Memory 侧:DB-Agent-Memory 的 L1 原子事实(”用户偏好 TypeScript”),mem0 的扁平事实,Claude Code 的 topic.md。

RAG 侧:WeKnora 的知识图谱节点,RAGFlow 的文档问答提炼。

冲突场景:Agent 从对话中学到”项目 X 用 Redis”(Memory L1),但公司文档更新了”项目 X 迁移到 Memcached”(RAG)。谁为准?

建议:RAG 数据通常由管理员维护,更权威但更新可能滞后。Memory 数据来自最新对话,时效性好但可能是临时状态。解决方案是给两者的事实标注时间戳和数据源,查询时做交叉验证。

重叠 2:知识图谱

Memory 侧:Graphiti 的时序知识图谱,supermemory 的 Memory Graph。

RAG 侧:WeKnora 的知识图谱,cognee 的 Ontology 驱动图。

区别:Memory 的图是对话驱动的——实体和关系来自与用户的交互历史。RAG 的图是文档驱动的——实体和关系来自结构化文档解析。两者的图模式(schema)可能不同,合并需要实体对齐。

重叠 3:知识生命周期管理

Memory 侧:Claude Code 的 autoDream(整合去重),Codex 的 Phase2(全局合并),DB-Agent-Memory 的 L2→L3 蒸馏。

RAG 侧:WeKnora 的自维护 Wiki(wiki/inspector.go 巡检过期/矛盾内容)。

观察:WeKnora 的自维护机制从 RAG 侧越过了边界——”主动发现过期知识”本质上是记忆系统的”遗忘/淘汰”功能。DB-Agent-Memory 目前缺少这个能力(无时序维度),可以借鉴 WeKnora 或 Graphiti 的做法。


能否用 RAG 替代 Agent Memory?

结论:不能。

三个核心理由:

理由 1:个性化粒度不同

RAG 系统的知识库是共享的——所有用户看到同一份文档。Memory 是个性化的——每个用户/项目有独立的记忆。用 RAG 存储”用户 A 偏好 4 空格缩进”需要为每个用户建独立的知识库分区,这在 RAG 系统中不是自然的设计。

理由 2:写入触发机制不同

RAG 的写入是人工管理的(上传文档 → 切片 → 索引),而 Memory 的写入是自动的(对话产生 → Agent 提取 → 持久化)。如果用 RAG 替代 Memory,每次对话后都需要触发一次”文档摄入”流程,这在延迟和复杂度上不可接受。

理由 3:时效性要求不同

Memory 需要实时反映最近的交互(”刚才用户说了什么”),RAG 通常有分钟到小时级的索引延迟。用 RAG 做 Memory 意味着刚说过的话可能还没被索引就已经被 compaction 丢失了。

反例:可以用 Memory 替代简单 RAG 吗?

在某些场景下可以——如果”知识库”就是用户自己的对话历史(如个人助理记住用户的所有偏好),那 Memory 系统(如 mem0、DB-Agent-Memory)足以胜任,不需要额外的 RAG 系统。但如果需要检索大量外部文档(技术文档、产品规格),Memory 系统的容量和检索能力不足以替代专业 RAG。


互补模型

flowchart TB
    subgraph input["信息输入"]
        CONV["对话流"]
        DOCS["外部文档"]
    end

    subgraph memory["Memory 系统"]
        MEM_WRITE["自动提取<br/>extractMemories / Phase1 / flush"]
        MEM_STORE["持久存储<br/>memdir / SQLite / 文件"]
        MEM_READ["按需检索<br/>语义匹配 / 全量注入"]
    end

    subgraph rag["RAG 系统"]
        RAG_INGEST["文档摄入<br/>切片 / 嵌入 / 索引"]
        RAG_STORE["知识库<br/>向量 DB / 图 DB"]
        RAG_SEARCH["混合检索<br/>BM25 + 向量 + 图"]
    end

    CONV --> MEM_WRITE --> MEM_STORE --> MEM_READ --> AGENT[Agent]
    DOCS --> RAG_INGEST --> RAG_STORE --> RAG_SEARCH --> AGENT

    MEM_READ -.->|"交叉验证"| RAG_SEARCH

最佳实践:Memory 和 RAG 应该是互补关系,而非替代关系。Agent 同时具备两种能力时——从 Memory 中获取个性化上下文(”用户偏好”“历史交互”),从 RAG 中获取权威知识(”文档规范”“最佳实践”)——回答质量最高。


局限性

  1. 重叠区域分析基于现有项目的推导:实际生产环境中的冲突频率和严重程度未经验证 [推导]
  2. “不能替代”的结论基于当前技术水平:未来 RAG 系统若支持实时索引 + per-user 分区,边界可能模糊 [推导]
  3. WeKnora 自维护 Wiki 与 Memory 遗忘机制的类比为概念层面:代码实现差异可能很大 [已有]

证据等级汇总

论点 证据等级
Memory vs RAG 系统性对比 [已有] 多篇精读推导
WeKnora 自维护 Wiki 越界分析 [已有] deep-dive-weknora.md
DB-Agent-Memory L1 事实与 RAG 知识图谱重叠 [已有] deep-dive-tencentdb-agent-memory.md
RAG 不能替代 Memory 的三个理由 [推导] 基于架构分析
tRPC-Agent-Go Fact/Episode Memory [已有] deep-dive-trpc-agent-go.md