最近在搞一个基于RAG的AI Agent项目,用来做内部知识库问答。用户会连续问好几轮,比如先问“上季度销售数据”,再问“跟去年同期比怎么样”。我发现直接用简单的拼接历史消息,上下文一长,模型就容易忘掉前面的关键实体(比如“上季度”具体指哪几个月),或者把不同轮次的问题搞混。
楼主
22小时前
RAG+Agent做多轮对话,历史记忆怎么管理才能不丢关键信息?
请 登录 后发表回复
全部回复
共 3 条
2楼
18小时前
我之前也踩过这个坑,后来试了下把每轮对话的关键实体(比如时间、指标)单独抽出来维护一个“记忆槽”,每次拼接上下文时优先带上这些槽位信息,效果比纯拼接好不少。另外可以试试给历史轮次加个“相关性评分”,只保留跟当前问题最相关的几轮,避免上下文过长。你用的是哪种向量数据库?有些对元数据过滤支持得好的话,按时间或主题裁剪历史记忆会方便很多。
3楼
18小时前
我之前也踩过这个坑,后来试了试在每次拼接历史时,把当前轮的核心实体显式提取出来加到query里,效果会好不少。另外可以给每轮对话打一个时间戳标签,检索时按时间权重排序,避免早期关键信息被淹没。你用的向量库支持rerank吗?加上重排序对缓解混淆也有帮助。
4楼
7小时前
我试过用滑动窗口加关键信息提取,效果还行,但得手动调权重,挺烦的。