← 返回题库
第 036 题 · RAG · 中等

RAG 中 Query Rewrite 与 HyDE 分别解决什么问题,如何选择?

岗位专项 这代表什么?
✓ 资料核验 来源说明:公开面经题库主题;公司归属未独立核验,技术答案依据原论文或官方文档整理
Query RewriteHyDE查询变换
评论与补充 ↓
口述训练

先用自己的话答,再看参考说法

60 秒是练习上限,不是必须凑满。原理题讲清因果,设计题讲清约束,项目题只讲真实证据。

别照着背。参考说法只用于对照;直接回答问题,简单题说清楚就收尾。项目题只用自己的经历和数字。

面试时怎么答

用输入和产物区分两者:Query Rewrite 仍输出更适合检索的查询,HyDE 先生成一段假想答案或文档,再用它的向量去找真实材料。前者适合消歧和补全约束,后者有时能跨越短问题与长文档的表达差距。

要主动提风险:HyDE 生成内容不是证据,可能把检索带偏。若问题包含编号、姓名等精确词,原查询和稀疏检索不应被替掉。

可以这样答:

Query Rewrite 把口语化、含指代或多意图的问题改成更清晰的检索式,也可拆成多个子查询。HyDE 则先生成一个假想文档,再用其 Embedding 检索真实文档,适合原问题太短、与语料表述差异较大的场景。假想文档可能带入错误实体,因此只能作为召回信号;实践中应保留原查询,多路召回后融合,并按查询类型评估收益。

核心回答

Query Rewrite 和 HyDE 都在检索前改变查询表示,但产物与适用场景不同。Query Rewrite 把用户原问题改写为更适合检索的查询,例如补全对话指代、保留实体与约束、拆解多跳问题或生成多个查询;HyDE 则让语言模型先生成一篇“假想相关文档”,再对这篇文档做向量编码,用它去寻找语义邻近的真实文档。

普通改写同时适用于关键词、稀疏、稠密或混合检索,适合查询含糊、口语化和上下文依赖的场景。HyDE 更偏向没有相关性标注的零样本稠密检索,尤其用于短查询与文档表述差异较大的情况。HyDE 生成的内容可能包含错误事实,因此它只能作为检索向量的中间表示,不能直接当作回答证据。

展开说明

设原查询为 \(q\),查询改写器生成 \(q' = f(q, \text{history})\),检索器再计算 \(\operatorname{TopK}(q',D)\)。实践中可以生成多个 \(q'_i\),分别召回后去重、融合,以提高不同表达方式下的覆盖率;代价是额外延迟和噪声。

HyDE 的过程是:

  1. 根据问题采样一篇或多篇假想文档 \(\tilde d\)。
  2. 用文档编码器得到查询向量 \(v_q = E(\tilde d)\);多篇时可对向量做聚合。
  3. 按 \(\operatorname{sim}\!\left(v_q,E(d)\right)\) 从真实语料库中检索文档。

它的关键不是相信假想文档中的事实,而是利用其更接近文档体裁和术语分布的表达,跨越“问题语言”和“文档语言”之间的差距。原论文认为编码器的稠密瓶颈有助于弱化错误细节,但这并不构成事实正确性的保证。

选择策略应由离线评测决定:如果失败主要来自指代、省略、实体别名或复合意图,优先做受约束的 Query Rewrite;如果零样本稠密检索存在明显语义鸿沟,可以把 HyDE 作为候选方案。二者也能组合,但应与不改写基线比较 Recall@K、MRR、最终答案正确率、延迟和成本。

工程实践

生产链路应同时保存原查询、改写查询、假想文档、各路候选及最终证据,方便定位“改写漂移”。改写 Prompt 要明确不得删除时间、产品版本、否定词和租户等硬约束;权限过滤必须由可信元数据执行,不能让改写结果改变 ACL。可以先用轻量规则判断是否需要改写,对明确的实体查询直接检索,对模糊或对话型查询才调用模型。最终生成答案时应使用原问题和真实检索证据,而不是把 HyDE 文本伪装成来源。

常见追问

  1. HyDE 生成了错误内容,为什么仍可能提升召回? 检索使用的是假想文档的向量邻域而非其事实结论;它可能提供与真实文档接近的语体和术语。不过错误实体也可能造成漂移,所以必须通过真实语料落地并离线评测。
  2. 多查询改写是不是越多越好? 不是。查询数量增加通常会扩大覆盖,也会增加调用、检索和融合成本,并引入更多无关候选;应根据召回增益和延迟预算选择数量。
  3. 怎样发现 Query Rewrite 改坏了用户意图? 对实体、时间、否定和过滤条件做改写前后约束检查,并分别评测原查询与改写查询的召回;线上还要记录无结果率、回退率和用户反馈。

一句话复习

Query Rewrite 优化“怎样问检索器”,HyDE 用假想文档跨越查询—文档语义鸿沟,但最终证据必须来自真实语料。

参考资料

无需账号 · 原地交流

评论与补充

评论会直接显示在这道题下面。可以写自己的答法、继续追问或指出错误,不需要 GitHub 账号,也不会跳转到 Issue;内容会公开,请勿填写个人隐私、公司机密或受保密约束的材料。

正在加载评论…