核心要点

  • 能讲清痛点:用户问句短、口语化、可能含指代,与知识库文档的表达分布不一致,直接 embedding 召回差

  • 能解释 HyDE:先让 LLM 生成一个「假设答案」,对该假设答案做 embedding 去检索,让查询向量更贴近文档向量空间

  • 能列举其他改写:扩写补全、消歧、多查询(生成多个改写并合并召回)、子问题分解

  • 能权衡代价:多一次 LLM 调用带来延迟与成本,且假设答案可能引入幻觉噪声

标准回答

要解决的问题(独占一行)

RAG 召回不准,常源于「查询-文档表达鸿沟」:用户问句往往简短、口语、含指代或缺少关键词,而知识库里是完整、书面、术语化的文档,两者在向量空间中并不靠近,导致语义检索召回低。

HyDE(Hypothetical Document Embeddings)

先用 LLM 针对用户问题生成一段「假设的答案/文档」,再对这段假设文本做 embedding 去向量库检索。由于假设答案与真实文档在用词、长度、风格上更接近,召回的相关性显著提升——本质是用生成把查询「拉进」文档的分布。

其他常见改写

包括查询扩写与消歧、指代消解、Multi-Query(生成多个改写并合并去重召回)、复杂问题拆成子问题分别检索。可与 ReAct 式多轮检索结合。

代价

每次改写多一次 LLM 调用,增加延迟与成本;HyDE 的假设答案可能含幻觉,需配合 rerank 和混合检索控制噪声。

常见误区

⚠️ 常见踩坑

HyDE 不要求假设答案事实正确——它只用于改善向量匹配,最终答案仍来自检索到的真实文档;误以为「假设答案错了就用错了」是常见理解偏差。

追问

追问 1HyDE 在专业/低资源领域可能失效,为什么?

若 LLM 对该领域知识不足,生成的假设答案会偏离真实文档甚至误导检索。此时可改用关键词扩写、混合检索(稀疏+稠密)或先用领域语料微调嵌入模型,而非依赖生成式假设。

追问 2Multi-Query 改写后如何合并多路召回结果?

对各查询的召回做并集去重,再用 reranker 统一重排取 Top-K;也可用 RRF(倒数排名融合)按各路排名加权合并,兼顾稳定性与覆盖面。

追问 3查询改写应放在检索前还是交给 Agent 动态决定?

简单管线可固定前置改写;复杂场景更适合让 Agent 按首轮召回质量动态判断是否改写、如何改写,实现按需迭代,但要控制轮次以免延迟失控。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。

🛠️ AI 工具

  • LangChain

    最流行的 LLM 应用开发框架,137K+ stars。提供链式编排、RAG 检索增强生成、Agent 构建等核心能力,覆盖 Python 和 JavaScript 双语言生态,是构建 LLM 应用的基础设施

  • LlamaIndex

    文档 Agent 和 OCR 平台,48,716+ stars。领先的 RAG 框架,提供文档索引、数据检索、Agent 编排等完整能力,支持多模态文档理解和智能问答