Query Rewrite

别名:查询改写 / HyDE / Hypothetical Document Embeddings

把用户问题改写成更好检索的形式:补全、扩展、多查询或 HyDE,提升召回。

更新于 2026/11/08
RAG检索查询

一句话定义

Query Rewrite 是在检索前改写用户问题:补全上下文、扩展同义词/术语、生成多个查询版本,或用 HyDE 先写一个假设答案再检索。

为什么需要它

用户问题往往口语化、缺上下文,或者用词和文档不一致。直接拿原问题做向量检索,可能召回不到正确片段;改写能让查询更接近文档的表达。

常见做法

  • 改写:补全省略的主语/上下文,把口语问题变成明确查询。
  • 扩展:加入同义词、领域术语、缩写全称。
  • 多查询:生成多个版本分别检索,再合并去重。
  • HyDE:先让模型写一个假设答案,用答案的向量去检索;答案不一定对,但用词更接近文档。

HyDE

HyDE 不依赖假设答案正确,而是利用“答案式文本”的用词分布提升召回。它增加了生成成本,也可能把错误假设带进检索。

Query Rewrite:把问题改写成更好检索的形式

关键取舍

  • 改写提升召回,但可能改变原意;要保留原问题并评估偏差。
  • 多查询/扩展增加检索次数和延迟。
  • HyDE 多一次生成,适合文档风格与问题差异大的场景。
  • 改写策略要按失败率启用,不是所有查询都需要。
  • 改写可以由规则、模型或混合方式完成。
  • 多查询要合并去重,避免重复上下文。
  • HyDE 适合文档风格正式、用户问题口语化的场景。评测看召回提升。

常见误区

  • 改写一定更好:错误改写会把检索带偏。
  • HyDE 需要答案正确:它只需要用词接近文档。
  • 多查询越多越好:延迟和噪声都会上升。
  • 改写能替代 Reranker:一个改查询,一个排结果。

用在哪里

  • RAG 检索前置。
  • 口语化客服、跨语言/跨术语检索。
  • 文档用词和用户用词差异大的知识库。

相关概念

  • RAG:Query Rewrite 服务的流程。
  • Vector Database:改写后的查询在这里检索。
  • Reranker:对召回结果精排。