首页/AI/AI 应用速查/查询改写与 HyDE

查询改写与 HyDE

用户问句与文档陈述句存在表述鸿沟:查询改写(补全指代、口语转书面)与 HyDE(先让模型生成假想答案再拿它去检索)都能显著提升召回,尤其适合短查询。

AI 应用速查AI更新于 2026-10-13

查询改写与 HyDE 是什么

用户问句与文档陈述句之间存在表述鸿沟:口语、指代、缺术语的短查询,用向量检索很难命中正确段落。查询改写负责把问句补成完整书面表述,比如补上被省略的主语与实体;HyDE 则先让模型写一段假想答案,再用这段假答案的向量去检索——假答案不要求内容正确,它的价值在于用词分布贴近真实文档,从而把检索拉进正确的语义邻域。

基本信息

直接改写结合对话历史补全指代与省略,如「它怎么配」改成「Qdrant 怎么配置快照」
HyDE生成一段假想答案文档,用它的向量检索,假答案内容不必为真
多查询扩展一次生成多条不同角度的查询并行检索,再融合结果
适用信号查询短、术语口语化、与文档措辞差距大、多轮对话含指代
主要代价每次问答多一次模型调用,首字延迟与成本同步上升
上线前提必须有评测集对比改写前后召回率,不能凭感觉开开关

典型使用场景

  • 多轮对话里用户说「它怎么重启」,指代不补全则检索直接失效
  • 口语化提问「程序跑得太慢有什么办法」,与文档里的性能优化章节用词差距大
  • 术语缺失的场景:「服务器老是自己重启」需要改写成宕机与自动重启相关表述
  • 中英混用与内部缩写较多时,改写成文档使用的正式术语
  • 专业领域短问题(条款、标准术语)用 HyDE 生成一段该领域的典型论述再检索

两段提示词模板

两段提示词模板
# 改写模板:只补全,不改意图
结合对话历史,把用户问题改写成一条自包含的检索查询:
补全指代与被省略的主语,保留全部数字、版本号与专有名词。
只输出改写后的查询,不要解释。
原始问题:{{query}}

# HyDE 模板:写假想答案,用它的向量检索
请针对下面的问题写一段 100 字左右的假想答案,
用词尽量接近该领域的正式文档,内容不必正确:
问题:{{query}}
假想答案:

三种查询侧手段对比

手段依赖适合主要风险
直接改写对话历史与上下文多轮对话、指代密集改写抹掉关键实体与编号
HyDE一次额外生成调用短查询、术语鸿沟大假答案跑偏主题,召回同向偏移
多查询扩展多次检索资源多义问句、覆盖面不足各条查询高度重复,等于没扩展
HyDE 的假答案内容对错无关紧要,但要与目标语料同语言、同文体:用中文口语写假答案去检索英文技术手册,效果通常不如直接改写。
改写最常见的损失是数字与编号:型号、版本号、条款号一旦被改写或省略,检索就会偏移到错误文档,模板里要显式要求原样保留。

易错点

  • 改写抹掉关键实体或编号:查询看起来更通顺,但检索目标已经换了,越改越偏
  • 多轮对话不带上文改写:检索用代词发起,命中率接近于零
  • HyDE 的假答案跑偏主题:假答案与真实文档不在同一语义邻域,召回同步跑偏
  • 每次问答都无条件加一次生成调用:低延迟场景首字时间明显变长,收益却没评测验证
  • 只看生成答案像不像,不看召回指标:改写是检索环节的优化,必须用召回率与命中率衡量

数据来源与参考

  • Gao et al., HyDE 论文(2022);RAG 工程实践

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌