症状:你的 Agent 能查到文档,却记不住用户偏好;或者聊天记录塞进向量库后,召回内容越来越杂。
最快解法:RAG 负责检索外部知识,Agent Memory 负责保存用户、会话和任务状态;多数长期运行的 AI Agent 应采用双轨架构,但两条链路必须分开设置写入、追溯和删除规则。
谁该看这篇?
如果你正在补齐客服 Agent、个人助理、编码 Agent 的多轮记忆能力,这篇文章可以帮你避免把所有聊天记录都塞进同一个向量索引。
如果你已经有企业 RAG,想判断能否复用现有组件,或者你负责隐私、审计和运维,需要评估长期记忆的留存风险,也适合从本文的指标轴开始决策。
最后更新于 2026 年 8 月 10 日。项目能力与版本信息核对自 TencentDB-Agent-Memory 官方仓库、配置清单 与 腾讯云 Agent Memory 文档。部署前仍应以写作时的最新版配置和变更记录为准。
先按数据责任拆开:你到底要保存什么?
很多架构问题不是出在向量数据库,而是出在“什么都保存”。RAG 与 Agent Memory 的第一处差异,不是检索算法,而是数据责任不同。
你可以把输入分成 5 类:
- 外部知识文档:产品手册、内部制度、API 文档、技术书和工单规范。它们通常由管理员或数据管道显式摄取,重点是版本、权限和来源。
- 用户偏好:例如用户偏好简洁回答、使用某种编程语言、所在时区或常用输出格式。它们需要按用户隔离,并允许修改和删除。
- 事实记忆:例如“该客户正在使用某个版本”“这个项目的部署环境是本地服务器”。事实可能过期,不能只靠相似度判断真假。
- 场景摘要:一段长期对话或复杂任务的压缩结果,用来帮助 Agent 快速恢复背景,但它不一定等同于原始证据。
- 任务状态:当前任务做到哪一步、哪些工具已经调用、哪些参数已确认、下一步需要什么。任务状态更接近可恢复的工作流状态,而不是普通文档。
举个客服 Agent 的例子:产品退款规则应该进入 RAG;客户曾经选择“邮件联系”可以进入 Memory;当前工单已经完成身份验证,则应进入任务状态。把三者全部写入一个索引,短期内看似简单,后期却会出现更新责任模糊、权限判断混乱和错误召回。
RAG 不是只能处理静态文档。动态数据库、实时接口、不断更新的知识源同样可以接入 RAG,只是你需要明确数据更新时间、权限过滤和证据来源。反过来,Memory 也不是“更长的上下文”,它需要判断哪些信息值得留下、如何合并冲突,以及什么时候应该忘记。
Agent Memory 与向量数据库的边界
向量数据库是存储和检索基础设施,Agent Memory 是一套围绕“记住什么、何时写入、如何更新、怎样恢复”的记忆机制。你可以用向量数据库承载 Memory,但不能因为有向量检索,就自动获得完整的长期记忆能力。
从采购和架构角度看,两者可以这样区分:
✅ 向量数据库擅长的事情
- 保存文本、向量、元数据和权限字段;
- 按语义、关键词或混合条件检索;
- 支持文档、网页、记录等外部数据的查询;
- 作为 RAG 的检索底座,为回答提供可引用的上下文。
⚠️ 单靠向量数据库通常不会自动解决的问题
- 哪一句对话应该写入长期记忆;
- 同一用户的新偏好如何覆盖旧偏好;
- “客户住在上海”与“客户已搬到杭州”发生冲突时保留什么;
- 一条错误记忆由哪次对话、哪个模型判断产生;
- 用户要求删除数据后,摘要、向量、缓存和日志是否一起删除。
RAG 的基本目标是把外部知识检索出来,再交给模型生成有依据的回答。官方 RAG 文档通常也把知识库、检索、上下文增强和来源引用作为一条链路,而不是把用户关系、任务状态和长期偏好混在知识库里。你可以参考 RAG 的检索增强流程说明。
RAG 与长期记忆的适用场景
如果你的系统只处理一次性问答,不一定需要长期记忆。比如用户上传一份产品说明书,询问其中某个条款,RAG 负责找到相关段落并返回来源即可。此时引入 Memory,反而会增加写入、隔离、删除和调试成本。
但只要 Agent 需要跨会话保持个性化,答案就会改变。以下场景通常值得增加长期记忆:
- 客服 Agent 需要记住客户已确认的产品版本、联系偏好和历史处理结论;
- 个人助理需要记住用户的日程偏好、常用格式和长期目标;
- 编码 Agent 需要恢复项目约定、工具习惯和上次任务的未完成状态;
- 多轮任务系统需要在进程重启后恢复工作上下文,而不是从头询问用户。
腾讯开源的 TencentDB-Agent-Memory 官方仓库把长期记忆设计为分层流程,并强调本地后端、记忆提取、场景聚合、人格生成和召回等能力。当前仓库 README 显示,其默认示例使用本地 SQLite + sqlite-vec 后端,召回策略支持关键词、向量和混合检索;这些是项目当前文档描述的能力,不代表所有 Agent 框架都默认支持相同配置。(github.com)
项目配置中还给出了若干可核对的默认值:混合召回默认最多返回 5 条结果,每 5 轮对话触发一次 L1 记忆提取,每次提取最多生成 20 条记忆,新增 50 条记忆后触发一次用户画像生成。你不能把这些默认值直接当作生产最佳参数,但它们说明 Memory 的重点是“持续捕获与聚合”,而不是单次查询时把历史记录全部取回来。具体参数应以 最新配置字段 为准。
写入、更新与证据链的分工
RAG 通常采用显式摄取:文件上传、解析、切分、嵌入、写入索引,文档更新时重新处理对应版本。这种方式的优点是边界清楚,缺点是实时性、增量更新和权限同步需要你自己设计。
Memory 更像持续运行的流水线:
- 捕获当前对话、工具调用结果或任务事件;
- 判断其中是否存在值得保留的信息;
- 提取偏好、事实、场景摘要或任务状态;
- 与已有记忆进行去重、合并和冲突处理;
- 按层级或重要性保存;
- 下一次请求前按用户、项目和任务范围召回。
这两种写入机制不能共用同一个默认值。知识文档适合由管理员确认后进入索引;用户偏好可以由 Agent 提取,但敏感属性、身份信息和高影响决策不应无条件自动升级为长期记忆。
你至少要为每类数据定义 4 个字段:
- 来源:来自文档、用户原话、工具返回值,还是模型推断;
- 时间:首次出现时间、最后确认时间和失效时间;
- 责任人:用户、业务系统、管理员或自动提取器;
- 删除传播范围:原文、摘要、向量、缓存、日志和备份是否都要处理。
当召回结果不对时,怎样还原完整链路?答案不是查看最终提示词,而是保留一条可回放链:原始事件 → 提取结果 → 合并或覆盖操作 → 记忆层级 → 召回请求 → 注入上下文 → Agent 输出。TencentDB-Agent-Memory 官方资料强调分层与可追溯设计,这类设计适合生产环境排查错误记忆的来源,但你仍需要在自己的日志系统中记录用户范围、版本和删除状态。(cloud.tencent.com)
如果一条记忆没有原始证据、时间戳和删除标记,就不要把它当成事实数据库。它最多只能作为低置信度的辅助提示。
召回目标不同,评估指标也不同
RAG 的核心评估问题是:有没有找对知识?你需要关注召回命中率、引用完整性、文档版本、权限过滤和回答是否被证据支持。
Memory 的核心评估问题是:有没有恢复正确的上下文?你需要关注用户隔离、任务连续性、冲突处理、过期记忆抑制、重启恢复和错误记忆删除。
因此,两条链路的评估集不要混用:
- RAG 测试集:同义提问、跨文档查询、旧版本与新版本冲突、无答案问题、权限边界问题。
- Memory 测试集:用户偏好改变、用户要求忘记某件事、跨会话恢复、并行任务切换、服务重启、相似用户隔离。
- 双轨测试集:一个问题同时包含知识与个性化条件,例如“按照公司退款政策,为这个客户生成一封更简短的邮件”。前半句依赖 RAG,后半句依赖 Memory。
聊天记录不应直接全部转成长期记忆。原始对话可以按合规要求进入审计存储,但长期 Memory 应只保留经过分类、授权和生命周期管理的信息。否则,模型的闲聊、临时猜测和错误陈述会被不断放大,最终变成下一次回答的“伪事实”。
隐私、隔离和删除不能使用同一套默认值
RAG 的权限重点是“谁能读取哪份文档”;Memory 的权限重点是“哪个用户、项目或 Agent 能读取哪条记忆”。这两个范围看似相近,实际经常不同。
例如,企业知识库中的一份部署规范可能允许整个技术团队读取;某个客户的联系偏好,却只能被该客户对应的 Agent 读取。若你只给向量库设置一个全局租户字段,却没有在写入、召回和日志层同时校验,就可能发生跨用户记忆泄露。
建议你至少分别设计以下策略:
- 文档权限:按组织、部门、项目、文档版本和角色过滤;
- 用户记忆隔离:使用租户、用户、会话和 Agent 标识进行多层校验;
- 留存周期:知识文档按版本管理,用户偏好按业务需要设置有效期,任务状态在任务结束后归档或删除;
- 删除传播:删除原始对话后,检查提取记忆、场景摘要、嵌入向量、缓存和备份;
- 审计记录:记录谁写入、谁修改、谁召回、谁删除,以及使用了哪个版本的提取逻辑。
本地部署可以减少数据发往外部服务的路径,但不自动等于完成合规。你仍要处理操作系统权限、磁盘加密、备份副本、日志脱敏、访问审计和密钥管理。TencentDB-Agent-Memory 官方仓库将本地后端列为能力之一,但具体合规结论仍取决于你的部署边界和业务制度。
按场景选择:单轨还是双轨?
你可以先用下面的条件分支做架构筛选:
- 若系统只回答外部知识问题,且用户偏好不影响结果,先选 RAG。不要为了“看起来像 Agent”而增加长期 Memory。
- 若系统需要跨会话记住用户、项目或任务状态,在现有 RAG 之外增加 Agent Memory,并设置独立的用户隔离和删除策略。
- 若一次请求同时需要企业知识、用户偏好和任务恢复,选择双轨架构,由路由层判断哪些内容送往 RAG,哪些内容从 Memory 召回。
- 若记忆内容会影响付款、权限、医疗、合规或其他高风险决策,不要让自动提取结果直接覆盖事实源,应保留原始证据并加入人工或业务系统确认。
- 若团队还没有稳定的日志、删除和回放能力,先把 RAG 和任务状态做清楚,再逐步引入长期记忆。
一个典型的双轨请求可以这样处理:
- 识别用户、租户、项目和当前任务;
- 从 Memory 读取经过权限过滤的用户偏好与任务状态;
- 从 RAG 检索当前版本的外部知识;
- 将两类上下文分别标记为“用户状态”和“外部证据”;
- 让 Agent 生成答案,并保留引用与记忆召回记录;
- 只有满足写入规则的内容,才进入下一轮 Memory 提取。
上线前不要只测“回答是否流畅”。至少准备 4 组验收:
- 错误召回:加入相似但不相关的记忆,确认 Agent 不会盲目采用;
- 跨用户隔离:让两个用户使用相似问题,确认不会互相召回偏好;
- 重启恢复:重启 Agent 后验证任务状态是否按预期恢复;
- 数据删除:删除原始记录后,检查长期记忆、摘要、向量和日志是否仍能被召回。
如果你正在准备长期运行环境,可以先阅读 Kvmzen 帮助中心,再根据实际的模型、工具链和数据隔离要求选择运行方式。对于需要临时搭建测试节点的团队,也可以了解 Mac 云租用方案,但不要把运行环境选择误当成记忆架构设计。
当前方案与 Mac 方案的最终判断
如果你目前把 Agent 跑在个人电脑、共享服务器或临时云主机上,常见缺点不是模型本身,而是环境不稳定:机器休眠会中断任务,重启后本地状态未必自动恢复,多个项目共用目录还可能造成密钥、缓存和记忆数据混杂。
对于需要连续测试 RAG、Memory 写入、重启恢复和数据隔离的项目,租赁 Kvmzen 的 Mac 环境可以减少本地设备占用、环境迁移和临时配置的反复折腾,尤其适合短期验证插件兼容性、部署本地后端或跑固定对话集。不过,长期稳定重负载、必须接入特定物理设备,或者你已经拥有合规且持续运行的服务器时,自购 Mac 或保留现有基础设施可能更合适。
你的第一步不是马上增加一个记忆组件,而是先判断这个 Agent 只需要查知识,还是必须持续记住用户与任务。答案是前者,就从 RAG 开始;答案是后者,就为 Memory 单独设计写入和删除;两者都有,就采用双轨,并把每次召回都做成可追溯、可隔离、可删除的运行记录。
