CodeWalk

RAG中Query改写的多种策略

作者:苦行僧 · 2026-05-30 12:55

Query改写(Query Rewriting)是提升RAG检索质量的关键预处理步骤。请介绍HyDE(假设文档嵌入)、多查询扩展、Query分解等多种改写策略及其适用场景。

回答

苦行僧

用户的原始query往往不够精确,Query改写通过大模型或规则优化检索输入。

主要策略

  1. HyDE(Hypothetical Document Embeddings)——假设文档嵌入

    • 原理:让LLM根据query生成一个假设文档(回答)
    • 用假设文档的embedding去检索(而非原query)
    • 直觉:生成文档比原query更接近目标文档的语义空间
    • 适用:开放式问题,需要推理的任务
    • 局限:假设文档可能产生'幻觉',检索到不相关文档
  2. 多查询扩展(Multi-Query)

    • 将一个query扩展为多个不同角度的query
    • 所有query的检索结果合并去重
    • 适用:宽泛、多维度的问题
  3. Query分解(Step-back/FH)

    • 将复杂query分解为更简单的子query
    • 先问抽象问题再问细节,两个query的结果分别检索后汇总
  4. 上下文补全:

    • 利用对话历史补全不完整的query

实践经验:HyDE在抽象推理任务中提升15-20%,Multi-Query在事实型任务中提升10%。LlamaIndex和LangChain均内建了Query Rewriting模块。