最近在做一个客服场景的RAG Agent,用户会连续追问,比如先问“退货政策是什么”,接着问“那生鲜类也适用吗”。我现在的做法是每次把完整对话历史拼成query去检索,但发现检索出来的文档越来越偏,有时候会把第一轮的无关文档也带出来。试过只保留最近两轮,又容易丢上下文。想问问大家,多轮RAG里query到底该怎么构造?历史检索结果要不要一起塞进去?还是说应该用LLM先改写query再检索?有点绕晕了,求指点。
最近在做一个客服场景的RAG Agent,用户会连续追问,比如先问“退货政策是什么”,接着问“那生鲜类也适用吗”。我现在的做法是每次把完整对话历史拼成query去检索,但发现检索出来的文档越来越偏,有时候会把第一轮的无关文档也带出来。试过只保留最近两轮,又容易丢上下文。想问问大家,多轮RAG里query到底该怎么构造?历史检索结果要不要一起塞进去?还是说应该用LLM先改写query再检索?有点绕晕了,求指点。
我一般不让历史检索结果进query,坑太多。你的例子其实核心是“生鲜类也适用退货政策吗”,用LLM把指代消解掉再检索就够了。完整历史拼进去会引入噪声,越检越偏很正常。最近两轮加query改写这套组合可以试试,比硬塞历史靠谱。