RAG 查询优化技术详解:扩展、分解、消歧与抽象
引言
检索增强生成(Retrieval-Augmented Generation, RAG)系统的有效性高度依赖于查询优化(Query Optimization, QO)技术。在实际应用中,用户的原始查询往往存在语义模糊、信息缺失或结构复杂等问题,直接用于检索通常无法获得高质量的相关文档。
虽然 Query 改写是常见的优化手段,但它只是整个查询优化体系中的一环。为了构建更精准的大模型应用,需要采用更全面的技术策略。本文将详细解析腾讯最新 QO 技术研究综述中提出的四大类 Query 优化技术:扩展、分解、消歧和抽象,并探讨其应用场景与代表性方案。
一、查询优化(QO)的核心价值
查询优化旨在改进用户的原始查询,以解决以下挑战:
- 模糊的语义:用户输入可能缺乏关键限定词。
- 复杂的要求:问题涉及多跳推理或跨文档整合。
- 相关性差异:查询词汇与目标文档中的术语不匹配。
通过有效的 QO,可以显著提升检索召回率(Recall)和精确率(Precision),进而提高大模型生成答案的质量。
二、Query 优化详细分类
1. Query Expansion(查询扩展)
查询扩展技术对于提高检索增强生成的性能至关重要,尤其是当与大型语言模型(LLMs)集成时。它通过增加查询的词汇量或概念覆盖范围来提升检索效果。根据知识来源的不同,可分为内部扩展和外部扩展。
Internal Expansion(内部扩展)
- 场景:主要针对信息时效性较低的查询,这些信息通常包含在 LLMs 的预训练阶段内嵌入的知识中。
- 原理:利用 LLM 已有的参数化知识来补充查询上下文。
- 案例:原始查询'2020 年夏季奥运会将在何处举行?'可以通过 LLM 生成的相关额外信息进行优化,例如补充'东京'、'日本'等隐含实体。
External Expansion(外部扩展)
- 场景:主要针对通常需要从知识库或网络中搜索事实的高度时效性查询。
- 原理:通过从外部数据源(如搜索引擎、向量数据库)检索相关信息来扩展查询。
- 案例:原始查询'2024 年夏季奥运会将在何处举行?'可以通过从知识库检索的相关信息(如官方公告、新闻)进行优化,确保信息的实时性和准确性。
2. Question Decomposition(问题分解)
对于复杂查询,简单地使用原始查询进行搜索通常无法检索到足够的信息。因此,LLMs 需要先将这些查询分解成更简单、可回答的子查询,然后搜索与这些子组件相关的信息。通过整合这些子查询的响应,LLMs 能够构建对原始查询的全面响应。
- 场景:顺序分解主要针对需要检索多个事实以形成全面答案的查询。
- 案例 A:原始查询'在 2024 年夏季奥运会上,中国在乒乓球或羽毛球上赢得的奖牌更多?'可以优化为两个子查询:
- '中国在 2024 年奥运会乒乓球上赢得了多少奖牌?'
- '中国在 2024 年奥运会羽毛球上赢得了多少奖牌?'
- 案例 B:原始查询'2024 年奥运会男子单打乒乓球金牌得主的出生日期是什么时候?'可以优化为两个子查询:
- '2024 年夏季奥运会男子单打乒乓球冠军是谁?'
- '该冠军的出生日期是什么时候?'
3. Query Disambiguation(查询消歧)
查询消歧旨在识别和消除复杂查询中的歧义,确保查询是明确的。这涉及到确定查询中可能被多种方式解释的元素,并细化查询以确保单一、精确的解释。
- 场景:主要针对模糊查询或有多种潜在解释的查询。它专注于澄清和细化用户查询,以确保准确理解并检索相关信息。
- 案例:例如,原始查询'2024 年夏季奥运会乒乓球单打冠军是谁?'可能指代男子或女子单打冠军。通过消歧,可以将其分解为两个子查询:
- '2024 年夏季奥运会女子乒乓球单打冠军是谁?'
- '2024 年夏季奥运会男子乒乓球单打冠军是谁?'
4. Query Abstraction(查询抽象)
查询抽象旨在提供对事实需求的更广泛视角,可能导致更多样化和全面的结果。这涉及到识别和提炼查询的基本意图和核心概念元素,然后创建一个高层次的表示,捕捉本质含义的同时去除具体细节。
- 场景:主要针对不仅需要理解事实,还需要理解并应用与数据上下文相关的领域特定推理的查询。
- 案例:例如,原始查询'中国举办过多少次奥运会?'可以被抽象为'奥运会的举办历史'。这种抽象提供了一个更广泛的背景,有助于理解和回答查询,甚至能发现用户未明确表达但相关的历史信息。
三、查询优化核心技术分类树
为了更清晰地理解不同技术之间的关系及其在查询优化过程中的作用,可以参考以下分类树结构:
-
Query Expansion(查询扩展)
- 内部扩展:包括 GENREAD、GUIDECQR、QUERY2DOC 等技术。它们通过生成与查询相关的文档或利用 LLMs 已有的知识来扩展查询。
- 外部扩展:包括 MUGI、KNOWLEDGPT 等技术。它们通过从外部数据源检索信息来扩展查询。
-
Query Decomposition(问题分解)
- 包括 RAG-STAR、PLAN×RAG、CONTREGEN 等技术。它们将复杂的多跳查询分解为更简单、可管理的子查询或任务。
-
Query Disambiguation(查询消歧)
- 包括 RSTAR、RQ-RAG、RAFT 等技术。它们旨在消除查询中的歧义,确保查询的明确性,以便更准确地检索信息。
-
Query Abstraction(查询抽象)
- 包括 SIMGRAG、COA、CRAFTING-THE-PATH 等技术。它们通过抽象查询的本质意图和核心概念,以获取更广泛和全面的结果。
四、实施建议与最佳实践
在实际工程落地中,选择合适的查询优化策略需考虑以下因素:
- 延迟与成本:复杂的分解和消歧会增加推理时间和 Token 消耗。对于实时性要求高的场景,应权衡优化深度与响应速度。
- 领域适配:通用领域的查询优化可能不如垂直领域(如医疗、法律)的专用优化有效。建议在特定领域微调优化模块。
- 评估机制:建立完善的评估体系,对比优化前后的检索准确率(Hit Rate)和最终生成质量(BLEU/ROUGE 或人工评分)。
- 混合策略:不要局限于单一技术。通常结合 Query 改写与查询扩展能获得最佳效果,而复杂问题则必须依赖问题分解。
五、参考文献
本文基于以下学术资源整理:
- A Survey of Query Optimization in Large Language Models, https://arxiv.org/pdf/2412.17558
通过深入理解并应用上述查询优化技术,开发者可以显著提升 RAG 系统的鲁棒性与实用性,更好地服务于各类智能问答与知识检索场景。

