云计算百科
云计算领域专业知识百科平台

用户记忆与知识库的工程实践:从 RAG 到智能体化检索的技术体系

在这里插入图片描述

用户记忆与知识库的工程实践:从 RAG 到智能体化检索的技术体系

本文基于开源技术书《深入理解 AI Agent》第三章,系统梳理 Agent 跨会话的持久化知识体系。该章将上下文管理从单次会话扩展到跨会话场景,涵盖用户记忆系统的四种存储格式、RAG 完整技术栈、结构化索引方法、智能体化 RAG,以及知识更新的安全机制。两个尺度——面向个人的用户记忆和面向群体的共享知识库——共用许多底层技术,也面临同样的工程挑战。

在这里插入图片描述

用户记忆系统:从轨迹到长期记忆

Agent 要跨会话提供个性化服务,需要一层持久的用户记忆。这层记忆不保存每句对话,而是用额外的 LLM 调用提取、压缩并审查对未来有用的事实。

记忆的层次结构

记忆系统按时间尺度分为不同层次:轨迹是一次 Agent 运行过程中的完整历史记录,按时间顺序排列、只增不改,为 Agent 决策提供即时上下文。用户长期记忆则是跨会话、跨实例的持久化存储,以键值对形式与特定用户 ID 绑定,会被反复改写、合并、淘汰。前者是流水账,后者是档案。

四种渐进式存储格式

同一条用户信息,可以用不同粒度和结构来表示。该章介绍了四种渐进式的存储格式:
在这里插入图片描述

  • Simple Notes:每条记忆是一个最小不可再分的事实(如"用户邮箱:john@example.com"),开销极低但信息关联性完全丢失。
  • Enhanced Notes:将每条记忆保存为包含完整上下文的段落,保留叙事结构和语义完整性,但存在存储冗余和更新复杂问题。
  • JSON Cards:三层嵌套结构(类别-子类别-键值对),支持部分更新,但刚性结构假设信息可清晰分类。
  • Advanced JSON Cards:加入来源叙事背景(backstory)、主体身份(person)、与用户关系(relationship)和时间戳,解决了消歧问题。

实践中的选择标准是:关键且少量的数据用 Advanced JSON Cards 以保证可检索性;大量且非关键的对话事实用 Simple Notes 以降低成本;多数生产系统采用混合模式。

记忆能力的三层次评估框架

该章建立了衡量记忆系统能力的三层次框架:

  • 第一层(基础回忆):准确存储和检索用户直接提供的、结构化的、无歧义的信息
  • 第二层(多会话检索):在多段会话中检索所有相关信息并推理判断(如两辆车的用户要预约保养时主动询问是哪辆)
  • 第三层(主动服务):综合来自多个会话的信息,提供具有预见性的主动帮助(如发现护照即将过期并发出预警)

这个框架贯穿全章——后文的实验都用它来衡量检索技术对记忆能力的提升。

记忆框架案例:Mem0 与 Memobase

开源社区已出现多个专门的记忆管理框架。Mem0 经历了从"写入时消歧"到"检索时推理"的演进:2025 年版本把冲突处理放在写入阶段(ADD/UPDATE/DELETE/NOOP),2026 年 v3 改为仅做 ADD、在检索时融合语义相似度、BM25 和实体匹配并按时间排序。Memobase 则聚焦"用户画像"形态,把用户记忆分为可配置槽位的用户画像和按时间线记录的事件记忆,采用缓冲批处理策略摊薄 LLM 调用成本。

认知科学基础

该章从认知科学视角补充了记忆内容类型的理解:情景记忆(具体事件)、语义记忆(一般性知识)和程序记忆(行为流程),分别对应 Agent 中的事件记录、用户偏好和操作流程。三套分类体系(记忆层次、存储格式、认知类型)是正交维度,可以自由组合。

RAG 基础:检索增强生成的技术栈

RAG 的核心思想是将 LLM 的生成能力与外部知识库的广度和时效性相结合。核心流程是:检索相关片段 – 注入上下文 – LLM 基于上下文生成答案。

在这里插入图片描述

文档分块

在能够检索之前,需要把长文档切成适合独立检索的片段。常见策略有三类:固定大小切分(简单但无视文档结构)、递归/结构感知切分(按自然边界递归切分,是生产系统默认选择)和语义切分(在语义"断崖"处下刀,质量更高但需额外嵌入计算)。

块大小与重叠量的选择是一对典型权衡:太小语义模糊,太大稀释检索精度。该章还埋下一个伏笔——分块会切断片段与原始上下文的联系,"该公司"指代谁这类信息留在了块外面,后文"上下文感知检索"一节将正面解决这个问题。

稠密嵌入:语义理解

稠密嵌入用深度学习把文本映射到向量空间,语义相近的内容向量距离也近。从 Word2Vec(只能捕捉词汇共现关系)到 BERT、BGE-M3(上下文感知,同一词在不同语境有不同向量),实现了从"词汇级"到"语境级"语义的飞跃。衡量向量相似度的常用方法是余弦相似度——关心方向是否一致而非长度大小。

在这里插入图片描述

稀疏嵌入:精确匹配

稀疏嵌入根植于传统信息检索,核心是精确的关键词匹配。从 TF-IDF 到 BM25 的演进,核心改进是引入词频饱和(重复出现的边际贡献逐渐降低)和长度归一化(使不同长度文档更公平比较)。BM25 在技术代码、人名等精确匹配查询上表现极佳,却读不懂同义表达。

混合检索:两路融合与重排序

两种方法各有盲区。混合检索的思路是两个引擎都跑,结果合并。难点在于两路得分不可直接比较(余弦相似度是 0-1,BM25 可能是 0 到几十的任意值)。常用融合方法是倒数排名融合(RRF),完全抛开原始得分、只看排名。

在这里插入图片描述

流水线的第三个阶段是神经重排序,它用跨编码器对查询和文档做深度交互匹配——就像面试官与候选人逐字斟酌,精度远高于检索阶段双编码器的初筛。该章强调,重排序不是为了"补救 RRF 丢掉的得分"才存在的:无论前一步用哪种方式融合,重排序都值得加,因为它换用了一种更强的匹配范式。

超越扁平文本:知识的组织与检索

该章提出了一个根本性问题:把文档切成互不关联的扁平文本块,会丢掉知识固有的层次和跨文档关联。两个案例说明了这个问题:

  • 黑猫白猫的计数问题:100 个独立案例文档中,受限于 top-k 大部分根本不会被检索到,模型基于不完整样本得出错误结论。
  • Xfinity 优惠资格的边界问题:几百条工单各自只记录个案结论,没有任何一条写着资格范围本身,模型还会因"最近邻偏置"而给出不一致的答案。

结论是:把原始案例或文档不加处理地直接放进知识库是远远不够的。必须在索引阶段投入计算资源,对原始知识主动提炼、抽象和结构化。

结构化索引:RAPTOR 与 GraphRAG

在这里插入图片描述

RAPTOR 采用自下而上的递归抽象。文本块作为叶子节点,通过聚类分组后生成更高层次的摘要作为父节点,不断递归形成从细节到概括的知识树。它适合"从概念逐步钻进细节"的查询。

在这里插入图片描述

GraphRAG 将文档知识建模为由实体和关系构成的知识图谱。其核心优势是多跳关系推理(沿关系边遍历)和实体消歧(同名实体是图中的不同节点)。适合"A 和 B 之间是什么关系"的查询。

然而,知识图谱作为通用存储方案面临固有局限:将自然语言转为三元组会导致语义降级——条件判断和时间依赖等核心逻辑在三元组中全部丢失。实践中推荐分层互补:以自然语言保存核心信息,辅以结构化元数据索引,在需要多跳推理的垂直场景将知识图谱作为专项索引手段。

文件系统范式:OpenViking

OpenViking 提出了第三种哲学:将所有上下文映射为虚拟文件系统中的目录和文件,每个条目拥有唯一 URI。核心设计是 L0/L1/L2 三层按需加载——L0 约 100 tokens 的摘要用于快速判断相关性,L1 约 2000 tokens 的概览供决策,L2 为完整原文仅按需加载。选择 Markdown 纯文本而非专用数据库,意味着用户可直接阅读、编辑,可通过 Git 版本控制。

该章特别强调了一个实践前提:文件之间必须建立链接与索引。如果只是把知识拆成独立文件平铺在目录里,Agent 几乎无从在相关条目间导航。正确做法是把知识库组织得像 Wikipedia,每个条目在提及其他条目时以链接指向它。

智能体化 RAG:从被动管道到主动探索者

传统 RAG 是一个单向数据流:查询直接用于检索,结果直接注入上下文,模型直接生成答案。这种"非智能体化"模式高效但能力上限低,缺乏对问题进行深度理解和迭代探索的能力。

智能体化 RAG 把 RAG 从固定数据处理流程升级为由 Agent 主导的动态迭代探索。Agent 采用 ReAct 模式,通过"思考-行动-观察"循环主导整个过程:自主决定查询关键词,调用知识库搜索工具,评估信息是否充分,不够则提炼更精确的查询再次搜索。

在这里插入图片描述

该章的实验用司法问答数据集对比了两种模式。简单问题两者差距不大,但面对复杂问题(如"醉酒过失致人重伤且有盗窃前科如何量刑"),非智能体化 RAG 因首次检索关键词不精确常遗漏关键信息,而智能体化 RAG 展现出多轮迭代检索能力——先分解问题并行搜索多个子问题,评估后发现缺少联系信息,再构造更精确的二次查询,最终综合给出有法条依据的完整回答。

RAG 的安全边界

把外部内容检索进上下文也带来了安全风险:检索到的文档是间接提示注入最典型的载体。防御要分两层——指令与数据分离(对所有检索内容做来源标记)和不让检索内容直接触发高风险操作(转账、删除等动作不应仅凭检索内容就自动执行)。

上下文感知检索:解决分块的固有缺陷

该章介绍了 Anthropic 提出的上下文感知检索。核心思想是:在对文本块进行向量化索引之前,先利用 LLM 为其生成包含核心上下文的"前缀摘要",然后拼接后再索引。

例如,孤立的"该公司第二季度的收入增长了 3%“变得模棱两可,加上前缀”[本段内容节选自 ACME 公司 2025 年 Q2 财务报告]"后就重新锚定在了原始语义环境中。这种方法同时增强了稀疏检索(增加可精确匹配的关键词)和稠密检索(注入关键语义背景)。据 Anthropic 数据,此技术结合 BM25 可将检索失败率降低 49%,再结合重排序器降幅达 67%。

双层记忆架构:将知识库技术应用于用户记忆

该章最后把知识库技术反过来应用到用户记忆场景,形成了双层记忆架构:用 Advanced JSON Cards 把少量关键事实结构化后常驻上下文,提供"概览";用上下文感知检索按需从海量原始对话中取回"细节"。

回看三层次评估框架:基础回忆靠可靠存取即可满足,多会话检索靠检索技术补齐,而主动服务之所以最难,正因为它要求系统同时握有"全局概览"和"精确细节"两种视角。双层架构将两者结合,才让"主动服务"首次在工程上落地。

知识更新机制:增量更新与定期整理

一个上线运行的知识库会持续收到新信息。完整的更新机制必须包含两条路径。

增量更新:把知识库当代码库

最稳妥的工程答案是把知识库当成代码库,把每次知识变更当成一个 Pull Request。采用提议者-审核者模式:Proposer Agent 在工作分支上提出最小而完整的 diff,Reviewer Agent 独立审核每个新断言是否能被证据支持。两个 Agent 应优先使用能力相近但来自不同家族的模型以降低同类错误概率。

流水线应明确分开三层:原始证据层(只增不改的对话和文档)、知识层(经过提炼可持续修订的 Markdown 或代码)、服务层(从已合入版本生成的检索索引)。

定期整理:回到原始数据

增量更新每次只看到局部,长期运行后多次局部正确的修改仍可能累积全局问题。定期整理至少包含三项工作:去重去旧与合并、回到原始数据核查(不能只在摘要之间相互改写)、冲突解决与场景限定(遇到矛盾说法时追溯各自信息源而非简单保留最新一条)。

从数据中提取深度知识

该章还展示了从结构化数据集中提取隐性知识的范式。以司法判例为例,知识不只写在法条里,更多体现在成千上万份判例中法官如何权衡各种因素的经验中。过程分两阶段:先用 LLM 把非结构化案例描述转换为标准化 JSON 对象,再运用统计分析和模式识别发现哪些因素对结果有最显著影响。这本质上是从"信息检索"到"知识发现"的飞跃——Agent 不一定要把知识库当成静态仓库,它可以先把数据"读懂",提炼出结构化决策逻辑,再基于这个逻辑来回答问题。

小结

第三章把持久化知识分成两个尺度:面向个人的用户记忆和面向群体的共享知识库。前者遵循"读取相关记忆 – 后台提取候选 – 来源核验 – 更新"的生命周期,并可在四种存储格式间按需取舍。知识库的主流水线是"分块 – 稠密/稀疏检索 – 融合 – 重排序 – 生成",用 recall@k 等指标验收。RAPTOR、GraphRAG、OpenViking、上下文感知检索和智能体化 RAG 分别改变知识的组织、分块或检索控制方式。双层记忆架构将结构化概览常驻上下文与按需精准检索原始细节结合,使最高级别的"主动服务"能力首次在工程上成为可能。知识更新不能跳过来源、时间、冲突和隐私检查——增量更新吸收新证据,定期整理回到原始数据全局重审,所有修改通过独立审核后才发布。

本文内容整理自开源技术书《深入理解 AI Agent》(bojieli/ai-agent-book),采用 Apache 2.0 许可证

赞(0)
未经允许不得转载:网硕互联帮助中心 » 用户记忆与知识库的工程实践:从 RAG 到智能体化检索的技术体系
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!