RAG 查询优化简介
检索增强生成(RAG)系统因其能高效地检索信息并生成内容而备受关注。然而,要想让 RAG 系统的表现更上一层楼,查询优化技术显得尤为重要,尤其是在使用大型语言模型(LLM)时。通过扩展、分解、消歧和抽象等方法优化查询,可以显著提升 LLM 在 RAG 系统中的工作效率和准确性。
这些技术通过优化用户的初始查询,解决了语义模糊、复杂需求以及查询和目标文档之间相关性差异等问题,使 RAG 系统在处理知识密集型任务时表现更加出色。

1. 查询扩展
查询扩展技术能够提升信息检索和生成内容的准确性和相关性。主要分为内部扩展和外部扩展两种策略。
内部扩展
利用系统内部已有的数据(如来自 LLM 或查询本身的信息)来增强查询效果。
- GenRead:通过生成相关的文档片段来补充查询内容。它利用系统内部的信息优化查询,从而提高检索和生成响应的质量。例如,当用户查询'气候变化的影响'时,系统会生成包含'全球变暖'、'极端天气'等相关术语的上下文文档,丰富查询内容。
- Query2Doc:使用小样本提示来生成伪文档,为查询提供额外的背景信息。例如,针对'如何烤蛋糕'的查询,LLM 会生成包含'面粉'、'鸡蛋'等关键词的伪文档,帮助系统检索更具体的上下文。
- HyDE(假设文档嵌入):将查询与假设文档的嵌入信息结合,提升检索准确性。系统先创建一个假设答案(如'做蛋糕需要准备面粉、鸡蛋和糖'),根据这个答案进行相似性搜索,找到相关文档,最后使用优化后的查询获得精确结果。
外部扩展
借助外部数据源(如知识库和网页)为查询添加上下文。
- LameR(基于潜在答案的查询扩展):利用特定领域参考的外部候选答案优化查询。例如,收集'机器学习在医疗保健中的应用'的候选答案来扩展查询。
- CSQE(语料库源查询扩展):从语料库中识别并提取关键句子,增强查询相关性。系统先检索初始文档,找出相关句子创建更详细的查询。
- FLARE(未来语言和检索增强):预测查询过程中的下一步,迭代检索相关信息。例如,预测用户接下来可能问'准备蛋糕原料的步骤是什么?',并根据预测进行检索。
- MUGI(多参考引导查询扩展):使用多个外部引用来增强用户查询的广度和深度。例如,针对'气候变化对北极熊有何影响?'的查询,整合生态研究、气候报告和保护论文中的信息,形成更全面的问题。
2. 查询分解
查询分解技术主要用于处理 RAG 系统中的复杂用户查询。模型可以将复杂查询拆解成更简单的子查询,从而更精准地收集信息。
- DSP 框架(分解、搜索、解析):把复杂查询拆解成更小、更容易处理的步骤,并通过管道式方法逐步解决。包括拆分子查询、检索相关信息、推理整合答案。
- 从少到多和计划并解决:将复杂查询按顺序分解成可管理的子查询。'从少到多'从少量例子开始,'计划并解决'则是先制定计划再执行子任务。
- 自我询问:解决子查询之间的'组合差距',通过整合它们的答案提高整体响应准确性。识别合并答案时的难点,逐步整合答案。
- ReAct:将多轮交互中的推理和执行结合起来,根据前一步反馈调整推理过程。适用于需要多轮推理的查询。
- HiRAG(分层 RAG):采用分层策略,将查询分解为多个子查询,利用外部知识和推理链解决每个步骤。适合处理复杂的多维查询。
- RichRAG 和 ConTReGen:采用多层次方法探索查询,从不同角度分析并将结果组织成树状结构,生成全面答复。
- EAR(集成增强检索):集成多种查询变体并进行排序,确定最适合信息检索的变体。使用集成学习策略,通过对结果重新排序提高检索系统有效性。
- COK(知识组合):将来自不同来源或领域的信息融合在一起解决复杂问题。涉及将专业知识库与一般搜索内容整合,提高生成响应的准确性和深度。



