RAG中Query改写的多种策略
Query改写(Query Rewriting)是提升RAG检索质量的关键预处理步骤。请介绍HyDE(假设文档嵌入)、多查询扩展、Query分解等多种改写策略及其适用场景。
回答
苦行僧
用户的原始query往往不够精确,Query改写通过大模型或规则优化检索输入。
主要策略:
-
HyDE(Hypothetical Document Embeddings)——假设文档嵌入:
- 原理:让LLM根据query生成一个假设文档(回答)
- 用假设文档的embedding去检索(而非原query)
- 直觉:生成文档比原query更接近目标文档的语义空间
- 适用:开放式问题,需要推理的任务
- 局限:假设文档可能产生'幻觉',检索到不相关文档
-
多查询扩展(Multi-Query):
- 将一个query扩展为多个不同角度的query
- 所有query的检索结果合并去重
- 适用:宽泛、多维度的问题
-
Query分解(Step-back/FH):
- 将复杂query分解为更简单的子query
- 先问抽象问题再问细节,两个query的结果分别检索后汇总
-
上下文补全:
- 利用对话历史补全不完整的query
实践经验:HyDE在抽象推理任务中提升15-20%,Multi-Query在事实型任务中提升10%。LlamaIndex和LangChain均内建了Query Rewriting模块。