最近在搭一个基于RAG的AI Agent,用来做内部知识问答。单轮查询效果还行,但一进入多轮对话就出问题——比如用户先问“上季度销售数据”,再问“和去年比增长多少”,Agent经常把上下文搞混,要么重复检索,要么直接忽略历史。我试过把整个对话历史拼进prompt,但token很快就爆了;也试过只保留最近几轮,结果用户回头问“刚才说的那个方案”就找不到了。看了一些方案,好像有memory bank、压缩摘要什么的,但不太确定哪种适合RAG场景。求有经验的大佬指点一下,最好能给出具体的实现思路或工具推荐,万分感谢!
楼主
2026-07-19
RAG+Agent做多轮对话时,历史记忆怎么管理才不会崩?
请 登录 后发表回复
全部回复
共 162 条
2楼
1天前
我一般把历史摘要存向量库,检索时按query动态召回,比硬塞prompt省token还准。
3楼
15小时前
我之前也踩过这个坑,后来用了个折中办法:每轮把历史对话用LLM压缩成一句带关键实体的话存起来,检索时把当前query和压缩记忆拼一起再召回,这样既不爆token又能保留“刚才说的那个方案”这种指代。不过压缩本身有信息损耗,像数字、时间这类硬信息最好单独结构化存一份。你那个“和去年比”的问题,其实可以在Agent里加个指代消解步骤,先让模型把query补全成完整问题再去检索,效果会稳很多。