:一文吃透Query优化(含含完整代码实现))
本文详解RAG系统中Query优化的六大核心方法Query抽象、重写、扩展、分解、双扩展及端到端模型。针对原始query模糊、简洁不足导致的检索问题从原理、适用场景到代码实现全面解析提供可直接落地的解决方案助力开发者提升RAG检索精准度和回答质量。为什么需要query优化RAG的核心逻辑是“检索精准信息生成高质量回答”而检索环节的效率与精度直接决定了RAG的最终效果——若用户输入的原始query存在模糊性、简洁性不足、意图表达不明确等问题会导致检索系统无法匹配到最相关的文档进而让生成的回答出现偏差、片面甚至错误。query优化作为RAG检索环节的前置核心步骤其核心价值在于将用户的原始query常为口语化、碎片化、模糊化表达转化为更贴合检索系统需求、更能精准传递用户意图的形式同时补充query的语义信息、扩展检索范围减少“检索遗漏”“匹配偏差”等问题为后续的文档检索、内容生成奠定基础。本文将聚焦query优化的核心方法从Query抽象、Query重写、Query扩展、Query分解、Query文档双扩展及端到端Query重写分解模型六个方向详细拆解每种方法的原理、适用场景并提供代码实现助力开发者快速提升RAG检索效果。 目录 1. Query 抽象Query Abstraction 1.1 Take a Step Back: 通过抽象激发大模型推理 2. Query 重写Query Rewriting 2.1 面向检索增强大模型的 Query 重写 3. Query 扩展Query Expansion 3.1 HyDE: 无需相关性标签的精确零样本稠密检索 3.2 Query2Term 系列3.2-3.4 3.5 Query2Doc 系列3.5-3.6 3.7 MILL: 大模型互证零样本查询扩展 4. Query 分解Query Decomposition 4.1 Plan-and-Solve: 改进零样本思维链推理 5. Query 扩展 Document 扩展 5.1 TCDE: 面向检索的主题中心化双向扩展 6. 端到端 Query 重写 分解模型 6.1 RQ-RAG: 面向检索增强生成的查询优化学习01—Query抽象Query AbstractionQuery抽象Query Abstraction的核心逻辑是提炼查询的基本意图和核心概念形成高层次表示在保留本质含义的同时去除具体细节从而提供对事实需求的更广泛视角增强检索的灵活性和准确性。Take a Step Back: Evoking Reasoning via Abstraction in Large Language Models2024 ICLR来自谷歌DeepMind团队论文地址 https://arxiv.org/pdf/2310.06117v2方法简介Step-Back Prompting后退式提示的核心逻辑是跳出具体query的局限先抽象出更通用的核心问题再基于抽象问题进行检索与推理。本质是通过抽象化引导LLM进行深层推理解决原始query过于具体、语义范围过窄导致检索不到相关文档的问题。与传统query优化不同Step-Back Prompting不直接修改原始query而是通过提示词让LLM生成一个“后退一步”的抽象问题例如原始query为“如何用PyTorch实现RAG的query扩展”抽象问题可为“RAG中query扩展的常用实现方法及工具”再将抽象问题与原始query结合进行检索既保证检索的广度又不丢失原始query的具体需求。适用场景原始query过于具体、针对性过强导致检索结果过少query涉及专业领域细节需先明确通用逻辑再聚焦具体问题。代码实现from openai import OpenAI02—Query 重写Query RewritingQuery Rewriting查询重写是最基础、最常用的query优化方法核心逻辑是在不改变用户原始意图的前提下通过修改query的表述形式如修正歧义、补充缺失信息、优化句式、替换同义词让query更符合检索系统的匹配规则提升检索相关性。Query Rewriting for Retrieval-Augmented Large Language Models2023 EMNLP来自微软亚院论文地址 https://arxiv.org/pdf/2305.14283方法简介与Query扩展不同Query重写不增加新的语义信息仅对原始query进行“优化调整”——例如将口语化的“RAG咋优化query”重写为“如何优化RAG中的query以提升检索效果”将模糊的“RAG查询方法”重写为“RAG系统中query优化的常用方法及实现”。一种直接且有效的方式是利用大语言模型来重写查询仅通过提示词结合few-shot方式即可引导LLM完成重写适用于大多数基础RAG场景尤其适合原始query存在口语化、模糊化、歧义化的情况。这种方式核心优势是简单易落地无需复杂的模型训练。但完全依赖冻结的大语言模型也存在一些缺陷尤其是垂直领域推理错误或无效搜索会影响生成模型性能另一方面检索到的知识有时也可能误导语言模型导致其性能下降。这篇论文提出可训练的方案引入一个小型可训练语言模型作为重写器rewriter通过强化学习训练利用大语言模型阅读器的反馈信号进行优化。这种方式可能更适配垂直领域但对于训练数据的收集和整理非常关键。适用场景原始query口语化、歧义化query表述不规范、不完整检索系统对query的句式、用词有特定要求。代码实现from openai import OpenAI03—Query扩展Query ExpansionQuery扩展Query Expansion, QE是提升RAG检索精度的核心方法之一核心逻辑是在原始query的基础上补充与核心意图相关的语义信息如关键词、短语、段落扩大检索范围解决原始query过于简洁、语义信息不足导致的检索遗漏问题。在详细介绍之前先总结下Query扩展中经典方法的优劣在实际应用时针对性设计将伪相关反馈文档和小样本示例作为提示词信息并非必然能带来性能提升仅通过简单的提示词设计难以实现查询扩展任务与特定语料库的有效适配融合型查询扩展方法的性能通常优于基础的基于大语言模型的查询扩展方法过多的伪相关反馈文档数量通常会为查询扩展引入更多干扰信息LLM-Based生成文档能为识别真实标签段落提供更多有效信息能够提升查询与真实相关文档的匹配度。在拼接query和文档时为了query信息不被淹没将原始query*5再拼接段落往往效果更好。以下将详细拆解主流的Query扩展方法包括零样本、小样本、伪相关反馈PRF等变体覆盖不同场景下的落地需求。HyDEPrecise Zero-Shot Dense Retrieval without Relevance Labels2023 ACL来自卡内基梅隆大学、滑铁卢大学等论文地址https://arxiv.org/pdf/2212.10496方法简介HyDEHypothetical Document Embedding假设文档嵌入是一种零样本密集检索的Query扩展方法核心逻辑是不直接扩展query而是通过LLM生成一个“假设性文档”即基于原始query生成一段可能的、相关的文档内容再将该假设性文档的嵌入向量作为检索向量替代原始query的嵌入向量进行检索。其核心优势在于无需任何标注数据零样本通过假设性文档补充query的语义上下文解决原始query简洁、模糊导致的嵌入向量表达不足问题尤其适合密集检索场景如DPR、Contriever等检索模型。与Query2Doc不同HyDE生成的假设性文档更侧重“模拟真实相关文档的结构和内容”而非单纯补充query语义因此能更好地匹配检索系统中的真实文档分布。适用场景零样本场景无标注数据密集检索模型原始query简洁、语义模糊无法直接生成有效嵌入向量。代码实现from openai import OpenAIQuery2Term方法简介Query2Term 是基于大语言模型LLM的零样本查询扩展方法核心逻辑是直接通过简洁提示词如“为给定查询撰写相关关键词”指导 LLM在无额外上下文或示例的情况下生成与原始查询相关的离散关键词再将这些关键词补充至原始查询中实现查询扩展以提升下游检索性能。该方法的核心优势是轻量、易落地无需训练仅通过简单提示词即可生成相关关键词适用于大多数基础RAG场景尤其适合原始query简洁、关键词不明确的情况。生成的关键词可直接与原始query拼接或作为检索的补充条件提升检索的覆盖率。代码实现from openai import OpenAIQuery2Term-FS方法简介Query2Term-FS 是 Query2Term 的小样本变体核心逻辑是在 Query2Term 的基础提示词中补充多组“查询-关键词”示例作为上下文如“查询咖啡 关键词烘焙、阿拉比卡豆、风味”通过小样本示范引导 LLM 更精准地生成与原始查询匹配的相关关键词进而完成查询扩展。代码实现from openai import OpenAIQuery2Term-PRF方法简介Query2Term-PRF 是 Query2Term 的伪相关反馈融合变体核心逻辑是在 Query2Term 的提示词中嵌入原始查询检索得到的排名靠前的伪相关反馈文档如 BM25 检索的 Top-K 文档以这些文档作为领域上下文指导 LLM 生成相关关键词结合 LLM 通用知识与语料库特异性信息实现查询扩展。代码实现from openai import OpenAIQuery2Doc: Query Expansion with Large Language Models2023 EMNLP来自微软论文地址 https://arxiv.org/pdf/2303.07678方法简介Query2Doc 是基于大语言模型LLM的零样本查询扩展方法核心逻辑是通过无样本或小样本提示驱动大语言模型生成以查询为条件的伪文档并将伪文档与原始查询拼接以丰富的上下文信息补充原始查询解决简短或模糊查询意图表达不足的问题提升下游检索性能。与Query2Term生成关键词不同Query2Doc生成的是完整段落能更全面地覆盖query的语义意图尤其适合原始query过于简短、模糊无法通过关键词补充完整语义的场景。生成的段落可与原始query拼接或作为检索的辅助条件提升检索的相关性。实践来看Query2Doc方法的性能优于Query2Term系列方法核心原因在于Query2Doc生成的文档包含更丰富的上下文信息而Query2Term系列方法仅依赖离散的关键词难以全面捕捉用户的搜索意图。代码实现from openai import OpenAIQuery2Doc-PRF方法简介Query2Doc-PRF 是基于大语言模型LLM的查询扩展方法变体核心逻辑是在 Query2Doc 基础上融合伪相关反馈PRF文档先通过原始查询检索得到排名靠前的伪相关反馈文档如 BM25 检索的 Top-K 文档再将这些文档作为上下文信息嵌入提示词指导 LLM 生成用于查询扩展的相关段落最终通过生成的段落扩展原始查询提升下游检索性能。该方法结合了Query2Doc的上下文补充优势和PRF的领域适配优势生成的段落不仅能补充原始query的语义信息还能贴合当前语料库的特性避免生成与语料库无关的内容尤其适合领域性强、语料库特性明显的RAG系统。代码实现from openai import OpenAIMILL: Mutual Verification with Large Language Models for Zero-Shot Query Expansion2024 NAACL来自香港城市大学与百度论文地址https://aclanthology.org/2024.naacl-long.138.pdf方法简介传统查询扩展分为两类缺陷检索式方法如 PRF原始查询简短 / 模糊时检索的伪相关文档易偏离真实搜索意图生成式方法如 Query2Doc/Query2Term大语言模型易生成脱离目标语料库的域外信息且缺乏语料适配性。MILL 的核心逻辑是融合生成与检索的优势通过互验证实现双向过滤降噪整体分为两个阶段上下文文档构建设计QQDQuery-Query-Document提示词驱动 LLM 以零样本推理能力将原始查询分解为多个子查询并为每个子查询生成对应的上下文文档提升生成内容的多样性和搜索意图覆盖率同时通过传统检索方法如 BM25获取伪相关PRF文档得到生成 / 检索两类上下文文档集。互验证筛选利用稠密向量编码器将两类文档向量化通过余弦相似度计算生成文档与检索文档的语义相关性双向过滤噪声过滤生成文档保留与检索文档语义对齐的生成内容解决 LLM 生成的域外信息问题过滤检索文档保留与生成文档更贴合真实搜索意图语义匹配的检索内容解决 PRF 文档的意图偏离问题。最终查询扩展将筛选后的高质量生成 / 检索文档与原始查询重复 5 次以强调核心拼接形成扩展查询用于下游检索。代码实现import openai04—Query分解Query DecompositionQuery分解Query Decomposition, QD是针对复杂query的核心优化方法核心逻辑是将一个复杂的、多意图的原始query分解为多个简单的、单一意图的子query再分别对每个子query进行检索最后将所有子query的检索结果整合为后续生成回答提供更全面、更精准的信息。复杂query如“RAG中query优化的常用方法有哪些各自的适用场景是什么”往往包含多个子意图若直接检索容易导致检索结果片面无法覆盖所有子意图而通过Query分解将其拆分为“RAG中query优化的常用方法”“RAG中各query优化方法的适用场景”两个子query分别检索后整合能显著提升检索的全面性。Plan-and-Solve Prompting: Improving Zero-Shot Chain-of-Thought Reasoning by Large Language Models2023 ACL来自新加坡管理大学、西南交通大学等论文地址https://arxiv.org/pdf/2305.04091方法简介Plan-and-Solve Prompting计划-解决提示是一种基于思维链CoT的Query分解方法核心逻辑是通过提示词引导LLM先“计划”分解复杂query为子query再“解决”对每个子query进行检索/推理本质是将复杂query的处理过程拆解为“分解-检索-整合”三步提升复杂query的检索与推理效果。该方法的核心优势是零样本可落地无需训练仅通过提示词即可引导LLM完成Query分解同时能处理多意图、跨领域的复杂query尤其适合RAG中复杂用户需求的场景。与传统Query分解不同Plan-and-Solve Prompting会生成明确的分解计划确保子query不遗漏、不重复且与原始query的核心意图一致。适用场景复杂query多意图、跨领域零样本场景需要明确分解逻辑的Query优化需求。代码实现from openai import OpenAI05—Query扩展 Document扩展传统的query优化仅关注query本身的调整而Query扩展Document扩展双扩展则是同时对query和文档进行优化通过双向补充语义信息进一步提升检索的相关性和覆盖率尤其适合语料库文档语义不唯一、语义不明确、query意图模糊的场景。TCDE: Topic-Centric Dual Expansion of Queries and Documents with Large Language Models for Information Retrieval论文地址https://arxiv.org/pdf/2512.17164方法简介TCDETopic-Centric Dual Expansion主题中心双扩展是面向信息检索的主题中心式双端扩展方法核心是基于大语言模型LLMs同时对查询Query和文档Document进行主题中心的扩展解决传统单端扩展仅查 / 仅文档导致的语义错位问题通过构建查询与文档间的语义桥梁提升稀疏 / 稠密检索的性能且为无训练开销的框架可直接对接现有检索模型。区别于传统仅做查询扩展QE或文档扩展DE的非对称设计TCDE 采用对称的双端主题中心扩展对查询提取潜在子主题并生成主题伪文档对文档提炼核心主题句让扩展后的查询和文档在词汇层和语义层实现双重对齐既避免单端扩展的语义漂移又强化二者的主题关联性。两大核心模块主题中心式查询扩展TQE引导 LLM 识别原始查询中的多个不同子主题为每个子主题生成聚焦的伪文档将原始查询重复多次保留核心意图后与生成的主题伪文档拼接得到扩展查询。主题中心式文档扩展TDE针对原始文档引导 LLM 提取核心主题并生成简洁的主题句而非生成冗余内容避免主题漂移将主题句直接拼接在原始文档后得到扩展文档。代码实现from openai import OpenAI06—端到端Query重写分解模型前面几个方法几乎都是基于通用LLM结合提示词来实现对于有私有化部署需求的场景下面介绍一个Query重写分解模型方法。RQ-RAG: Learning to Refine Queries for Retrieval Augmented Generation2024 COLM来自香港科技大学等论文地址https://arxiv.org/pdf/2404.00610方法简介RQ-RAGLearning to Refine Queries for Retrieval Augmented Generation核心解决传统 RAG 对模糊 / 复杂查询处理不足、检索上下文无关、多跳问答能力弱的问题使其能根据查询类型动态调整优化策略。通过端到端训练 7B 参数的 Llama2 模型让模型学会按需检索、查询重写、查询分解、查询消歧的显式查询优化能力提升检索相关性和回答准确性。核心特性如下动态查询优化模型可根据查询类型自主决策 —— 简单查询直接回答按需检索、复杂多跳查询分解为子查询、模糊查询消歧并重写为精准检索查询解决传统 RAG 直接使用原始查询检索的局限性。无外部模型的轨迹选择推理时采用树解码策略生成多轮查询优化轨迹设计困惑度PPL、置信度、集成投票三种轨迹选择方法无需更大规模 LLM 辅助评估轻量化且高效。RQ-RAG 的核心流程为输入原始查询→模型判断检索必要性→查询优化重写 / 分解 / 消歧→检索相关上下文→多轨迹选择→生成最终答案整体架构兼容现有 RAG 系统仅需在检索前增加查询优化模块。代码实现import torch最后读到这里啦若觉得这篇文章对你有启发不妨随手点个赞、戳个在看再转发给身边有需要的朋友呀想第一时间 get 更多 AI 前沿论文解读、技术干货可以给公众号设个星标⭐ 这样就不会错过推送啦更大规模 LLM 辅助评估轻量化且高效。RQ-RAG 的核心流程为输入原始查询→模型判断检索必要性→查询优化重写 / 分解 / 消歧→检索相关上下文→多轨迹选择→生成最终答案整体架构兼容现有 RAG 系统仅需在检索前增加查询优化模块。[外链图片转存中…(img-SGbDzeDM-1774105846536)]代码实现import torch如何学习大模型 AI 由于新岗位的生产效率要优于被取代岗位的生产效率所以实际上整个社会的生产效率是提升的。但是具体到个人只能说是“最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线互联网企业工作十余年里指导过不少同行后辈。帮助很多人得到了学习和成长。我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限很多互联网行业朋友无法获得正确的资料得到学习提升故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。第一阶段10天初阶应用该阶段让大家对大模型 AI有一个最前沿的认识对大模型 AI 的理解超过 95% 的人可以在相关讨论时发表高级、不跟风、又接地气的见解别人只会和 AI 聊天而你能调教 AI并能用代码将大模型和业务衔接。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用该阶段我们正式进入大模型 AI 进阶实战学习学会构造私有知识库扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架抓住最新的技术进展适合 Python 和 JavaScript 程序员。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…第三阶段30天模型训练恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…第四阶段20天商业闭环对全球大模型从性能、吞吐量、成本等方面有一定的认知可以在云端和本地等多种环境下部署大模型找到适合自己的项目/创业方向做一名被 AI 武装的产品经理。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…学习是一个过程只要学习就会有挑战。天道酬勤你越努力就会成为越优秀的自己。如果你能在15天内完成所有的任务那你堪称天才。然而如果你能完成 60-70% 的内容你就已经开始具备成为一名大模型 AI 的正确特征了。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】