一句话总结
AdaMem 把对话记忆从扁平的向量化检索,升级为"四层结构分类存储 + 动态路由检索",在长周期对话推理和用户画像任务上都达到了 SOTA 效果
一、动机
当前 LLM Agent 越来越依赖外挂记忆来应对长周期交互,但现有记忆系统面临三个核心痛点。
过度依赖语义相似度
常见的检索逻辑是"拿 query 向量和历史记录比对,返回最像的"。但在实际对话中,用户相关的关键信息往往不是字面上最像的那段,比如"她为什么后来改了口味",关键证据可能散落在多次对话中,语义检索很难一网打尽
记忆碎片化
很多系统把对话历史切成 chunk 存储,导致时间顺序、因果链条、人物关系全都断裂。需要连贯推理时,只能拼凑出一堆互不关联的碎片
固定粒度的两难
切得太粗,检索回来夹杂大量无关内容;切得太细,看不出事件的完整发展脉络。现有系统很难在两者之间找到好的平衡点
所以,一个好的记忆系统应当满足这些基本原则:
结构化存储
碎片化和固定粒度问题的共同根源,是把对话切成等长文本块然后扁平堆放。更好的做法是在写入时就对信息进行加工:提取事件、事实、属性等语义类型,按不同抽象层级组织成体系化的数据结构,而非一股脑塞进向量库
层级流转
人脑不会把所有经历以同样的形式永久保存:近期对话保持原貌以备即时调用,反复出现的模式逐渐提炼为稳定认知。一个工程化的记忆系统也应设计从"短期原文"到"长期结构化记录"再到"抽象画像"的沉淀路径,让信息在合适的时机自然地转化和压缩
检索策略自适应
既然记忆已经分层组织,检索就不必再"一招鲜"。简单的事实查询只需翻轻量语义索引,涉及时间线或因果链的问题才动用结构化关系遍历
AdaMem 便是沿着这一逻辑的一次具体实践
很多记忆系统像是把聊天记录剪成一堆纸条,问问题时去翻最像的几张;AdaMem 则是把这些纸条分别放进"桌面便签、事件日记、人物档案、关系线索板"里,提问时先判断"这题在问谁、要不要查关系、要不要追时间线",再决定去翻哪个抽屉
二、结构化存储:四层记忆的设计
如果要 “用结构化取代扁平”,那么具体应该分成几层、每层存什么?AdaMem 的选择是,为每个对话参与者各维护四种记忆,对应从"原始对话"到"高度抽象"的递进层级:
| 记忆类型 | 类比 | 存储内容 | 抽象层级 |
|---|---|---|---|
| Working Memory | 桌面便签 | 最近对话原文 | 最低:保留原始表达 |
| Episodic Memory | 事件日记 | 事件、事实、属性、主题摘要 | 中等:结构化提取 |
| Persona Memory | 人物档案 | 用户偏好和稳定特征 | 较高:跨对话聚合 |
| Graph Memory | 关系线索板 | 消息-主题-事实-事件关系网络 | 正交维度:关联索引 |
前三层构成一条抽象度递增的纵向链:原文 → 结构化事实 → 画像摘要。Graph Memory 则是横向的连接层,把散落在不同对话中的证据沿人物线、主题线、时间线串联起来
三、记忆的写入与流转
3.1 规范化写入
有了分层结构后,首先要解决的问题是"新来的对话怎么进入这套体系"。如果每种记忆各自独立解析原文,同一句话在不同模块里很容易被理解成不同的意思。AdaMem 的做法是设置一个统一入口:每段新对话先由 Memory Agent 生成一个规范化记录 z_t,包含摘要、主题、态度、原因、事实片段、人物属性、时间戳和说话者身份。后续所有模块的写入都基于这同一份 z_t,而非各自重新理解原文
很多系统"记不住"的根源不是存储不够,而是"写得乱":同一句话在不同模块里产生了不一致的理解
3.2 工作记忆的沉淀
规范化记录首先进入 Working Memory——一个容量为 20 的 FIFO 队列。队列满了之后,最老的 5 条消息被弹出,送给三个路由器分别处理事件、事实和属性。每个路由器对每条信息只做一个决定:ADD(新增条目)、UPDATE(修订已有条目)还是IGNORE(忽略冗余)。原始消息不丢弃,保留作为后续可追溯的证据来源
3.3 细粒度记忆的聚合
随着对话持续进行,Episodic Memory 中积累了大量细粒度条目(某次跑步、某次点餐、某个周末计划)。这些碎片单独来看价值有限,但聚在一起就能形成更高层的用户画像。AdaMem 用两步上卷来完成这一提炼:
- 用向量相似度把细粒度键连成一个稀疏近邻图,取连通块作为合并组(避免手动调相似度阈值)
- 用 LLM 把同组内容改写成更高层的主题摘要或画像描述
比如"最近开始跑步"“少吃甜食”"喜欢周末户外活动"这些分散在不同对话里的句子,最终会被聚合成"近阶段关注健康生活方式"这样一条 Persona Memory
3.4 图记忆的构建
纵向的三层沉淀解决了"信息该存在哪里"的问题,但还有一个维度没有覆盖:跨片段的关联。用户在第 3 次对话里提到的偏好变化,可能和第 15 次对话里的行为直接相关,但它们分属不同的 Episodic Memory 条目,纵向结构看不出这种联系
Graph Memory 正是为此设计的。它不是让模型从头做知识图谱抽取,而是基于前述规范化记录按固定规则构建。节点有五种类型(消息、主题、事实、属性、事件),边有五种类型:
mentions:消息 → 主题supports:消息 → 事实/属性,事实 → 事件same_topic:同一说话人近期谈论同一主题temporal_next:时间相邻的消息speaker_related:同一说话人的相邻消息
至此,AdaMem 的存储体系已经完整:纵向三层递进(原文 → 结构化 → 画像),横向一层关联(图记忆)。接下来的问题是:面对一个具体的问题,该怎么利用这套结构?
四、自适应检索:让问题决定检索路径
有了分层结构化存储,AdaMem 便有条件实现差异化的检索路径,这也是 “Adaptive” 的含义所在
4.1 先判断:在问谁
多人对话中,同一个问题可能指向 user、assistant 或两者。AdaMem 先做一个四分类:确定 query 的目标参与者。如果指代不明确,不硬猜,而是分别在双方记忆包中小范围检索后合并排序,让不确定性在检索阶段被显式处理而非隐藏到生成阶段
4.2 再规划:该走哪条检索路线
确定了"问谁"之后,下一步是"怎么搜"。系统先用规则关键词做初步判断:
when/before/after → 时间线问题 → 启用图扩展why/because/connect → 因果关系问题 → 启用图扩展favorite/personality/trait → 属性问题 → 画像优先who/what/where → 单跳事实问题 → 语义检索即可
只有当规则置信度较低时,才让 LLM 介入做识别。这种"规则先行、模型兜底"的策略,保证简单问题不会被过度检索,复杂问题又能获得结构化的证据支持
4.3 基础检索与证据补回
基础检索同时从三个来源拿候选:画像摘要、情节事实、主题反查的原始消息。除了召回的 top-K 信息之外,还补充了两种额外内容:
- 事实上下文:高分事实命中 → 补充召回对应的原始对话消息
- 关键词回退:补那些向量检索不占优但字面上很关键的消息
先看摘要索引确定方向,必要时翻回原始聊天记录,确保不只拿到抽象结论,还能找到具体证据
4.4 图检索与多信号融合
当路线规划认为需要结构化证据时,系统在图上选语义种子节点做受限多跳扩展,每种边有固定权重(如supports=0.90、temporal_next=0.70),并带 hop decay 衰减系数 0.85
最终融合分数由四项组成:
语义检索占绝对主导(70%),图、时间、事实信号只是辅助。这种克制的设计有意避免图检索喧宾夺主——结构化的价值不在于替代语义检索,而在于补全它覆盖不到的关联证据
五、多 Agent 协作的记忆管理
存储和检索的设计解决了"记什么"和"怎么找",但还有一个工程问题:如果让一个 Agent 同时负责记忆维护、证据搜索和答案生成,不同职责之间容易相互干扰。AdaMem 将这三件事拆给三个专职角色:
| 角色 | 职责 | 类比 |
|---|---|---|
| Memory Agent | 理解新消息、维护四层记忆 | 档案管理员 |
| Research Agent | 规划搜索策略 → 检索 → 整合 → 反思,迭代至证据充分 | 研究助理 |
| Working Agent | 基于整合好的证据写出最终回答 | 发言人 |
值得注意的是,Research Agent 决定的是"还缺什么信息"(what),而前面 4.2 节的路线规划决定的是"这次检索该怎么执行"(how)。前者像研究助理决定还要查什么资料,后者像图书管理员决定该翻目录卡还是档案柜。后续消融实验证明了这一职责划分的有用性
六、实验结果
6.1 LoCoMo:整体最强,时间推理提升最大
在长上下文多 session 对话基准 LoCoMo 上测试,AdaMem 用 GPT-4.1-mini 做骨干时达到44.65 F1 / 37.92 BLEU-1,相比最强基线提升4.4%。最亮眼的是时间类问题,提升高达23.4%
不过在 Open Domain 类别上效果稍差。作者认为这类题更适合针对特定结构假设的方法,AdaMem 追求的是更均衡的整体表现
6.2 PERSONAMEM:记人更准,泛化更强
PERSONAMEM 更关注用户建模和个性化记忆。AdaMem 平均准确率63.25%,高于 A-Mem(59.75%)和 Mem0(48.55%)。"泛化到新场景"一项达到73.68%,相对提升27.3%
6.3 消融实验:图记忆贡献最大,三部分互补
去掉图记忆时的降幅最大,说明跨时间、跨片段的关系补回是最关键的增益来源;信息融合和多 Agent 记忆管理也是带来稳定增益的关键组件
6.4 效率-性能权衡
AdaMem 平均输入 token 约 2248,端到端延迟 4.722 秒;Mem0 更省(1340 tokens / 3.739 秒),但 F1 只有 38.16。AdaMem 不是"又快又省"的路线,而是"用合理的额外成本换来显著的长推理质量"
6.5 跨模型迁移
换到开源骨干 Qwen3-4B-Instruct 也能达到 36.78 F1,Qwen3-30B-A3B-Instruct 则到 43.02 F1,说明记忆架构本身是可迁移的,不依赖特定闭源模型的"智商红利"
学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋
📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~