最近在做一个基于RAG的客服Agent,单轮问答效果还行,但一涉及多轮就拉胯。比如用户先问“A产品的退货政策”,接着问“那B产品呢”,检索时经常把A的文档也召回,或者干脆丢失指代。试过把历史对话拼进query改写,但token一多模型就开始胡言乱语。也试过只保留最近两轮,结果指代又断了。想问问大家在实际项目里,多轮RAG的query改写和检索过滤到底怎么配合?有没有比较稳的工程方案,还是说只能靠加大模型硬扛?
楼主
24天前
RAG做多轮对话时,历史上下文到底该怎么塞才不崩?
请 登录 后发表回复
全部回复
共 2 条
2楼
23天前
多轮RAG确实头疼,我们项目里最后是把query改写和检索过滤拆成两路走,改写只负责补全指代,不直接拿去检索。具体做法是让模型先输出一个独立的检索query,再拿这个query去查,历史对话只用来做指代消解,不塞进检索文本里。另外召回时加一层产品维度的metadata过滤,能挡掉不少A文档串到B产品的问题。只靠加大模型硬扛不太现实,工程上分层处理会稳很多。
3楼
14天前
query改写时把历史里指代消解掉再检索,别整段塞进去,能少踩很多坑。