On Memory Construction and Retrieval for Personalized Conversational Agents

论文阅读:SECOM:面向个性化对话智能体的记忆构建与检索

论文标题:On Memory Construction and Retrieval for Personalized Conversational Agents
作者:Zhuoshi Pan, Qianhui Wu, Huiqiang Jiang, Xufang Luo, Hao Cheng, Dongsheng Li, Yuqing Yang, Chin-Yew Lin, H. Vicky Zhao, Lili Qiu, Jianfeng Gao
发表位置:ICLR 2025 conference paper;arXiv preprint
arXiv 编号:2502.05589
原文链接:https://arxiv.org/abs/2502.05589
主题:长期对话记忆、RAG、个性化对话智能体、对话分段、记忆压缩去噪
核心问题:在长期开放域对话中,如何把历史对话构造成更适合检索和生成的记忆单元,从而让智能体在后续对话中更准确地利用过去信息?


1. 背景:长期对话为什么需要更好的“记忆单元”?

随着大语言模型被用于开放域对话智能体,用户和智能体之间的交互不再只是短轮次、单任务的对话。一个用户可能在多个会话中反复与智能体交流,主题也会不断切换。为了生成连贯、个性化的回答,系统需要记住过去发生的事件、用户偏好以及历史上下文。

已有方法大致有两类:

  1. 直接保留历史上下文:把所有历史对话或历史摘要拼接进当前上下文。
  2. 检索增强生成(RAG)式记忆:先从历史对话中构建 memory bank,再根据当前请求检索相关记忆,最后把检索结果作为上下文输入给生成模型。

问题在于,历史对话很长且包含大量与当前问题无关的内容。直接拼接容易引入噪声,也会占用大量上下文窗口;而检索式方法的效果又高度依赖“记忆单元”如何切分。

论文关注的核心问题正是:长期对话历史应该以什么粒度构造成记忆单元?

常见粒度包括:

记忆粒度 做法 主要问题
Turn-level 每一轮用户-助手交互作为一个记忆单元 粒度太细,相关信息可能分散在多个 turn 中,检索结果容易碎片化
Session-level 每个完整会话作为一个记忆单元 粒度太粗,一个 session 可能包含多个主题,容易带入无关信息
Summary-based 把历史对话压缩成摘要后检索 摘要过程可能丢失回答当前问题所需的细节
Segment-level 按主题连贯性把会话切成若干片段 目标是在完整性与相关性之间取得平衡

论文提出,长期对话天然由一段段主题连贯的 discourse units 组成。因此,比起直接按 turn 或 session 切分,更合理的方式是按照主题边界把会话切成 segment,再以 segment 为单位构建记忆库。

image


2. 论文的两个观察

论文在提出方法前,先总结了两个关键观察。

2.1 记忆粒度会显著影响检索和回答质量

如果每个 memory unit 太短,例如按单轮对话切分,那么当前问题所需的信息可能分散在多个 turn 中。某些关键 turn 本身可能并不显式包含当前查询中的关键词,于是检索器可能漏掉它们。

如果每个 memory unit 太长,例如按整个 session 切分,那么一个 memory unit 中会混入多个主题。检索器可能把这个 session 判定为相关,但真正输入给生成模型时,里面的大量无关内容会干扰模型理解。

摘要方法看似能压缩信息,但论文指出,摘要会把细节删掉。当当前请求需要某些细节时,只依赖摘要可能不足以回答问题。

因此,论文认为更合适的记忆单元应该满足两个条件:

  1. 足够完整:能保留一个主题下的连续信息流。
  2. 足够聚焦:尽量不把其他主题的内容混进来。

segment-level memory 正是为了满足这两个条件。

2.2 Prompt compression 可以作为检索前的去噪机制

第二个观察是:自然语言中存在冗余信息,而这些冗余可能成为检索系统的噪声。

论文使用 LLMLingua-2 对 memory unit 进行压缩,并把这种压缩视为一种 denoising 操作。压缩后的 memory unit 保留更关键的信息,减少冗余表达,从而帮助检索器更准确地区分相关片段与无关片段。

image


3. SECOM 方法概述

论文提出的方法名为 SECOM,来自两个核心设计:

  • SEgmentation:把长期对话切分成主题连贯的 segment;
  • COMpression:在检索前对记忆单元做压缩去噪。

整体流程可以概括为三步:

  1. Memory construction:从历史对话中构建 memory bank。
  2. Memory retrieval:根据当前用户请求,从 memory bank 中检索相关 memory units。
  3. Response generation:把检索到的 memory units 按时间顺序拼接为上下文,输入生成模型得到回答。

与 turn-level 或 session-level 方法不同,SECOM 的 memory unit 是一个主题连贯的 segment。与 summary-based 方法不同,SECOM 不把 segment 先摘要成短文本,而是直接保留原始 segment,只在检索前使用压缩模型去除冗余。


4. 对话分段:从 session 到 topic segment

设历史对话由多个 session 组成,每个 session 又包含多个 user-agent interaction turns。SECOM 的目标是把每个 session 切成若干连续 segment。

一个 segment 由连续 turn 构成:

s_k = {t_p, t_{p+1}, ..., t_q}

其中 pq 分别表示该 segment 的起止 turn 索引。相邻 segment 之间不能重叠,也不能遗漏 turn。

4.1 Zero-shot segmentation

开放域对话分段很难获得大量人工标注数据,而且分段边界本身具有一定模糊性。论文因此首先使用 GPT-4 作为 zero-shot conversation segmentation model。

为了让模型更容易理解对话结构,输入会被增强为带有 turn index 和 role identifier 的格式,例如:

Turn j:
[user]: ...
[agent]: ...

模型输出的是每个 segment 的起止 exchange 编号以及 segment 长度。附录中给出了具体 prompt,要求输出 JSONL 格式,并检查是否覆盖所有 exchange、是否有重叠、计数是否准确等。

4.2 带反思的少样本分段

当存在少量带分段标注的数据时,论文进一步使用 reflection 机制优化 segmentation prompt。

具体过程是:

  1. 先用 zero-shot segmentation model 处理一批带标注数据;
  2. 根据 WindowDiff 找出错误最严重的 hard examples;
  3. 让 LLM 对照 ground-truth segmentation annotations 反思自己的错误;
  4. 更新 segmentation guidance;
  5. 多轮迭代后得到更符合人类偏好的 segmentation rubric。

论文把这个过程类比为一种 prompt-level 的优化:segmentation guidance 类似 prefix,LLM 通过反思错误来更新这个 prefix。


5. 压缩去噪:在检索前处理 memory bank

SECOM 的另一个核心设计是 compression-based memory denoising。

给定当前用户请求和 memory bank,普通检索流程会直接在原始 memory bank 中检索:

retrieved memories = Retriever(query, MemoryBank)

SECOM 则先对 memory bank 做压缩,再检索:

retrieved memories = Retriever(query, Compress(MemoryBank))

论文中使用 LLMLingua-2 作为压缩函数,并在主实验中采用 75% 的 compression rate。这里的压缩不是为了把历史对话总结成新的 memory,而是为了在检索阶段去掉冗余表达,使检索器更容易匹配关键信息。

这一点与 summary-based memory 不同:summary-based 方法会生成摘要并用摘要作为上下文,而 SECOM 的思想是保留 segment-level 的原始信息结构,同时用压缩降低检索噪声


6. 实验设置

论文主要在两个长期对话 benchmark 上评估 SECOM:

数据集 说明
LOCOMO 长期对话记忆数据集,样本平均约 300 turns、9K tokens
Long-MT-Bench+ 基于 MT-Bench+ 重构而来,用于更长程的多轮对话记忆评估

主实验使用 GPT-3.5-Turbo 作为 response generation model,同时也使用 Mistral-7B-Instruct-v0.3 做鲁棒性评估。

检索器方面,论文使用:

  • BM25;
  • MPNet(multi-qa-mpnet-base-dot-v1)+ FAISS。

评价指标包括:

指标 作用
GPT4Score 让 GPT-4-0125 对回答从 0 到 100 打分
BLEU / ROUGE / BERTScore 常规自动评价指标
Pairwise comparison 让 GPT-4 比较两个方法生成的回答
Human evaluation 从 coherence、consistency、memorability、engagingness、humanness 等维度人工评分

7. 主实验结果:SECOM 在长期对话 QA 上优于基线

论文比较了 SECOM 与多类基线:

方法类别 代表方法
无历史 Zero History
全历史 Full History
粒度型记忆 Turn-Level, Session-Level
摘要型记忆 SumMem, RecurSum, ConditionMem
其他记忆方法 MemoChat

主结果显示,SECOM 在 LOCOMO 和 Long-MT-Bench+ 上整体优于这些基线。下面摘取 Table 1 中部分关键 GPT4Score 结果:

方法 LOCOMO GPT4Score Long-MT-Bench+ GPT4Score
Zero History 24.86 49.73
Full History 54.15 63.85
Turn-Level (BM25) 65.58 82.85
Turn-Level (MPNet) 57.99 84.91
Session-Level (BM25) 63.16 81.27
Session-Level (MPNet) 51.18 73.38
MemoChat 65.10 85.14
SECOM (BM25, GPT4-Seg) 71.57 86.67
SECOM (MPNet, GPT4-Seg) 69.33 88.81
SECOM (MPNet, Mistral-7B-Seg) 66.37 86.32
SECOM (MPNet, RoBERTa-Seg) 61.84 81.52

几个现象值得注意:

第一,SECOM 在 LOCOMO 上优势尤其明显。LOCOMO 的对话更长,平均包含约 300 turns,因此更能体现 memory construction 和 retrieval 的重要性。

第二,turn-level 和 session-level 方法对检索器非常敏感。例如在 LOCOMO 上,BM25 与 MPNet 的结果差异较大。论文认为,这是因为 turn-level memory 太碎,session-level memory 又太嘈杂,它们都更依赖检索器本身的能力。

第三,即使把 segmentation model 从 GPT-4 换成 Mistral-7B,SECOM 仍然保持相对优势;使用 RoBERTa-scale segmentation model 时,性能有所下降,但仍具有竞争力。这说明方法并不完全绑定于 GPT-4。


8. 粒度消融:segment-level 为什么更合适?

论文进一步比较不同 memory granularity 在不同 context budget 下的表现。实验中,所有方法都使用 compression-based denoising,以便单独观察 memory granularity 的影响。

结果显示,segment-level memory 在不同 context budget 下都稳定优于 turn-level 和 session-level memory。

这一结果与前面的分析一致:

粒度 检索时的典型问题 对生成的影响
Turn-level 相关信息分散,关键 turn 可能被漏检 上下文不完整,回答容易缺细节
Session-level 检索单元过长,包含大量无关主题 模型被噪声干扰,回答可能偏离问题
Segment-level 以主题连贯片段为单位 在相关性与完整性之间取得平衡

image


9. 压缩去噪消融:去掉 denoise 会明显下降

Table 2 单独分析 compression-based memory denoising 的作用。实验使用 MPNet retriever,compression rate 为 75%。

方法 LOCOMO GPT4Score LOCOMO BLEU LOCOMO Rouge2 Long-MT-Bench+ GPT4Score Long-MT-Bench+ BLEU Long-MT-Bench+ Rouge2
SECOM 69.33 7.19 13.74 88.81 13.80 19.21
SECOM - Denoise 59.87 6.49 12.11 87.51 12.94 18.73

去掉 denoising 后,LOCOMO 上 GPT4Score 从 69.33 降到 59.87,下降 9.46 分。论文据此认为,压缩去噪并不是附加的小技巧,而是 SECOM 中提升检索系统质量的重要组成部分。


10. 换用 Mistral-7B 作为生成模型

为了验证方法是否只适用于 GPT-3.5-Turbo,论文还使用 Mistral-7B-Instruct-v0.3 作为 response generator,在 Long-MT-Bench+ 上进行实验。

结果显示,SECOM 仍然优于 turn-level、session-level 和 full-history 方法:

检索器 方法 GPT4Score BLEU Rouge2 # Tokens
BM25 Full History 78.73 10.25 14.32 19,287
BM25 Turn-Level 83.14 13.60 19.11 1,047
BM25 Session-Level 81.03 12.49 17.11 4,118
BM25 SECOM 89.43 15.06 21.35 906
MPNet Turn-Level 85.61 12.78 19.61 909
MPNet Session-Level 75.29 9.14 13.91 3,680
MPNet SECOM 90.58 15.80 21.49 820

论文特别指出,Mistral-7B 具有 32K context window,可以容纳完整历史对话,但 Full History 仍然不如 SECOM。这说明问题不只是上下文窗口够不够长,而是输入给模型的上下文是否相关、完整且少噪声


11. 分段模型评估

除了端到端 QA,论文还单独评估了 conversation segmentation model。

使用的数据集包括:

  • DialSeg711;
  • TIAGE;
  • SuperDialSeg。

评价指标包括 F1、Pk、WindowDiff 和综合 Score。结果表明,在 zero-shot 设置下,论文的方法在三个数据集上都优于无监督基线;在 transfer learning 设置下,即使只用 100 个 hard examples 通过 LLM reflection 学习 segmentation rubric,也能泛化到目标数据集,并超过使用完整源训练集训练的一些基线。

部分结果如下:

设置 方法 DialSeg711 Score SuperDialSeg Score TIAGE Score
Unsupervised CSM 0.660 0.458 0.509
Unsupervised Ours (zero-shot) 0.895 0.738 0.607
Transfer from TIAGE RoBERTa 0.723 0.420 0.648
Transfer from TIAGE Ours (w/ reflection) 0.934 0.748 0.642
Transfer from SuperDialSeg RoBERTa 0.702 0.798 0.482
Transfer from SuperDialSeg Ours (w/ reflection) 0.936 0.758 0.651

这部分实验支撑了 SECOM 的一个基础假设:使用 LLM 对长期对话进行主题分段是可行的,并且通过少量标注数据和 reflection 可以进一步提高分段质量。


12. 相关工作中的定位

论文把相关工作分为三类。

第一类是对话记忆管理。这类方法通常从历史对话中提取用户画像、过去事件或摘要,用来增强后续回答。代表方向包括 MemoryBank、COMEDY、RecurSum、ConditionMem、MemoChat 等。

第二类是RAG 系统中的 chunking granularity。在文档 RAG 中,如何切 chunk 已经被广泛讨论;但论文指出,已有工作主要关注文档切分,而较少关注长期对话中的 conversation chunking。对话具有自然的 turn/session 结构,但直接依赖这些结构不一定适合检索。

第三类是RAG 系统中的去噪。已有研究注意到冗余和噪声会影响检索,但一些方法依赖高质量标注数据或需要 fine-tune retriever。SECOM 使用 prompt compression 作为 plug-and-play 的 memory denoising 方式,不需要调整底层检索器。


13. 论文结论

论文系统分析了长期对话智能体中 memory construction 和 retrieval 的问题,核心结论包括:

  1. 记忆粒度很重要:turn-level、session-level 和 summary-based memory 都有各自局限。
  2. segment-level memory 更适合长期对话:它能在信息完整性和相关性之间取得更好的平衡。
  3. prompt compression 可以作为检索前去噪机制:通过去除冗余表达,提高检索器对相关 memory unit 的识别能力。
  4. SECOM 在长期对话 benchmark 上优于多类基线:尤其是在 LOCOMO 这类长对话场景中优势明显。
  5. 更长上下文窗口并不能完全替代记忆构建与检索:即使模型能容纳完整历史,直接输入 full history 仍可能受到无关信息干扰。

整体来看,SECOM 的重点不在于让模型“记住更多”,而在于让系统以更合适的结构保存和检索过去信息:先把长期对话切成主题连贯的 segment,再通过压缩去噪让检索器更容易找到真正相关的内容。


参考

  • Zhuoshi Pan et al. On Memory Construction and Retrieval for Personalized Conversational Agents. ICLR 2025 conference paper / arXiv:2502.05589.
posted @ 2026-06-08 11:01  YourF4u1t  阅读(43)  评论(0)    收藏  举报