记忆系统
记忆系统概述
概念解释
记忆(Memory)在 Agent 语境里,指系统为完成多轮对话、长期任务与个性化服务而存储、组织、检索、更新信息的一整套机制。没有记忆,Agent 只能做「无状态函数调用」:每次请求都像第一次见面,无法延续偏好、历史决策与上下文因果。
原理详解
- 状态与上下文的区别:单次请求的 prompt 是瞬时输入;记忆是跨请求持久或半持久的状态,可被策略性地注入 prompt、工具参数或规划模块。
- 与 RAG 的关系:长期记忆常与向量检索结合,但记忆还强调时间线、重要性、用户维度、写入策略(不只是「找文档」)。
- 设计目标:在 Token 预算、延迟、成本、隐私 约束下,最大化「对当前任务有用」的信息覆盖率。
人类记忆类比(感觉 / 短期 / 长期)
| 心理学概念 | 大致特征 | Agent 中的常见对应 |
|---|---|---|
| 感觉记忆 | 极短、容量大、未加工 | 原始多模态输入缓存、流式 ASR 缓冲、截图/音频临时块 |
| 短期记忆 / 工作记忆 | 容量小、可主动操作 | 对话上下文、Working Memory、ReAct 轨迹中的「当前 scratchpad」 |
| 长期记忆 | 持久、需巩固 | 向量库、文档库、用户画像表、知识图谱、会话摘要归档 |
类比的价值:帮助划分模块职责——哪些必须快、哪些可以慢;哪些必须忘、哪些必须存。
为什么 Agent 需要记忆?没有行不行?
需要。原因包括:(1)多轮一致性——避免重复追问、前后矛盾;(2)长任务——工具调用链、子目标状态需要延续;(3)个性化——偏好、禁忌、领域术语;(4)成本——不必每次把全量背景塞进 prompt,可通过摘要与检索按需加载。
「没有记忆」在简单 FAQ 或单次工具调用场景可能够用,但在助理、客服、编程 Agent、游戏 NPC 等场景会明显不可用。
用 RAG 算不算记忆?
算长期记忆的一种实现路径,但完整记忆系统通常还包括写入策略、衰减、用户隔离、摘要与时间线,而不仅是检索切片。
用人类记忆模型设计 Agent 记忆有什么好处?
好处是模块化与可解释:短期对应上下文窗口与 scratchpad,长期对应向量库/图谱;感觉记忆对应流缓冲。你可以针对不同模块设不同 SLA(延迟、持久化)。风险是类比不能硬套——计算机没有神经可塑性,需要工程上显式实现「巩固、遗忘、冲突解决」。
程序性记忆怎么落地?
常放在 工具说明书、工作流模板、可执行策略(policy) 或 微调/少样本示例 中,不一定进向量库。
短期记忆(Short-term / Working Memory)
概念解释
短期记忆一般指当前会话或当前任务周期内可被模型直接「看到」的信息载体,通常受 Token 上限与延迟约束。
原理详解
会话上下文(Conversation Buffer)
- 做法:将多轮 user / assistant(及可选 system)消息按时间顺序拼接进模型输入。
- 特点:信息保真度高;对话越长,越贵、越慢、越易注意力分散。
滑动窗口记忆(Window Buffer)
- 做法:只保留最近 (k) 轮或最近 (n) 个 Token。
- 特点:成本可控;可确保信息保真度;可能丢失信息。
如何做 Token 预算分配才不容易翻车?
建议顺序:system 指令 > 安全/策略 > 工具定义(若必须)> 高优先级记忆(用户偏好/任务状态)> 近期对话 > 其他。并预留 10%~20% 给模型输出与格式冗余。对长工具返回要压缩、引用 ID、存外部而不是全文塞入。
工具 schema 特别长怎么办?
工具分层(核心工具常驻 + 动态加载)、摘要版 schema、或 工具路由 先选子集再展开。
长期记忆(Long-term Memory)
概念解释
长期记忆用于跨会话、跨任务保留信息,典型实现是「向量数据库 + 元数据」:把记忆文本(或结构化记录)向量化,通过相似度检索召回。
长期记忆为什么常用向量数据库?有什么局限?
常用是因为语义检索能处理「换说法」的匹配。局限包括:相似≠正确(会召回到表面相近的噪声)、难精确匹配(账号、订单号更适合关键字/关系库)、更新一致性需业务层保障。
会话摘要与压缩
摘要与压缩是把长对话变为更短表示,以在 Token 预算内保留尽可能多的「任务有效信息」。
为什么需要摘要压缩
对话变长后:成本高、延迟高、模型更容易漏看中间约束。
摘要把信息搬到更短载体,配合长期记忆检索,实现「短上下文 + 广记忆」。
只用向量检索、不做摘要可以吗?
可以,但你会失去低成本的全局叙事(例如任务阶段、未决事项)。摘要擅长提供「主线」,向量擅长提供「细节证据」。最佳实践常是摘要 + 检索并存。
情景记忆与语义记忆
情景记忆(Episodic):关于具体事件——时间、地点、参与者、发生了什么。例如「昨天下午用户让我把报表改成 PDF」。
语义记忆(Semantic):一般性知识——概念、事实、规则。例如「PDF 是便携式文档格式」「公司退货政策是 7 天」。
高级记忆框架
当对话与工具轨迹变复杂后,会出现「上下文装不下、长期记忆难组织」的问题,业界提出更接近操作系统的记忆架构。
MemGPT / MemOS
- MemGPT 核心思想:把 LLM 上下文当作「有限 RAM」,把外部存储当作「磁盘」,通过 分页/换入换出 与 事件驱动 控制信息进出上下文。典型流程包括:当上下文将满时,由控制逻辑(可外挂函数)决定把哪些内容外溢到外部归档,并在需要时再加载回上下文;这与「每次用户提问都做一次相似度检索」的被动 RAG 不同,更强调对记忆载体的主动管理。
- 你要能讲清的点:外溢策略(FIFO、重要性、摘要)、主上下文 vs 外部上下文 的边界、以及为何能缓解长对话的 lost-in-the-middle 与成本问题。
- MemOS:多指「记忆操作系统」式架构——把记忆拆成 多层(例如:瞬时上下文、会话工作区、用户级长期存储、共享知识),并由调度器决定读写路径与配额;与 MemGPT 同属「分层 + 调度」一脉,名称随论文/开源项目演进,面试重点在思想而非单一产品版本。
Mem0 框架
- 定位:面向应用的 记忆层(memory layer),把「从对话中抽取可复用记忆 → 更新 → 检索」做成可集成组件,常与 向量检索、图结构、用户画像 组合使用。
- 价值:把「写记忆」从纯 prompt 技巧下沉为 可复用模块,便于在多应用间复用同一套写入与冲突处理策略。
- 面试表述:Mem0 偏 工程化记忆中间件;与 MemGPT 的「OS 分页」可互补——前者管 抽取与存储管线,后者管 上下文与外存之间的搬运策略。
综合
如何评测记忆系统好坏?
离线:召回率/精确率(给定标注 relevant memories)、摘要一致性、冲突率。
在线:任务成功率、用户纠正次数、成本与延迟。
未来记忆系统趋势你怎么看待?
更强调 分层 + 可学习检索 + 用户可控;合规与可删除性成为默认需求;与 世界模型/仿真 结合用于更强规划(开放题,言之成理即可)。
多 Agent 共享记忆要注意什么?
区分 共享语义知识(可读多 Agent)与 私有工作记忆(单 Agent);写权限要审计;避免一个 Agent 写入污染全局记忆——可用 命名空间、审批流、置信度门槛。