前言:问题改写是 RAG 系统中不可或缺的“桥梁”技术,它连接了“用户语言”与“知识库语言”,显著提升了检索的相关性和系统整体性能。掌握并合理应用问题改写方法,是构建高效、智能 RAG 应用的关键一步。
1、问题改写(Query Rewriting/Transformation)简介
问题改写(Query Rewriting/Transformation)是信息检索、对话系统和RAG(检索增强生成)中的关键技术,旨在对用户原始问题进行转换、分解或增强,以提高检索效果或理解准确性。
2、为什么问题改写在 RAG 中如此重要?
在原始的 RAG 流程中,用户提问后,系统直接使用该问题去检索知识库。但实际中,用户的问题可能存在:
-
表述模糊(如:“它怎么样?”) -
缺少上下文(如对话历史中的指代) -
使用口语化或非专业术语 -
复杂多跳问题(包含多个子问题)
这些问题会导致检索失败或召回不相关文档。问题改写的作用就是优化原始查询,使其更适合检索系统(尤其是向量数据库或搜索引擎)理解与匹配。
3、问题改写在 RAG 中的常见方法
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
问:“续航多少?” → “特斯拉 Model Y 续航多少?” |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|---|---|---|
| 提高召回率(Recall) |
|
|
| 增强语义理解 |
|
|
| 支持多轮对话 |
|
|
| 优化向量检索效果 |
|
|
| 降低对原始查询质量的依赖 |
|
|
5、实际应用建议
-
在 RAG 系统中,可将问题改写作为预处理模块,位于用户输入与检索器之间。 -
可结合多种策略:如先融合对话历史,再进行 HyDE 或分解。 -
注意延迟与成本权衡:使用大模型进行改写会增加推理时间,需根据场景选择轻量或复杂策略。


