In Prospect and Retrospect: Reflective Memory Management for Long-term Personalized Dialogue Agents
论文阅读:面向长期个性化对话智能体的反思式记忆管理 RMM
论文标题:In Prospect and Retrospect: Reflective Memory Management for Long-term Personalized Dialogue Agents
作者:Zhen Tan, Jun Yan, I-Hung Hsu, Rujun Han, Zifeng Wang, Long T. Le, Yiwen Song, Yanfei Chen, Hamid Palangi, George Lee, Anand Iyer, Tianlong Chen, Huan Liu, Chen-Yu Lee, Tomas Pfister
发表位置:ACL 2025 Long Papers,Proceedings of the 63rd Annual Meeting of the Association for Computational Linguistics, Volume 1
页码:8416–8439
DOI:10.18653/v1/2025.acl-long.413
原文链接:https://aclanthology.org/2025.acl-long.413/
PDF:https://aclanthology.org/2025.acl-long.413.pdf
主题:长期个性化对话、外部记忆、检索增强生成、记忆管理、在线强化学习
核心问题:长期个性化对话智能体如何在多轮、多会话交互中更好地组织历史记忆,并根据当前问题检索真正有用的用户历史信息?
1. 论文要解决什么问题?
大语言模型在开放域对话中已经表现出较强能力,但它们本身通常是“无状态”的:一次调用结束后,模型不会天然保留用户过去说过什么、偏好是什么、之前发生过什么。对于需要长期个性化的场景,例如客服、虚拟助手、教育平台或健康咨询,这会带来明显限制。
论文用一个医疗对话例子说明这个问题:用户今天说“我现在头疼,烧退了”,如果系统记得用户昨天说过“持续咳嗽和发烧”,以及一周前说过“对青霉素过敏”,就能给出更连续、更个性化的回答。这里真正需要的不是把所有历史都塞进上下文,而是能够在当前问题出现时,从过去大量交互中找到相关历史。

现有外部记忆机制已经尝试让 LLM 保存和检索长期历史,但论文指出它们主要有两个问题:
-
记忆粒度固定
很多系统按照 turn、session 或固定时间间隔切分历史。问题在于,对话的语义主题不一定正好落在这些边界上。一个主题可能横跨多个 turn,也可能一个 session 中包含多个主题。固定粒度容易造成记忆碎片化或表示不完整。 -
检索器固定
很多系统使用预训练检索器或固定规则来找历史记忆,但不同用户、不同领域、不同问题对“相关记忆”的要求并不一样。固定检索器难以适应这些变化。若要重新训练个性化检索器,又需要昂贵的标注数据。
针对这两个问题,论文提出 Reflective Memory Management(RMM)。它的核心思想是把“反思”分成两个方向:
- Prospective Reflection(前瞻式反思):面向未来检索,主动把历史会话整理成更适合检索的主题化记忆。
- Retrospective Reflection(回顾式反思):面向过去检索结果,根据 LLM 生成回答时实际引用了哪些记忆,在线调整检索排序策略。
这两个机制分别对应“怎么存”和“怎么取”:前者优化记忆组织,后者优化记忆检索。
2. 相关工作背景
论文将相关工作主要放在两个方向下讨论。
2.1 长期对话中的 LLM
长期对话要求模型在多个会话之间维持上下文、人物设定和事实一致性。已有方法大致可以分成两类:
| 方向 | 代表思路 | 局限 |
|---|---|---|
| 改模型结构 | 改进注意力机制、KV cache、位置编码等 | 通常需要访问模型内部,对闭源 API 模型不现实 |
| 摘要或检索式方法 | 将长上下文压缩为事件、主题或记忆,再用于生成 | 记忆粒度和检索方式容易固定化 |
RMM 属于第二类,也就是外部记忆和检索式方法。但它特别关注两个细节:
一是历史内容应该按照语义主题组织,而不只是按照 turn 或 session;二是检索策略应该能在对话过程中根据反馈动态调整。
2.2 基于记忆的个性化对话智能体
已有个性化对话系统包括 MemoryBank、LD-Agent、Theanine 等。它们通常会保存用户画像、历史摘要、对话片段或时间线信息,用于后续对话。但论文认为,这些方法往往仍然依赖固定粒度和固定检索策略。
例如:
| 方法 | 记忆/检索特点 | 论文指出的对比点 |
|---|---|---|
| MemoryBank | 使用受遗忘曲线启发的记忆更新机制,检索时考虑近因等因素 | 检索策略偏启发式 |
| LD-Agent | 使用长短期记忆库,并通过关键词等策略调节检索 | 仍依赖固定结构和检索方式 |
| Theanine | 使用时间线增强检索,并引入额外 LLM 做 refine | 仍未重点解决粒度和在线适应问题 |
| RMM | 主题化记忆组织 + 基于引用信号的在线重排 | 同时处理“存储粒度”和“检索自适应” |
3. 问题定义
论文考虑的是一个多会话个性化对话场景。
一个用户会和智能体进行多个 session。每个 session 由若干 turn 组成,每个 turn 包含用户问题和智能体回答。智能体拥有一个外部记忆库,用来保存过去会话中的信息。当前会话生成回答时,模型既可以使用当前 session 的上下文,也可以从外部记忆库中检索相关历史。
任务目标是:在当前用户问题出现时,生成既符合当前上下文、又能利用历史个性化信息的回答。
论文强调,这里有两个关键挑战:
- 存储侧挑战:系统需要主动识别每个 session 中哪些信息未来可能有用,并以合适形式保存。
- 检索侧挑战:系统需要准确找回相关历史信息,因为无关历史会干扰 LLM,降低回答质量。
也就是说,长期记忆不是“存得越多越好”,也不是“上下文越长越好”。真正重要的是:存储时能形成有意义的记忆单元,检索时能把有用的记忆排到前面。
4. RMM 框架总览
RMM 的整体流程可以概括为:
- 当前用户提出 query。
- 检索器从记忆库中取出 Top-K 条候选记忆。
- 轻量级 reranker 对候选记忆重新排序,选出 Top-M 条。
- LLM 使用当前 query、当前 session 上下文和 Top-M 记忆生成回答。
- LLM 同时给出引用信号,表示哪些记忆在回答中被使用。
- 系统把这些引用信号转化为奖励,用强化学习更新 reranker。
- 当前 session 结束后,系统用 LLM 提取本次会话中的主题化记忆,并更新记忆库。
论文中的 Algorithm 1 展示了这个流程。RMM 包含四个主要组件:
| 组件 | 作用 |
|---|---|
| Memory Bank | 存储历史对话记忆,每条记忆由 topic summary 和 raw dialogue 组成 |
| Retriever | 根据当前 query 从记忆库中取出 Top-K 候选 |
| Reranker | 对候选记忆重新排序,选出更相关的 Top-M |
| LLM | 生成回答,同时提供引用信号,用于更新 reranker |
这里的一个关键设计是:RMM 没有直接微调整个检索器,而是在检索器后面加入一个轻量级 reranker。这样可以保留通用检索器的能力,同时用在线反馈逐步适应具体对话场景。
5. Prospective Reflection:面向未来检索的主题化记忆组织
Prospective Reflection 解决的是“怎么存”的问题。
传统记忆管理常用固定边界:一个 turn 一条记忆,或者一个 session 一条记忆。但对话中的语义主题并不一定和这些边界一致。例如,一个用户可能在一个 session 中同时谈到运动、饮食、旅行计划;也可能一个关于健康状况的主题横跨多个 session。固定边界会导致相关信息被拆散,或者无关信息被塞在一起。
RMM 因此使用 topic-based memory organization。论文中“topic”指一个语义连贯的讨论单元,它可以跨越一个或多个 turn。每个 topic 关联到相应的原始对话片段。

Prospective Reflection 在每个 session 结束时执行,包含两个步骤。
5.1 Memory Extraction:从会话中抽取主题化记忆
系统用 LLM 从完整 session 中抽取若干条记忆。每条记忆通常包含:
- topic summary:对该主题的简短摘要;
- raw dialogue:与该主题对应的原始对话片段或 turn 引用。
例如,一个 session 中可能被抽取出:
| 主题摘要 | 对应内容 |
|---|---|
| 用户喜欢跑步 | 对话中关于跑步习惯的片段 |
| 用户对鸡蛋过敏 | 对话中提到过敏信息的片段 |
| 用户正在考虑购买跑步机 | 对话中讨论家庭健身设备的片段 |
这种方式的优势是:记忆不再严格绑定 turn 或 session,而是绑定语义主题。
5.2 Memory Update:将新记忆并入记忆库
对于每条新抽取的主题记忆,系统先从已有记忆库中检索 Top-K 条语义相似记忆,然后由 LLM 判断这条新记忆应该如何处理:
| 操作 | 条件 | 结果 |
|---|---|---|
| Add | 新记忆和已有记忆没有明显相关性 | 直接加入记忆库 |
| Merge | 新记忆和已有记忆讨论同一主题,或更新了旧信息 | 合并为一条更新后的记忆 |
例如,如果旧记忆是“用户喜欢 hiking”,新记忆是“用户喜欢 running”,系统可以将它们合并成“用户喜欢 hiking and running”。如果新记忆是“用户对鸡蛋过敏”,而记忆库中没有相关信息,则直接新增。
通过这个机制,记忆库逐步形成围绕主题组织的长期用户知识,而不是简单堆积历史片段。
6. Retrospective Reflection:基于 LLM 归因信号的检索优化
Retrospective Reflection 解决的是“怎么取”的问题。
即使记忆库组织得更好,检索器仍可能取回一些语义相近但实际无用的内容。论文没有选择直接微调检索器,而是在检索器后面加一个轻量级 reranker。检索器先召回 Top-K,reranker 再选出 Top-M 条真正给 LLM 使用。

6.1 Reranker 设计
设当前 query 的 embedding 为 q,第 i 条候选记忆的 embedding 为 m_i。reranker 首先通过带残差连接的线性层调整 query 和 memory 表示:
q' = q + W_q q
m'_i = m_i + W_m m_i
然后计算相关性分数:
s_i = q'^T m'_i
为了让排序过程可以用于强化学习更新,论文使用 Gumbel trick 对离散记忆选择进行随机采样。每条记忆的分数加入 Gumbel noise:
s~_i = s_i + g_i
g_i = -log(-log(u_i)), u_i ~ Uniform(0, 1)
随后用 softmax 得到采样概率。温度参数 τ 控制随机性:较低的 τ 更接近确定性选择,较高的 τ 鼓励探索。
6.2 用 LLM 引用作为奖励信号
个性化检索很难获得大量人工标注。RMM 的做法是让 LLM 在生成回答时同时给出 citation,也就是标注回答中使用了哪些检索到的记忆。
论文将 citation 转化为二值奖励:
| 情况 | 奖励 |
|---|---|
| 记忆被最终回答引用 | +1,Useful |
| 记忆没有被最终回答引用 | -1,Not Useful |
这个设计的含义是:如果某条记忆真的被 LLM 用来生成回答,那么它就应当在未来类似 query 中被排得更靠前;如果某条记忆虽然被召回但没有用上,则 reranker 应降低它在类似情境下的优先级。
6.3 用 REINFORCE 更新 reranker
论文使用 REINFORCE 算法更新 reranker。更新公式为:
Δφ = η · (R - b) · ∇_φ log P(M_M | q, M_K; φ)
其中:
| 符号 | 含义 |
|---|---|
φ |
reranker 参数 |
R |
citation 得到的奖励,取 +1 或 -1 |
b |
baseline 超参数 |
η |
学习率 |
M_K |
retriever 召回的 Top-K 记忆 |
M_M |
reranker 选出的 Top-M 记忆 |
这个过程使系统能够在没有人工标注的情况下,根据 LLM 自身的“使用痕迹”在线调整记忆排序。
7. 实验设置
论文在两个公开长期个性化对话数据集上实验:
| 数据集 | 任务关注点 | 指标 |
|---|---|---|
| MSC | 生成回答是否接近人工 ground truth | METEOR、BERTScore |
| LongMemEval | 是否能检索相关历史,并正确回答问题 | Recall@K、Accuracy |
生成器主要使用 Gemini-1.5-Flash,并在后续分析中比较 Gemini-1.5-Pro。检索器包括:
| 检索器 | 说明 |
|---|---|
| Contriever | 基于对比学习的 dense retriever |
| Stella | 基于语言模型的大规模 embedding retriever |
| GTE | 面向 instruction-following query 的 retriever |
默认设置中,Contriever 作为默认检索器。没有 reranker 时 Top-K 为 5;有 reranker 时默认 Top-K 为 20,Top-M 为 5。
比较方法包括:
| 方法 | 说明 |
|---|---|
| No History | 不使用历史会话 |
| Long Context | 尽量把历史放入上下文窗口,旧内容被截断 |
| RAG | 检索相关 turn 或 session 后拼接给 LLM |
| MemoryBank | 使用特定记忆更新与检索机制 |
| LD-Agent | 使用长短期记忆和关键词等检索调节策略 |
| RMM | 本文方法 |
| RAG Oracle | 在 LongMemEval 上使用人工标注的 oracle retrieval |
8. 主要实验结果
论文的主结果如下。
| Method | Retriever | MSC METEOR ↑ | MSC BERT ↑ | LongMemEval Recall@5 ↑ | LongMemEval Acc. ↑ |
|---|---|---|---|---|---|
| No History | - | 5.2 | 10.6 | - | 0.0 |
| Long Context | - | 14.8 | 31.9 | - | 57.4 |
| RAG | Contriever | 24.8 | 50.8 | 54.3 | 58.8 |
| RAG | Stella | 26.2 | 51.6 | 59.2 | 61.4 |
| RAG | GTE | 27.5 | 52.1 | 62.4 | 63.6 |
| MemoryBank | Specific | 20.1 | 40.3 | 58.6 | 59.6 |
| LD-Agent | Specific | 25.4 | 51.5 | 56.8 | 59.2 |
| RMM | Contriever | 30.8 | 55.4 | 60.4 | 61.2 |
| RMM | Stella | 31.9 | 56.3 | 65.9 | 64.8 |
| RMM | GTE | 33.4 | 57.1 | 69.8 | 70.4 |
| RAG Oracle | Oracle | - | - | 100.0 | 90.2 |
从结果看,论文得到几个结论。
8.1 历史信息很重要
No History 在 MSC 上 METEOR 只有 5.2,在 LongMemEval 上 Accuracy 为 0.0。这说明长期个性化任务确实依赖历史上下文。
8.2 长上下文不等于有效记忆
Long Context 比 No History 好,但表现仍有限。论文认为,长上下文方法会受到上下文窗口和噪声历史的影响。把大量历史直接塞进去,并不能保证模型找到真正相关的信息。
8.3 RAG 强于直接长上下文,但依赖检索器
RAG 通过只引入相关历史,普遍强于 Long Context。不同检索器下结果也有差异,例如 GTE 版本 RAG 在 LongMemEval 上 Recall@5 达到 62.4,Accuracy 达到 63.6,优于 Contriever 和 Stella 版本。这说明检索器质量对长期记忆系统很关键。
8.4 RMM 在多个指标上最好
RMM 在三种检索器下都优于对应 RAG。使用 GTE 时,RMM 在 MSC 上达到 33.4 METEOR、57.1 BERTScore,在 LongMemEval 上达到 69.8 Recall@5、70.4 Accuracy,是主表中非 oracle 设置下最好的结果。
论文还指出,在 MSC 中,记忆机制改善了 86% 的回答;在 LongMemEval 中,由于问题本身刻意测试历史召回,记忆对回答质量的改善覆盖 100% 的样例。
9. 消融实验
论文进一步分析 RMM 中各组件的贡献。消融实验使用 Contriever 和 Gemini-1.5-Flash。
| Variant | MSC METEOR | MSC BERT | LongMemEval Recall@5 | LongMemEval Acc. |
|---|---|---|---|---|
| RAG | 24.8 | 50.8 | 54.3 | 58.8 |
| + PR | 28.6 | 53.3 | 57.4 | 59.6 |
| + RR (W/O reranker) | 20.3 | 31.8 | 34.2 | 31.0 |
| + RR | 27.5 | 52.2 | 58.8 | 60.2 |
| RMM | 30.8 | 55.4 | 60.4 | 61.2 |
这里的 PR 指 Prospective Reflection,RR 指 Retrospective Reflection。
论文的分析包括:
-
加入 PR 后性能提升
主题化记忆组织能够减少冗余,提高检索相关性。 -
没有 reranker 时直接用 RR 效果很差
+ RR (W/O reranker)结果明显下降。论文解释说,直接用 RL 奖励更新检索器需要大量训练数据,否则可能造成灾难性遗忘等问题。 -
RR 与 reranker 结合后有效
加入 reranker 后,RR 可以更好地调整检索排序,而不是破坏底层 retriever。 -
完整 RMM 最好
PR、RR 和 reranker 同时使用时,MSC METEOR 达到 30.8,LongMemEval Recall@5 达到 60.4,是消融表中最好的结果。
10. Citation Scores 的有效性验证
RMM 把 LLM 生成回答时的 citation 用作奖励信号。为了验证这种信号是否可靠,论文在 LongMemEval 上用 Gemini-1.5-Pro 作为 judge,判断被引用记忆是否确实有用。
| Metric | Precision | Recall | F1 |
|---|---|---|---|
| Useful memory | 89.4 | 91.1 | 90.2 |
| Not useful memory | 87.2 | 84.6 | 85.9 |
| Overall | 87.6 | 85.8 | 86.7 |
结果显示,citation-based scoring 在识别有用记忆方面具有较高 precision、recall 和 F1。论文据此支持使用 LLM citation 作为在线奖励信号。
11. 不同 LLM 的影响
论文比较了 Gemini-1.5-Flash 和 Gemini-1.5-Pro 在 Long Context 与 RMM 设置下的表现。
| Method | LLM | MSC METEOR | MSC BERT | LongMemEval Acc. |
|---|---|---|---|---|
| Long Context | Gemini-1.5-Flash | 14.8 | 31.9 | 57.4 |
| Long Context | Gemini-1.5-Pro | 17.4 | 36.1 | 56.6 |
| RMM | Gemini-1.5-Flash | 30.8 | 55.4 | 61.2 |
| RMM | Gemini-1.5-Pro | 24.6 | 50.6 | 58.6 |
在 Long Context 下,Gemini-1.5-Pro 在 MSC 上略好于 Flash;但在 RMM 下,Gemini-1.5-Flash 反而优于 Pro。论文给出的解释是,较强模型可能更倾向于在涉及个人信息时拒答或保守回答,这可能与更强的对齐和隐私保护有关。
12. 记忆粒度分析
论文专门比较了不同检索粒度的效果,包括:
| 粒度 | 含义 |
|---|---|
| turn | 按单轮对话检索 |
| session | 按完整会话检索 |
| mix | 从 turn 和 session 混合池中检索 |
| PR | 使用 Prospective Reflection 形成的主题化粒度 |
| best | oracle 设置,为每个样例选择 turn 或 session 中更好的粒度 |

论文结果显示,session 粒度通常比 turn 粒度好,因为 session 包含更丰富上下文;但混合 turn 和 session 反而可能因为搜索空间更大、噪声更多而表现较差。PR 得到的主题化粒度能够接近 best oracle granularity,说明动态主题化组织比固定粒度更适合长期记忆检索。
13. 离线监督训练与 Top-K/Top-M 分析
论文还分析了两个扩展问题。
13.1 有少量标注数据时,离线预训练是否有帮助?
在 LongMemEval 上,论文随机选取 100 个样本作为测试集,其余作为训练和验证集,对 GTE retriever 做监督式对比学习预训练。结果显示,离线预训练可以在多个粒度设置下提高 Recall 和 Accuracy,为后续在线 RL 微调提供更好的初始检索能力。

13.2 增大 Top-K 和 Top-M 是否有帮助?
论文比较了 Top-K=20、Top-M=5 与 Top-K=50、Top-M=10 的结果。
| Retriever | Recall@5 | Acc. | Recall@10 | Acc. |
|---|---|---|---|---|
| Contriever | 60.4 | 61.2 | 67.2 | 66.8 |
| Stella | 65.9 | 64.8 | 70.6 | 71.0 |
| GTE | 69.8 | 70.4 | 74.4 | 73.8 |
结果显示,检索和重排更多候选记忆可以进一步提升 LongMemEval 上的检索和问答表现。
14. MSC 的 LLM-as-a-Judge 结果与人工评估
除了 METEOR 和 BERTScore,论文还在 MSC 上加入了 LLM-as-a-judge 评估,使用 Gemini-1.5-Pro 判断生成回答是否匹配 ground truth。
| Method | LLM | METEOR | BERT | LLM-as-a-Judge Yes% |
|---|---|---|---|---|
| Long Context | Gemini-1.5-Flash | 14.8 | 31.9 | 25.4 |
| Long Context | Gemini-1.5-Pro | 17.4 | 36.1 | 22.8 |
| RMM | Gemini-1.5-Flash | 30.8 | 55.4 | 69.7 |
| RMM | Gemini-1.5-Pro | 24.6 | 50.6 | 65.4 |
这个结果同样显示 RMM 优于 Long Context。
论文还对 100 个随机 MSC 样本进行了人工评估,并报告 Cohen’s Kappa:
| Pair | Cohen’s Kappa | Interpretation |
|---|---|---|
| Human A vs. Human B | 0.82 | Substantial agreement |
| LLM vs. Human A | 0.71 | Substantial agreement |
| LLM vs. Human B | 0.69 | Substantial agreement |
这部分用于说明 LLM judge 与人工判断之间具有较高一致性。
15. 案例分析
论文附录中给出了一些案例,用来说明 RMM 如何利用长期记忆。
一个案例是用户在不同 session 中关于跑步机和健身房的决策发生变化。早期会话中,用户考虑购买跑步机;后续会话中,用户又认为使用健身房跑步机已经足够。没有记忆管理时,模型可能仍基于旧状态回答,假设用户还在犹豫是否购买跑步机。RMM 则能够根据更新后的历史记忆生成更符合当前状态的回答。
另一个案例是 LongMemEval 中的事件时间顺序问题。用户曾提到参加过 Effective Time Management workshop,也提到两个月前参加过 Data Analysis using Python webinar。问题是“哪个事件先发生?”正确回答需要把“two months ago”与对应事件关联起来。RMM 能够找回相关时间信息并回答 Python webinar 先发生,而 Long Context 方法则给出了不确定回答。
这些案例对应论文主线:长期个性化对话不仅要记住事实,还要能处理事实更新、事件顺序和上下文依赖。
16. 局限性与未来工作
论文在 Limitations 中指出 RMM 仍有几个限制。
| 限制 | 说明 |
|---|---|
| 强化学习 reranking 有计算开销 | 对大规模数据或实时应用可能较昂贵 |
| 当前主要处理文本数据 | 对包含图像、音频、视频的多模态对话支持不足 |
| 记忆更新机制仍需优化 | 长期用户交互不断变化时,需要更高效地维护记忆 |
对应的未来方向包括:
- 探索更高效的强化学习方法和轻量级 memory reranking 策略;
- 将 RMM 扩展到多模态对话系统;
- 研究隐私保护技术,使系统更安全地部署到真实个性化对话场景。
论文的 Ethical Statement 还强调,长期个性化对话系统会处理历史会话,其中可能包含敏感或隐私信息。因此部署时应考虑加密、差分隐私、联邦学习、透明的数据使用政策、用户同意机制,以及减少检索和生成中的偏见。
17. 总结
这篇论文提出的 RMM 可以看作一个围绕长期记忆的双向反思框架:
| 反思方向 | 解决问题 | 方法 |
|---|---|---|
| Prospective Reflection | 未来怎么更好检索 | 将 session 结束后的历史整理成主题化记忆,并进行 add 或 merge |
| Retrospective Reflection | 过去检索得好不好 | 根据 LLM 回答中的 citation 信号,用 RL 更新 reranker |
它针对长期个性化对话中的两个核心痛点:固定记忆粒度和固定检索机制。实验表明,在 MSC 和 LongMemEval 两个数据集上,RMM 在生成质量、检索召回和问答准确率上均优于 Long Context、RAG、MemoryBank、LD-Agent 等基线。
论文的主要启示是:长期记忆系统的关键不只是扩大上下文窗口,也不是简单保存所有历史,而是要让记忆以更符合语义主题的方式被组织,并让检索过程能够根据生成阶段的实际使用情况持续调整。RMM 正是在“存储组织”和“检索优化”两个层面同时做了设计,因此能在长期个性化对话任务中取得更好的效果。
参考
- Tan, Zhen, et al. 2025. In Prospect and Retrospect: Reflective Memory Management for Long-term Personalized Dialogue Agents. In Proceedings of the 63rd Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), pages 8416–8439.
- ACL Anthology: https://aclanthology.org/2025.acl-long.413/
- PDF: https://aclanthology.org/2025.acl-long.413.pdf

浙公网安备 33010602011771号