📌 TL;DR — 三句话读懂 AdaMem

现有 LLM 记忆系统存在三个致命缺陷:①语义检索遗漏关键证据、②相关记忆碎片化存储、③固定粒度无法适应不同问题。AdaMem 提出四层分级记忆(Working → Episodic → Persona → Graph),在检索时先解析用户实体、再动态路由,最后三路 Agent 协作生成答案,在 LoCoMo、PERSONAMEM 两大基准上刷新 SOTA。毕设选题绝佳参考:可改造为三级记忆方案作为论文创新点。

一、为什么你的 RAG / Agent 会"不知道哪个项目方案"?

用过长上下文对话 Agent 的朋友一定遇到过这种场景:你和 AI 聊了几十轮,前期说了"A 项目用 React"、"B 项目用 Vue",后来问"那个项目怎么部署?"——AI 一脸茫然,或者把两个项目张冠李戴。

这不是 LLM 变笨了,而是记忆系统设计有根本性缺陷。AdaMem 这篇论文把问题归结为三大痛点:

🔍痛点一:语义检索失灵

向量检索只看语义相似度。"他上周完成了吗?"里的"他"根本没语义,检索器不知道该去找谁的记录。

🧩痛点二:记忆碎片化

同一个项目/人物的信息被切成独立的 chunk 散落各处,时间顺序和因果关系全部丢失,无法拼出完整图景。

📐痛点三:粒度固化

"今天说了什么?"要细粒度记录;"这个用户喜欢什么风格?"要粗粒度画像。固定粒度两头都回答不好。

⚠️ 对应到实际开发

这就是为什么基于 Mem0、MemoryBank 等方案的 Agent 在项目管理、学习助手、个人知识库场景中常常"记性不好"——它们本质上都是扁平向量库 + 语义检索,没有层级、没有实体感知、没有动态路由。

二、AdaMem 的四层记忆架构

AdaMem 的核心创新是把对话历史组织成四种互补的记忆类型,从瞬时工作记忆到长期图谱知识,层层递进:

⚡Working工作记忆

瞬时/短期工作记忆(Working Memory)

存储最近几轮对话的实体事件,结构化为「主体 → 谓词 → 客体 + 时间戳」的三元组。例如:"用户 → 提到 → React 方案(今天 14:32)"

触发条件:每条新消息自动写入;达到阈值后经 Consolidation 压缩进入 Episodic 层。

📖Episodic情节记忆

中期情节记忆(Episodic Memory)

话题(Topic)分组的结构化摘要,保留时序和因果关系。同一项目的多次讨论会聚合成一个 Topic 节点,支持"合并相似话题"操作。

这里是解决"不知道哪个项目"问题的关键层——以项目/事件为单位聚合,而非以消息为单位碎片化存储。

👤Persona画像记忆

长期用户画像(Persona Memory)

跨会话积累的稳定用户特征:偏好、习惯、技术栈、沟通风格等。每隔一段时间从 Episodic 层自动刷新,去除过时信息。

示例:「用户偏好 TypeScript,擅长后端,倾向文档化开发流程」

🕸️Graph图谱记忆

关系图谱(Graph Memory)

知识图谱的形式存储实体间的显式关系(人 ↔ 项目 ↔ 技术 ↔ 时间)。在需要多跳推理时才激活,避免过度消耗 token。

例如:"用户 A → 负责 → 项目 B → 使用 → React → 部署于 → Vercel"——一次图游走即可还原全链路。

💡 与人类记忆的对应关系

这个设计直接类比人类认知科学:Working ≈ 工作记忆(7±2 条),Episodic ≈ 情节记忆(某天某事),Persona ≈ 语义记忆(长期知识),Graph ≈ 隐式关联网络。AdaMem 的创新在于把这四层动态地连接起来,而非静态并列。

三、检索时如何"自适应路由"?

有了四层记忆,下一个关键问题是:来了一个问题,去哪几层找、怎么找? AdaMem 设计了 Question-Conditioned Retrieval(问题条件检索)流程:

1Target Resolution
解析指代对象
"他/它/那个项目"→具体实体

2Route Planning
决定检索哪些层
问题类型→路由策略

3Baseline Retrieval
目标感知语义检索
锁定实体后再向量搜

4Graph Expansion
按需展开图谱
仅复杂关系查询激活

5Evidence Fusion
多源证据合并
去重+重排序

3.1 第一步:解析指代(Target Participant Resolution)

这是论文最重要的创新之一。面对"他最近有没有完成那个任务?",系统先用 LLM + 上下文解析出"他"指的是哪个具体用户/实体,再把这个实体 ID 注入后续所有检索步骤。

这直接解决了代词指代导致的检索失效问题,传统向量检索在这里完全束手无策。

3.2 第二步:动态路由(Route Planning)

根据问题类型,系统决定需要激活哪些记忆层:

  • 临时性问题("刚才说了什么?")→ 只查 Working Memory,快速返回
  • 项目/事件类问题("A 项目的进度如何?")→ 查 Episodic Memory,按 Topic 精准定位
  • 用户特征类问题("他喜欢什么技术栈?")→ 查 Persona Memory
  • 复杂关系类问题("这个项目和上个季度那个有什么联系?")→ 激活 Graph Memory 做多跳推理

✅ 关键设计哲学:按需激活,避免过度检索

Graph Memory 的多跳游走很耗 token,AdaMem 只有在路由判断确实需要关系推理时才激活它。对于简单的事实性问题,直接从 Working/Episodic 层拿到答案,保持低延迟。实验显示平均 latency 增加可接受(见第五节效率分析)。

四、三路 Multi-Agent 协作

检索到证据后,AdaMem 用三个角色专一的 Agent 完成最终答复:

🗄️ Memory Agent

负责记忆的写入、整合与维护。接收新消息后,判断写入哪一层、是否触发 Consolidation、是否更新 Persona/Graph。相当于"记忆管理员"。

🔬 Research Agent

执行检索路由逻辑,从四层记忆中召回相关证据,进行去重、重排序和多源融合,最终输出结构化的证据列表供回答使用。

✍️ Working Agent

基于证据列表和当前问题生成最终回复。具备"反思"能力——若发现证据不足,可向 Research Agent 发出补充检索请求。

五、实验结果——SOTA 了吗?

论文在两个权威 benchmark 上评测:LoCoMo(长对话多跳推理)和 PERSONAMEM(用户建模与个性化)。

📊 LoCoMo(长对话推理)

Single-hop QASOTA ↑ 显著

Multi-hop QASOTA ↑ 显著

Event SummarySOTA ↑

vs MemoryBank+大幅提升

📊 PERSONAMEM(用户建模)

User Trait QASOTA ↑

Preference Pred.SOTA ↑ 显著

Persona Consist.SOTA ↑

vs Mem0全面超越

消融实验证明四个组件各有不可或缺的贡献:移除 Graph Memory 对多跳推理影响最大;移除 Persona Memory 对跨会话个性化影响最大;Target Resolution 模块对含代词问题的 F1 影响超过 15 个点。

方法 代词指代处理 记忆层次化 动态路由 关系图谱 多 Agent
纯 RAG(向量检索)
Mem0
MemoryBank
A-MEM
AdaMem(本文)

六、毕设借鉴:改造成三级记忆方案

🎓 论文创新点参考——三级记忆优化方案

AdaMem 四层架构可精简为适合毕业论文的三级记忆方案,既保留核心创新,又降低工程复杂度:

第一级:短期上下文缓存(对应 Working Memory)
存储最近 N 轮对话,结构化为实体三元组,解决"当前会话内的代词指代"问题。可用 Redis 实现。创新点描述:基于结构化三元组的上下文实体追踪机制

第二级:项目/事件摘要层(对应 Episodic Memory)
按实体/项目聚合多轮对话,LLM 自动生成结构化摘要并打标签。解决"跨轮次的项目信息碎片化"问题。创新点:面向实体聚合的层次化记忆压缩算法

第三级:用户画像知识库(对应 Persona + 简化 Graph)
跨会话的稳定用户特征存储 + 实体关系表,结合动态路由检索。创新点:自适应检索路由策略与多层记忆融合机制

💡 论文贡献描述建议:提出了一种面向个人知识助手的三级自适应记忆架构,通过实体感知的动态路由机制解决了传统 RAG 系统在长期对话场景下的指代失效和记忆碎片化问题,在 [你的数据集] 上相比基线方法提升 XX%。

七、工程实现参考

下面是一个简化版的 AdaMem 核心流程伪代码,帮助理解工程实现思路:

Python

# AdaMem 简化实现框架
class AdaMemSystem:
    def __init__(self):
        self.working_mem  = WorkingMemory(window=20)   # 近N轮三元组
        self.episodic_mem = EpisodicMemory()             # 话题聚合摘要
        self.persona_mem  = PersonaMemory()              # 用户画像
        self.graph_mem    = GraphMemory()               # 关系图谱

    def write(self, message: str, user_id: str):
        # Memory Agent: 解析 + 写入
        triples = self.extract_triples(message)
        self.working_mem.add(triples, user_id)

        if self.working_mem.should_consolidate():
            episodes = self.consolidate_to_episodic()
            self.persona_mem.refresh(episodes)
            self.graph_mem.sync(episodes)

    def retrieve(self, query: str, user_id: str) -> list:
        # Research Agent: 解析指代 → 路由 → 检索 → 融合
        target = self.resolve_target(query, user_id)   # 代词解析
        route  = self.plan_route(query, target)         # 动态路由
        
        evidence = []
        if 'working'  in route:
            evidence += self.working_mem.search(query, target)
        if 'episodic' in route:
            evidence += self.episodic_mem.search(query, target)
        if 'persona'  in route:
            evidence += self.persona_mem.get(target)
        if 'graph'    in route:
            evidence += self.graph_mem.expand(target, hops=2)
        
        return self.fuse_evidence(evidence)

    def answer(self, query: str, user_id: str) -> str:
        # Working Agent: 生成 + 必要时反思补充检索
        evidence = self.retrieve(query, user_id)
        response = self.generate(query, evidence)
        if self.needs_more_evidence(response):
            evidence += self.retrieve(query + " more details", user_id)
            response  = self.generate(query, evidence)
        return response

八、局限性与未来方向

论文也诚实地指出了 AdaMem 的失败案例:

  • 远距离跨会话推理:当关键信息埋藏在很久之前的对话、且与当前问题语义差异大时,Graph Memory 也无法覆盖。
  • 写入延迟:Consolidation 操作需要调用 LLM,在高频写入场景下存在性能瓶颈。
  • 多用户隔离:当前实现假设单用户场景,多用户共享对话(如群组)的记忆归因还未解决。

未来方向:强化学习驱动的记忆写入策略(决定"什么值得记")、端到端的记忆-生成联合优化、以及更轻量的 Graph 构建算法。

📌 总结与资源

  • AdaMem = 四层记忆(Working / Episodic / Persona / Graph)+ Target Resolution + 动态路由 + 三路 Multi-Agent
  • 核心创新:实体感知 + 按需路由,而非一刀切的向量检索
  • 毕设借鉴:简化为三级,保留"实体追踪 + 层次压缩 + 自适应路由"三个创新点足够支撑一篇论文
  • 论文地址:arxiv.org/abs/2603.16496(代码将在录用后开源)

参考文献:Shannan Yan, Jingchen Ni, Leqi Zheng et al. "AdaMem: Adaptive User-Centric Memory for Long-Horizon Dialogue Agents." arXiv:2603.16496, 2026.
相关工作:AMA (arXiv:2601.20352) | Mem0 | MemoryBank | A-MEM
本文仅用于学术交流,如有侵权请联系删除。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐