用户记忆和知识库:让 Agent 记住你
第 2 章管的是”一次任务内”的上下文。这一章往前走一步:任务结束了,Agent 怎么还认得你。
两个尺度:用户记忆 vs 知识库
- 用户记忆:针对单个用户的个性化——偏好、习惯、需求,让 Agent 成”懂你的助手”
- 知识库:所有用户共享的集体知识——法规、流程、文档,让 Agent 成”领域专家”
同一套底层技术(向量检索、知识压缩),同一堆麻烦(冲突、过期、检索不准)。区别只在个体还是群体。
记忆存在哪:三个层次
- 轨迹 Trajectory:单次会话的原始流水账,append-only 不修改
- 用户长期记忆:跨会话提炼,键值对绑用户 ID,存偏好和历史摘要
- 业务状态:任务逻辑阶段(”待澄清””处理中””等付款”)
(易错:轨迹 ≠ 工作记忆。轨迹是流水账,工作记忆是当前任务的动态子集。)
怎么判断一个 Agent”记性好不好”
书里给了个三层次框架,我觉得很实用:
- 第一层 基础回忆:准确保存无歧义信息(比如会员号)
- 第二层 多会话检索:跨对象跨期拼出所有相关再推理(比如两辆车分别预约保养)
- 第三层 主动服务:综合久前的信息提前帮上忙(比如提醒护照快过期)
多数产品卡在第一层,能做到第三层才算真”懂你”。
怎么存:四种格式
- Simple Notes:最小事实,O(1) 操作,但丢关联
- Enhanced Notes:完整段落,保语义但冗余
- JSON Cards:三层嵌套,可部分更新但刚性
- Advanced JSON Cards:加 backstory、person、关系、时间戳,能消歧但贵
实践上混合用:少量关键的用 Advanced JSON,大量非关键的用 Simple。
进阶:把用户当代码(User as Code)
更硬核的玩法——用户状态做成带类型的可执行对象,规则写成函数。比如护照有效期检查,用确定性函数算,比让模型”理解”靠谱。
认知科学上也分三型:情景记忆(”订了去东京的航班”)、语义记忆(”是素食者”)、程序记忆(”先搜直飞再确认座位”)。跟上面的”层次””格式”是正交的,可以组合。
框架参考
- Mem0:v2 写入时消歧(ADD/UPDATE/DELETE),v3 改成只追加 + 混合检索,基准从 71.4 干到 92.5
- Memobase:用户画像 + 事件记忆,缓冲批处理
记忆这块最容易被做成”把聊天记录全存下来”。但书里说的关键是提取、压缩、审查——用额外一次 LLM 调用,把对未来有用的事实捞出来,而不是囤原始对话。
我个人觉得,中小团队真要做用户记忆,从 Advanced JSON Cards + 定期整理起步就够,别一上来搞多模态记忆那套花活。
前面讲 Agent 怎么记人。接着讲怎么让 Agent 变成一个”领域专家”——靠知识库和 RAG。
RAG 是啥
检索增强生成:检索相关片段 → 注入上下文 → 模型基于它生成。把模型的”会想”和外部知识的”广而新”拼一起。
第一步:分块
文档先切块(Chunking),256–1024 token,重叠 10–20%。块太大检索不准,太小丢上下文。
第二步:嵌入与相似度
文本转成向量(Embedding),语义近的向量也近。比相似度常用余弦相似度(只看方向不看长度)。
两类嵌入:
- 稠密 Dense:深度学习映射,懂语义(BERT、BGE-M3)
- 稀疏 Sparse:关键词精确匹配,高维大部分为零(TF-IDF、BM25)
(易错:稠密懂语义但漏关键词,稀疏精确但读不懂同义。所以混合检索基本是标配。)
混合检索与重排序
并行跑稠密 + 稀疏,结果用 RRF(倒数排名融合,得分 = Σ 1/(k+rank),k 常取 60)融合,再上 Cross-Encoder 神经重排序(慢但准)。
质量看三个指标:recall@k(前 k 有没有)、MRR(首个相关排第几)、nDCG(相关度+排名折损)。
超越扁平文本
- RAPTOR:递归抽象树,叶子到根摘要,适合”概念钻到细节”
- GraphRAG:实体-关系图,多跳推理 + 实体消歧,适合”J 和 B 啥关系”
- 文件系统范式(OpenViking):把上下文映射成虚拟文件系统 viking://,L0 摘要/L1 概览/L2 全文三层按需加载
(图谱做通用记忆会有语义降级——自然语言转三元组丢信息。更稳的是分层互补:自然语言 + 结构化元数据。)
知识更新:用 PR 的脑子
知识会过期。书里建议 PR 式更新:Proposer 提 diff,Reviewer 独立审核,最好异源模型互审(比如 Claude + GPT),Reviewer 只读原始证据。
原始证据层(append-only)、知识层(可修订)、服务层(派生索引)三层分离。
上下文感知检索
分块前先用 LLM 给每块加个含核心上下文的前缀摘要(比如”[ACME 2025Q2 财报]”),补上代词、时间、实体。注意这跟第 2 章的”上下文感知压缩”不一样:一个是索引期做加法,一个是运行期做减法。
汇合:双层记忆架构
把前面的用户记忆和前面讲的 RAG 合起来:Advanced JSON Cards 常驻(记人),上下文感知检索按需(找知识)。做到这层,Agent 就能实现第三层的”主动服务”——比如你护照快过期,它自己蹦出来提醒。
RAG 看着简单,坑全在细节:分块切坏上下文、混合检索没做、更新没审。
建议:中小场景先把”分块 + 稠密/稀疏混合 + 重排序 + 定期 PR 更新”这基础四件套做扎实,GraphRAG、文件系统范式那些等真遇到多跳推理再上。