在检索增强生成(RAG)系统中,原始用户查询往往存在以下问题:
口语化表达(如“那个怎么弄?”、“上次说的那个东西”)
信息不完整(缺少关键实体、时间、上下文)
歧义性强(一词多义、指代不明)
直接用这样的查询去向量数据库检索,容易导致召回结果相关性低。通过 Query 改写(Query Rewriting),可以:
补全隐含语义
消除歧义
提取/强化关键词
对齐知识库中的术语表达
从而显著提升检索阶段的召回质量(Recall)和排序相关性(Relevance),为后续生成阶段提供更可靠的事实依据。
常用的 Query 改写方法有哪些?
在实践中,我们常根据场景组合使用多种改写策略,主要包括:
| 查询重写(Query Rewriting) | 利用 LLM 将原始问题改写为更正式、完整、无歧义的表述 | 通用,尤其适合对话历史缺失时 |
| 多查询生成(Multi-query Generation) | 从不同角度生成多个相关查询,扩大检索覆盖面 | 复杂问题、多意图问题 |
| 查询分解(Query Decomposition) | 将复杂问题拆解为多个子问题,分别检索后融合 | 多跳推理、复合条件查询 |
| Hypothetical Document Embeddings (HyDE) | 让 LLM 先生成一个“假设答案”,再用该答案去检索 | 提升语义匹配深度,对抗关键词 mismatch |
| 后退提示(Step-back Prompting) | 引导模型先思考“这个问题背后的原理/目标是什么”,再生成泛化查询 | 抽象问题、需要常识推理的场景 |
实际应用中,通常会组合使用:例如先做查询分解,再对每个子查询进行多路生成 + HyDE,最后融合检索结果。
补充建议
可引入用户画像/对话历史作为改写上下文
对改写结果做相关性过滤或重排序
在线上系统中加入A/B 测试,评估不同改写策略对最终答案质量的影响
这样整理后,逻辑更清晰,也体现了你对 RAG 优化的深入理解。
网友回复
如何破解绕开seedance2.0真人照片生成视频 限制?
python有哪些算法可以将视频中的每个帧图片去除指定区域水印合成新的视频?
iphone的激光雷达数据能否实时传输到three三维空间中?
豆包sora等ai视频生成大模型生成的视频水印如何去除?
python如何实现在电脑上拨号打电话给手机?
具身机器人与人形机器人区别?
nodejs如何将一个完整的js代码文件切割成不同的部分混淆后动态加载进入html运行?
为啥windows.onerror捕获js错误是这样的{"message":"Script error.","source":"","lineno":0,"colno":0,"stack":null,
2026年ai将全面接管编程?
WebMCP是干啥的?


