HyDE :让 RAG 检索从"匹配关键词"升级到"理解意图"

简介: HyDE(假设文档嵌入)是一种提升RAG检索效果的创新方法:不直接检索与查询相似的文档,而是先让LLM生成“理想答案”的假设文档,再对其嵌入检索。它绕过关键词匹配局限,聚焦语义意图,显著改善术语差异大、查询表述多样等场景下的召回质量,代码改动小、效果提升明显。

做过检索增强生成(Retrieval-Augmented Generation,RAG)的人大概都遇到过这样的情况:用户问了一个完全合理的问题,但检索就是漏掉了最相关的信息。

传统 RAG Pipeline 不弱,但它严重依赖查询和文档分块之间的直接相似度匹配。措辞和文档内容只要写法不一样这套就开始失灵。

Hypothetical Document Embeddings(HyDE) 不是"搜索文档",而是让系统在检索开始之前,先想清楚理想答案应该长什么样。

传统检索的问题

大多数 RAG 系统的流程很简单:

 Query → Embedding → Vector Search → Retrieved Chunks → LLM Response

向量数据库根据语义相似度去检索,但相似不等于相关。

举个例子:

 Query:
 "How can LangSmith help monitor LLM applications?"

如果存储的分块里从来没出现过 "monitor"、"tracking" 或 "observability",哪怕文档里其实写过答案,检索质量也会掉下来。

由此带来三类典型问题:对未见过的查询检索效果差;在领域专有术语上表现弱;不相关的上下文被送进了 LLM。检索一旦失败,生成基本也跟着崩。

什么是 HyDE

HyDE 是 Luyu Gao 提出的检索技术,思路是:在向量检索之前,先生成一份假设的答案文档。

不是直接把用户查询拿去做 Embedding,而是这样:

 User Query
      ↓
LLM generates hypothetical answer/document
      ↓
Create embedding of that hypothetical document
      ↓
Search vector database using this richer embedding
      ↓
 Retrieve better context

核心想法非常简单:生成出来的假设文档,比原始的短查询承载了更丰富的语义。检索系统据此搜索的是"上下文意图",而不只是关键词层面的相似度。

HyDE 内部是怎么跑的

完整流程如下。

1、用户提交查询例如:

 "What is LangSmith and why do we need it?"

2、LLM 生成一份假设文档

LLM 写出一段可能回答这个问题的合成文本。

例如:

 "LangSmith helps developers monitor, debug, and evaluate LLM applications..."

这份文档并不要求事实完全正确,它要表达的是"一个有用答案大致长什么样"。

3、生成 Embedding

把假设文档转成向量。这个向量通常比直接对原始查询做 Embedding 信息密度高得多。

4、执行向量检索

用这个 Embedding 去向量数据库里做相似度搜索:

 Hypothetical Embedding → Similarity Search → Relevant Documents

检索关注的是概念上的相关性,而不是浅层的关键词匹配。

5、生成最终答案

检索到的文档进入 RAG 的生成阶段,从而拿到更准确、更贴合上下文的回答。

这个设计的妙处在于不需要重新训练检索模型。改变查询的表达方式,就能改善检索质量。

LangChain 实现

HyDE 之所以流行起来,原因之一是用 LangChain 有现成的实现我们可以直接拿来用

 fromlangchain.embeddingsimportOpenAIEmbeddings
fromlangchain.chat_modelsimportChatOpenAI
fromlangchain.chains.hyde.baseimportHypotheticalDocumentEmbedder

llm=ChatOpenAI(
    temperature=0
)

base_embeddings=OpenAIEmbeddings()

hyde_embeddings=HypotheticalDocumentEmbedder.from_llm(
    llm=llm,
    base_embeddings=base_embeddings,
    prompt_key="web_search"
)

query="What is LangSmith and why do we need it?"

 embedding=hyde_embeddings.embed_query(query)

LLM 生成假设答案;答案被 Embedding;Embedding 用于检索。代码改动很小,但检索效果可能有不小的提升。

总结

HyDE 在 RAG 应用里尤其有用,特别是:文档很长;术语与用户表述差异大;检索质量不稳定。

传统 RAG 搜索的是"与查询相似的文档",HyDE 搜索的是"与理想答案相似的文档"。一个小小的视角切换,让检索明显聪明了不少。

https://avoid.overfit.cn/post/a90afc30978644d58d6dbcf809c457a8

by Mangesh Jadhav

目录
相关文章
|
19小时前
|
人工智能 自然语言处理 安全
阿里云上线团队版Token Plan:一站式多模型订阅,解决企业规模化AI使用难题
阿里云上线团队版Token Plan,内置Qwen3.6、Kimi-K2.6等十余款主流多模态模型,支持坐席灵活分配、成本管控与多租户隔离,兼容Qoder、Cursor等主流Agent工具,提供标准/高级/尊享三档套餐,一站式解决企业AI规模化使用痛点。
37 1
|
23小时前
|
缓存 安全 Unix
理解虚拟内存:程序看到的地址为什么不是真实内存
虚拟内存通过页表、TLB 与缺页机制,实现安全高效的内存管理。
|
网络协议
轨迹系列——Socket总结及实现基于TCP或UDP的809协议方法
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 在上一篇博客中我详细介绍了809协议的内容。809协议规范了通信的报文,通信的规则等,但是并没限制通信使用的传输协议。
2780 0
|
6月前
|
人工智能 机器人 数据处理
ICLR2026 !SAM3重磅来袭:能“听懂人话”的分割模型,性能狂飙2倍
Lab4AI.cn覆盖全周期科研支撑平台,提供论文速递、AI翻译和AI导读工具辅助论文阅读;支持投稿论文复现和Github项目复现,动手复现感兴趣的论文;论文复现完成后,您可基于您的思路和想法,开启论文创新与成果转化。
1097 6
|
1天前
|
人工智能 JSON BI
Claude Code 搭配 DeepSeek V4-Pro 完整测评:超越 Claude Sonnet 4.5,低成本高效能背后的真实表现
Claude Code 凭借强大的代码理解、工程执行与自动化任务能力,成为开发者广泛使用的 AI 编程工具。但原生模型的调用成本较高,长期高频使用会带来明显开销。DeepSeek V4 系列模型发布后,凭借优秀的代码能力与兼容 Anthropic 协议的 API 接口,成为替代原生模型的高性价比选择。本文完整记录将 Claude Code 对接 DeepSeek V4-Pro 的配置流程、真实任务测试效果、优势亮点与必须注意的使用限制,为开发者提供可直接落地的参考方案。
367 1
|
1天前
|
人工智能 开发工具 iOS开发
Claude Code 新手完全上手指南:安装、国产模型配置与常用命令全解
Claude Code 是一款运行在终端环境中的 AI 编程助手,能够直接在命令行中完成代码生成、项目分析、文件修改、命令执行、Git 管理等开发全流程工作。它最大的特点是**任务驱动、终端原生、轻量高效、多模型兼容**,无需图形界面、不依赖 IDE 插件,能够深度融入开发者日常工作流。
548 1
|
1月前
|
搜索推荐 BI
新一代云HIS系统源码,采用多租户云架构,支持区域医疗机构共享部署
新一代云HIS系统采用多租户云架构,支持区域医疗机构共享部署,显著降低建设成本、缩短实施周期、便于统一维护。系统涵盖结构化EMR、门诊/住院全流程管理(挂号、收费、医嘱、护理、药房、检查检验等),集成医保结算与智能报表,全面满足基层医院运营需求。
135 2
|
3月前
|
算法 搜索推荐 数据挖掘
基于手肘法的kmeans聚类数的精确识别【K-means聚类】Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 👇 关注我领取海量matlab电子书和数学建模资料 🍊个人信条:格物致知,完整Matlab代码获取及仿真咨询内容私信。 🔥 内容介绍 一、先搞懂核心:为什么需要 “精确识别聚类数”? K-means 聚类的核心是将数据划分为 K 个 “相似度高、差异度大” 的簇,但 K 值的选择一直是算法应用的痛点 —— 选小了会导致簇内差异过大,选大了会出现过度聚类(簇间边界模糊),甚至失去实际业务意义。比如分析用户画像时
|
8月前
|
分布式计算 Java 关系型数据库
二、Sqoop 详细安装部署教程
在大数据开发实战中,Sqoop 是数据库与 Hadoop 生态之间不可或缺的数据传输工具。这篇文章将以 Sqoop 1.4.7 为例,结合官方站点截图,详细讲解 Sqoop 的下载路径、安装步骤、环境配置,以及常见 JDBC 驱动的准备过程,帮你一步步搭建出能正常运行的 Sqoop 环境,并通过 list-databases 命令验证安装是否成功。如果你正打算学习 Sqoop,或者在搭建大数据平台过程中遇到安装配置问题,本文将是非常实用的参考指南。
807 6