真实面经题目 · 原创解析

RAG 中 query rewrite、HyDE 和 RRF 分别解决什么问题,如何接入混合检索链路?

这题考的是候选人是否能区分 query rewrite、HyDE 和 RRF 在混合检索中的职责:rewrite 改善查询表达,HyDE 用假设答案拉近语义空间,RRF 融合多路召回结果,它们分别作用在召回前、向量查询构造和多路结果融合阶段。

出现于:快手 · 后端开发

60 秒回答模板

在 RAG 混合检索链路里,query rewrite、HyDE 和 RRF 解决的是不同层的问题。Query rewrite 主要解决用户问题表达不完整、口语化、指代不清或需要拆解的问题,它把原始 query 改写成更适合检索的一个或多个 query,例如补全上下文、扩展同义词、拆成子问题、生成关键词查询和语义查询。HyDE 解决的是向量检索中的语义鸿沟:用户问题很短或抽象时,可以先让模型生成一个假设性答案或文档,再对这个假设文档做 embedding,用它去检索真实文档,因为答案式文本往往和知识库文档更接近。RRF 解决的是多路召回结果怎么融合的问题,它不要求不同检索器分数可比,而是根据每路排名做倒数排名融合,把 BM25、向量、改写 query、HyDE query 等结果合并成统一候选集。接入时我会把链路设计成:原始 query 经过意图识别和 rewrite 生成多路查询;其中部分查询走关键词检索,部分走向量检索,必要时生成 HyDE 文档再走向量检索;所有召回结果用 RRF 或加权 RRF 融合去重,再进入 rerank,最后由生成模型基于高置信上下文回答。要注意这三者都可能引入噪声,所以必须有开关、超时、成本预算、离线评测和线上观测。

考点 Rewrite 在召回前
难度 真实面经题
回答目标 让候选人能准确说明 query rewrite、HyDE、RRF 的问题定位、链路位置、接入顺序、风险控制和评测方式,体现对混合检索工程化落地的理解。

深入解析

01

混合检索先拆阶段

完整链路通常分为查询理解、召回、融合、重排和生成。Query rewrite 属于查询理解和召回前处理,HyDE 属于构造更适合向量召回的查询表示,RRF 属于多路召回后的融合。把阶段讲清楚,才能避免把三个概念混成“都能提高召回”的泛泛回答。

02

Query rewrite 改善表达

用户问题常常有省略、指代、错别字、口语化和上下文依赖。Rewrite 可以把“这个怎么配”改成包含产品名、版本、字段名的完整查询,也可以生成同义词、英文缩写、业务别名,或者把复杂问题拆成多个子问题分别检索。它的目标是提高可检索性和覆盖率。

03

Rewrite 要控制漂移

改写不是让模型自由发挥,而是要保留原始意图。工程上可以要求输出结构化字段,例如规范化 query、关键词 query、语义 query、过滤条件、子问题列表,并保留原始 query 一起召回。对高风险问题应限制改写幅度,避免把用户问题改成另一个问题。

04

HyDE 缓解语义鸿沟

HyDE 的做法是先生成一个假设答案或假设文档,再用这段文本的向量去检索真实文档。因为知识库文档往往是陈述式内容,而用户 query 是疑问句或很短的关键词,假设答案可以让 embedding 更接近候选文档的表达空间,从而提升向量召回。

05

HyDE 要防止幻觉扩散

HyDE 生成的文本不是真实证据,只是检索探针。后续回答不能把 HyDE 本身当作事实来源,只能基于召回到的真实文档。工程上应限制 HyDE 长度、温度和数量,并在低置信、长尾或抽象问题上启用,避免每个 query 都增加成本和噪声。

06

RRF 融合不同检索器

BM25、向量检索、图检索、改写 query 和 HyDE query 的分数尺度不同,直接加分不可靠。RRF 使用排名而不是原始分数,候选在某一路排名越靠前贡献越大;如果一个文档在多路结果中都靠前,它会自然获得更高融合排名。

07

RRF 后仍需 rerank

RRF 适合把多路召回候选做稳健合并,但它没有真正理解 query 与段落的细粒度匹配关系。融合后通常还要用 cross-encoder、LLM reranker 或规则特征做重排,处理答案覆盖、时间新鲜度、权限、重复内容和上下文长度预算。

08

工程接入要可评测

这三类能力都应做成可开关、可灰度、可追踪的组件。日志要记录原始 query、改写 query、HyDE 文本摘要、各路召回 topK、RRF 后排名和 rerank 后排名。评测时看 recall@k、MRR、nDCG、答案正确率、延迟和成本,防止只提升召回数量却降低最终答案质量。

易错点

  • 把 query rewrite、HyDE 和 RRF 都说成同一种召回增强技巧,讲不出阶段差异。
  • 认为 HyDE 生成的假设答案可以直接作为最终事实依据。
  • 只做改写 query,不保留原始 query,导致模型改写偏了也无法兜底。
  • 把不同检索器原始分数直接相加,忽略分数尺度不可比。
  • 以为 RRF 可以替代 rerank,忽略细粒度相关性判断。
  • 不控制改写数量和 HyDE 调用次数,导致延迟、成本和噪声失控。
  • 没有记录中间查询和各路召回结果,线上效果变差时无法定位原因。
  • 只看召回数量,不看最终答案正确率、证据命中和用户反馈。

面试官追问

Query rewrite 和 query expansion 有什么区别?

Query expansion 更偏向增加同义词、别名、关键词等召回词;query rewrite 范围更大,可以做上下文补全、纠错、规范化、意图改写、过滤条件抽取和问题拆解。Expansion 可以看作 rewrite 的一种子能力。

HyDE 适合所有查询吗?

不适合。它更适合短 query、抽象 query、用户表达和文档表达差异较大的场景。对实体精确查询、编号查询、强过滤查询,HyDE 可能引入无关语义,反而不如 BM25 或结构化过滤稳定。

RRF 为什么比直接加权分数稳健?

因为不同检索器的分数含义不同,BM25 分数、向量相似度和图检索分数通常不在同一尺度上。RRF 只依赖排名,避免了复杂的分数校准,尤其适合多路召回初期快速融合。

如何给 RRF 加业务权重?

可以给不同召回路设置权重,例如精确关键词命中、权限内文档、近期文档或高质量知识源权重更高。但权重应通过验证集和线上实验调整,不能靠主观感觉随意加。

如何判断 rewrite 或 HyDE 引入了漂移?

可以抽样对比原始 query、改写 query、HyDE 文本和最终召回文档,看是否改变实体、时间、约束条件或问题意图。指标上,如果 recall@k 上升但 rerank 命中、答案正确率或用户满意度下降,就要怀疑漂移。