INNER 05 / RAG / 06 · ENGINE v1
多轮对话与查询改写(Module 4: ConvoRAG & Query Transformation)
本关练习:编写多轮对话指代消解与复杂对比问题拆解器。
30 SECONDS / 30 秒看懂
这一关只解决一件事:StepByStep-RAG 的第四模块 ConvoRAG 解决了单轮 RAG 走向真实聊天应用的最大拦路虎——多轮对话中的指代消解(Coreference Resolution)。例如:第 1 轮用戶问“Grand Palace 酒店的豪华海景房多少钱一晚?
- 设计前置 Query Rewriter 提示词:结合历史对话 <chat_history> 与当前追问 <latest_question>,将含代词“它”的句子改写为主语完整、可独立检索的句子(
- 5 分);
- 针对“A 与 B 有什么区别”这类对比型问题,设计拆解为两条独立检索子查询(Sub-queries)的 JSON 输出格式,避免单次检索只召回 A 而漏掉 B;
3 MINUTES / 3 分钟拆解
先看来源里的例子:PDF 本关任务(来源)
用戶在第 1 轮问了“Pro 版会员的年费是多少?”,第 2 轮追问:“那它跟企业旗舰版在 API 每分钟调用限额上有什么区别?”
发生了什么
来源要求:设计前置 Query Rewriter 提示词:结合历史对话 <chat_history> 与当前追问 <latest_question>,将含代词“它”的句子改写为主语完整、可独立检索的句子( / 5 分); / 针对“A 与 B 有什么区别”这类对比型问题,设计拆解为两条独立检索子查询(Sub-queries)的 JSON 输出格式,避免单次检索只召回 A 而漏掉 B;
输出
参考答案:参考答案:ConvoRAG 多轮指代消解与对比子查询拆解器 【前置查询改写与拆解器 Prompt(Query Rewriter & Decomposer)】 请结合 <chat_history> 将用戶的 <latest_question> 转化为面向向量检索引擎的优化查询 JSON。 规则说明: 1. 闲聊豁免:若用戶最新输入仅为感谢、寒暄或确认(如“谢谢”、“明白了”),将 need_retrieval 设为 false,无需检索知
术语拆开
- Query Rewriting
- 把口语追问改写成可检索的完整问题。
- 子查询
- 从复杂问题拆出的独立检索问题。
为什么有效
来源核心原理:StepByStep-RAG 的第四模块 ConvoRAG 解决了单轮 RAG 走向真实聊天应用的最大拦路虎——多轮对话中的指代消解(Coreference Resolution)。例如:第 1 轮用戶问“Grand Palace 酒店的豪华海景房多少钱一晚?”,第 2 轮用戶紧接着问“那它包含免费双人早餐和机场接送吗?”。如果直接拿第 2 轮原话“那它包含免费双人早餐和机场接送吗?”去向量库检索,由于丢失了主语“Grand Palace 酒店豪华海景房”,检索器会把全库所有提到早餐的无关文档搜出来 ! 因此 , 在检索之前必须增加一步独立查询改写器 (Contextual Query Rewriter),并可结合 RAG Zero to Hero Guide 中的 HyDE(假设性文档嵌入) 或 Sub-Query Decomposition(多子问题拆解)。
结构长什么样
设计前置 Query Rewriter 提示词:结合历史对话 <chat_history> 与当前追问 <latest_question>,将含代词“它”的句子改写为主语完整、可独立检索的句子( 5 分); 针对“A 与 B 有什么区别”这类对比型问题,设计拆解为两条独立检索子查询(Sub-queries)的 JSON 输出格式,避免单次检索只召回 A 而漏掉 B; 说明若用戶第 2 轮只是说“谢谢,讲得很清楚”,系统应如何跳过向量库检索以节省延迟。 第四阶段:高阶生产篇(第 7‒8 关)——知识图谱 GraphRAG、流式应用与评估体系
用户只说“它”时,为什么不能直接拿原话检索?
SOURCE READING / 来源精读
StepByStep-RAG 的第四模块 ConvoRAG 解决了单轮 RAG 走向真实聊天应用的最大拦路虎——多轮对话中的指代消解(Coreference Resolution)。例如:第 1 轮用戶问“Grand Palace 酒店的豪华海景房多少钱一晚?
逐点读懂
- 设计前置 Query Rewriter 提示词:结合历史对话 <chat_history> 与当前追问 <latest_question>,将含代词“它”的句子改写为主语完整、可独立检索的句子(
- 5 分);
- 针对“A 与 B 有什么区别”这类对比型问题,设计拆解为两条独立检索子查询(Sub-queries)的 JSON 输出格式,避免单次检索只召回 A 而漏掉 B;
怎么对应本关练习
先读 30 秒与 3 分钟拆解,再读本关原文与实验,最后做客观题和实操题;答案在下方。
例子在哪
本关任务与参考答案见页面下方;来源为本册 PDF 对应关卡。
本关先记住:设计前置 Query Rewriter 提示词:结合历史对话 <chat_history> 与当前追问 <latest_question>,将含代词“它”的句子改写为主语完整、可独立检索的句子(
核心原理
StepByStep-RAG 的第四模块 ConvoRAG 解决了单轮 RAG 走向真实聊天应用的最大拦路虎——多轮对话中的指代消解(Coreference Resolution)。
例如:第 1 轮用戶问“Grand Palace 酒店的豪华海景房多少钱一晚?”,第 2 轮用戶紧接着问“那它包含免费双人早餐和机场接送吗?”。如果直接拿第 2 轮原话“那它包含免费双人早餐和机场接送吗?
”去向量库检索,由于丢失了主语“Grand Palace 酒店豪华海景房”,检索器会把全库所有提到早餐的无关文档搜出来 !
因此 , 在检索之前必须增加一步独立查询改写器 (Contextual Query Rewriter),并可结合 RAG Zero to Hero Guide 中的 HyDE(假设性文档嵌入) 或 Sub-Query Decomposition(多子问题拆解)。
第 6 关实操练习题:编写多轮对话指代消解与复杂对比问题拆解器
任务背景
用戶在第 1 轮问了“Pro 版会员的年费是多少?”,第 2 轮追问:“那它跟企业旗舰版在 API 每分钟调用限额上有什么区别?”
通关硬性要求(满分 12.5 分)
1. 设计前置 Query Rewriter 提示词:结合历史对话 <chat_history> 与当前追问 <latest_question>,将含代词“它”的句子改写为主语完整、可独立检索的句子(
4.5 分);
2. 针对“A 与 B 有什么区别”这类对比型问题,设计拆解为两条独立检索子查询(Sub-queries)的 JSON 输出格式,避免单次检索只召回 A 而漏掉 B(5 分);
3. 说明若用戶第 2 轮只是说“谢谢,讲得很清楚”,系统应如何跳过向量库检索以节省延迟(3 分)。 第四阶段:高阶生产篇(第 7‒8 关)——知识图谱 GraphRAG、流式应用与评估体系
PRACTICE / 本关练习 · 本地规则 + 覆盖检查
编写多轮对话指代消解与复杂对比问题拆解器
本地检查在你的浏览器里完成,不上传。覆盖检查需要先登录(免费注册),并把这段答案发送到服务器计算一次,算完即弃、不存档,需你点同意;只核对本关评分项覆盖的方向,不在评分项里的题目不会被检查。
评分项
结构分 — / 12.5 分
查看参考答案与得分点 先自己写,再打开+
参考答案与得分要点
参考答案:ConvoRAG 多轮指代消解与对比子查询拆解器
【前置查询改写与拆解器 Prompt(Query Rewriter & Decomposer)】
请结合 <chat_history> 将用戶的 <latest_question> 转化为面向向量检索引擎的优化查询 JSON。 规则说明:
1. 闲聊豁免:若用戶最新输入仅为感谢、寒暄或确认(如“谢谢”、“明白了”),将 need_retrieval 设为
false,无需检索知识库。
2. 指代消解:将“它、这个、上述方案”等代词替换为历史对话中的完整专有名称。
3. 对比拆解:若问题涉及两个或多个对象的对比(如“A 和 B 在某方面的区别”),必须拆分为多条独立的单实
体检索语句放入 sub_queries 数组,确保两边资料都能被召回。 <chat_history> User: Pro 版会员的年费是多少? Assistant: Pro 版会员标准年费为 1,999 元/年。 </chat_history> <latest_question>那它跟企业旗舰版在 API 每分钟调用限额上有什么区别?</latest_question>
【标准输出 JSON】
{ "need_retrieval": true, "standalone_query": "Pro 版会员与企业旗舰版会员在 API 每分钟调用限额(RPM)上有什么区别?", "sub_queries": [ "Pro 版会员 API 每分钟调用限额 RPM 配额规定", "企业旗舰版会员 API 每分钟调用限额 RPM 配额规定" ] } 得分要点拆解:准确将代词“它”还原为“Pro 版会员”(4.5 分);将对比问题拆解为两条独立单实体检索语句 `sub_queries`(5 分);设置 `need_retrieval` 布尔开关过滤纯闲聊轮次(3 分)。 第 7 关
网页永久免费。完整 PDF 会按顺序发给留邮箱的读者,不转售、不群发广告。
留邮箱,获取完整 PDF ↗