一句话回答
多轮 RAG 难点:用户后续提问是省略式、指代式(“那它有什么限制?”),直接拿当前这句话去检索会语义缺失,召回垃圾文档;
核心思路:把历史对话信息合理融入检索环节,还原完整用户意图,同时不能把全部历史直接塞进检索,避免噪声膨胀。
总结的说法:
多轮对话检索最大问题是用户存在指代、省略,直接拿当前问句检索效果很差。
主流方案是 Query 重写:结合最近几轮对话,调用 LLM 把当前问题补全为完整查询(提问),拿补全后的语句做知识库检索;
注意区分:检索用改写后的 query,最终大模型生成回答,仍然要带上原始完整对话。同时要限制对话轮次做截断,防止上下文无限膨胀
难点解析:检索器的每一次检索都是独立的,它不会记住历史的,所以我们要进行 query 重写,所谓的 query 重写,就是把问题给小型的大模型,让其润色,比如:
用户:BGE‑M3 怎么做混合检索?
AI:BGE‑M3 可以同时输出稠密向量与稀疏向量,再用 RRF 融合结果……
用户:那参数怎么调?(当前用户提问,有代词 “那”)
当用户问: 那参数怎么调? 时,如果直接给向量模型,向量模型是不知道这个那指的是什么的,需要让模型润色为如下问题: BGE‑M3做混合检索时相关参数如何调优
然后问题输入给参数比较大的大模型时,需要将历史所有对话(原始的)+ 用户当前原始的对话一起输入给大模型,这样的问题不要润色,因为大模型可以理解。

331

被折叠的 条评论
为什么被折叠?



