什么是 查询改写(Query Rewriting)?
查询改写(Query Rewriting)是在搜索前,把用户原始问题转换为一个或多个更清晰、扩展后或更适合检索的查询的过程。
工作原理
查询改写解决的是 RAG 中常见问题:用户经常用省略、口语化或依赖上下文的方式提问,而检索系统需要更适合搜索的词项。改写步骤可以展开缩写、从对话历史补齐实体、把复杂请求拆成子查询、翻译语言,或规范化产品名称。风险是语义漂移:过度改写可能改变用户意图,检索出看似可信但不相关的证据。好的系统会记录原始查询和改写查询,并评估改写是否真正改善有依据回答。
主要特点
- 通过让隐含或模糊意图更可搜索来改善检索
- 可以生成单个改写查询,也可以生成多个聚焦子查询
- 可使用规则、LLM、对话历史、元数据或领域词典
- 如果改写改变用户意图,会带来语义漂移风险
- 应结合检索质量和最终答案事实锚定进行评估
常见用途
- 在搜索技术文档前展开缩写
- 利用聊天历史解析代词或追问
- 把多部分用户请求拆成独立检索查询
- 把查询翻译成与索引语料一致的语言
- 规范化产品名称、API 版本或内部术语
示例
loading...
Loading code...常见问题
查询改写和提示词改写是一回事吗?
不是。查询改写面向检索质量,提示词改写通常面向模型指令清晰度或输出行为。
RAG 系统什么时候应该改写查询?
追问、缩写、模糊表达、多语言语料,以及需要多次搜索的复杂请求都适合使用查询改写。
查询改写中的语义漂移是什么?
语义漂移指改写后的查询改变了用户原意,导致检索器获取看似合理但实际错误的证据。
如何评估查询改写?
可以在代表性查询集上,对比开启和关闭改写时的检索召回、上下文精确率和答案事实锚定。