最近在搭一个基于LangChain的客服Agent,知识库用的是向量数据库(Chroma+OpenAI embedding)。单轮问答效果还行,但一旦进入多轮对话,比如用户先问“退款政策”,再追问“那需要多久到账”,系统很多时候会直接去查“到账时间”相关切片,而忽略了第一轮的“退款”上下文,导致答非所问。我试过把历史对话拼进query再embedding,但感觉语义被稀释了,检索召回反而变差。也试过用LLM做query改写,但延迟和成本上去了,效果还不稳定。想问下大家在生产环境里一般怎么处理这种多轮检索的“上下文漂移”?是重排策略、记忆压缩,还是干脆把工具调用逻辑改成先意图识别再决定检索范围?求个靠谱的实践方向。
楼主
2026-08-01
RAG+Agent框架下,多轮对话后知识库检索结果漂移怎么破?
请 登录 后发表回复
全部回复
共 121 条
2楼
14天前
这个问题我们也踩过,后来发现关键不是把历史对话硬塞进query,而是得先判断当前这轮到底是在追问、切换话题还是补充条件。“那需要多久到账”单独看确实像在问到账时间,但放到退款语境里,它其实是在问退款到账,不是转账到账。我们现在的做法是先用一个小模型做轻量意图分类,把上一轮的领域标签带过来,再决定是限定检索范围还是重新检索。LLM改写query我们只在意图模糊的时候才用,不全量上,不然延迟真扛不住。重排也能帮忙,但前提是召回里得有正确的退款切片,不然重排也救不回来。