HyDE
一句话定义
HyDE 是一种 RAG 查询增强技术,通过让 LLM 先生成一个”假设性文档”(hypothetical answer),再用该文档做向量检索,从而消除查询和文档之间的语义鸿沟,提升检索准确性。
摘要
HyDE(Hypothetical Document Embeddings)的核心洞察是:用户的问题和文档库中的答案在语义空间中可能存在距离——问题用疑问句式,答案用陈述句式。直接用问题做向量检索可能匹配不到最相关的文档。HyDE 通过让 LLM 先生成一个假设性的回答,再用这个回答做检索,消除了查询和文档之间的语义鸿沟。
这种方法的优势在于不需要修改检索系统本身,只需在查询前增加一个生成步骤。实验表明,HyDE 在开放域问答、文档检索等任务上能显著提升检索质量,尤其是在查询表述模糊或与文档风格差异大的场景下。HyDE 的名字来源于其论文《Precise Zero-Shot Dense Retrieval without Relevance Labels》。
详情
起源与背景
HyDE 由 Gao et al. 在 2022 年的论文《Precise Zero-Shot Dense Retrieval without Relevance Labels》中提出。其动机是解决零样本检索场景下,查询和文档之间的语义不匹配问题。在传统信息检索中,查询和文档的匹配依赖词汇重叠或标注数据,而 HyDE 利用 LLM 的生成能力桥接这一鸿沟。这一方法的核心洞察是:问题和答案虽然语义相关,但在向量空间中的距离可能很远,而假设性文档作为中介可以有效桥接这一距离。
核心机制 / 工作原理
HyDE 完整流程:
第一步:假设性文档生成
- 输入:用户查询(如"什么是 RAG?")
- LLM 生成一个假设性文档(如"RAG 是一种结合检索和生成的架构...")
- 关键:假设性文档不需要正确,只需要"像"真实文档的写法
第二步:向量检索
- 将假设性文档编码为向量
- 在文档库中进行向量相似度检索
- 返回 Top-K 最相似的真实文档
第三步:最终生成
- 将检索到的真实文档作为上下文
- LLM 基于上下文生成最终答案
为什么有效?
- 查询"什么是 RAG?"的向量与文档"RAG 是..."的向量距离较远
- 但假设性文档"RAG 是..."的向量与真实文档"RAG 是..."的向量距离很近
- HyDE 用 LLM 的生成能力将查询"翻译"成文档风格
应用 / 使用场景
- 开放域问答系统,尤其是问答风格差异大的场景
- 用户查询表述模糊或过于简短的场景
- 查询风格与文档风格差异大的场景(如口语化查询 vs 正式文档)
- 零样本检索场景(没有标注数据)
- 多语言检索场景(查询和文档语言不同)
与其他查询增强技术的对比
| 技术 | 原理 | 延迟增加 | 适用场景 |
|-----------|---------------------|---------|-------------|
| HyDE | 生成假设性文档做检索 | 中等 | 模糊查询 |
| Multi-Query| 拆分多个子查询并行检索 | 高 | 复杂查询 |
| Query Rewrite | LLM 改写查询 | 低 | 口语化查询 |
局限与争议
- 增加了一次 LLM 调用,增加延迟和成本(通常增加 200-500ms)
- 如果 LLM 生成的假设性文档质量太差,可能反而降低检索效果
- 对于已经表述清晰的查询,提升效果有限
- 不适合实时性要求极高的场景(如实时搜索)
- 假设性文档可能引入 LLM 的偏见或幻觉
与其他实体的关系
- RAG —— HyDE 是 RAG 查询增强的一种技术
- RAGAS —— HyDE 的效果可通过 RAGAS 指标量化评估
- Cross-Encoder —— HyDE 与 Reranker 可以组合使用,先 HyDE 召回再 Reranker 精排