【RAG 系列·第 04 篇】进阶优化:查询改写·重排序·评估——RAG 优化全攻略

系列回顾:第 01 篇我们绘制了 RAG 的全景图,第 02 篇我们拆解了索引·检索·生成三大组件,第 03 篇我们对比了四大框架。本篇进入 RAG 最关键的领域:进阶优化——怎么让 RAG 从"能用"变成"好用"?Naive RAG 的三大痛点:检索不准(返回不相关文档)、生成不忠(忽略检索结果自己编)、上下文不够(信息缺失或冗余)。Advanced RAG 的优化思路:查询优化(帮用户把问题问对)、检索优化(粗筛+精排+补充)、评估驱动(用数据说话,不是用感觉说话)。查询改写让模糊查询变清晰,HyDE 让查询和文档在同一语义空间,多查询扩展覆盖面,Step-Back 后退到抽象概念,查询分解拆分复杂问题。Cross-Encoder 重排序精雕细琢,Cohere Rerank 开箱即用,元数据过滤缩小范围,父子分块兼顾精度与上下文。RAGAS 六大评估指标让优化有据可依。今天,我们从查询优化、检索优化到评估体系,彻底拆解 RAG 的进阶优化全攻略。


📑 文章目录


🔍 一、查询优化:帮用户把问题问对

在这里插入图片描述

1.1 为什么查询优化是第一步?

RAG 的黄金法则:垃圾查询 → 垃圾检索 → 垃圾生成。用户的问题往往不完美——太短(“RAG 怎么样?”)、太模糊(“那个方法好不好?”)、太具体(“2024 年 3 月发布的关于 RAG 的论文中第 3 节的实验结果是什么?”)、太复杂(“RAG 和微调哪个好?各自的优缺点是什么?在什么场景下选哪个?”)。这些不完美的查询直接送入检索系统,结果可想而知。

查询优化的核心思想:在检索之前,先用 LLM 改进查询——让查询更清晰、更完整、更匹配文档的表述方式。这就像去图书馆查资料——如果你问图书管理员"那个东西怎么样",他不知道你要什么;但如果你问"检索增强生成(RAG)技术的最新进展和优化方法",他就能精准找到。

1.2 六大查询优化策略

查询改写(Query Rewriting)。最基础的优化——让 LLM 重写用户的查询,使其更清晰、更具体。用户问"RAG 怎么样?“,改写为"检索增强生成(RAG)技术的核心原理、优势和局限性是什么?”。查询改写的优势:简单、成本低(只需一次 LLM 调用)、效果稳定。局限:改写质量依赖 LLM,可能偏离原意。

HyDE(Hypothetical Document Embeddings, Gao et al., 2023)。核心思想:让 LLM 先生成一个假设性答案,再用假设答案的嵌入去检索。为什么?因为答案和文档在语义空间中更接近——用户问"RAG 怎么用?",LLM 生成一个关于 RAG 用法的假设答案,这个假设答案的语义向量与真实文档的语义向量很接近,检索效果远好于用原始查询检索。

HyDE 的工作流:用户查询 → LLM 生成假设答案 → 假设答案嵌入 → 向量检索 → 返回真实文档。HyDE 的优势:跨越查询-文档语义鸿沟——用户用"问"的语言,文档用"答"的语言,HyDE 将"问"翻译为"答"再检索。局限:假设答案可能误导——如果 LLM 对领域不熟悉,生成的假设答案可能完全错误,导致检索到不相关的文档。

多查询(Multi-Query)。核心思想:一个查询可能遗漏相关信息,生成多个不同角度的查询,合并检索结果。用户问"RAG 的优化方法",多查询生成:“RAG 检索优化策略”、“RAG 生成质量提升方法”、“RAG 分块最佳实践”——三个角度覆盖更全面。

多查询的工作流:用户查询 → LLM 生成 3-5 个变体查询 → 每个查询独立检索 → 合并去重 → 返回 Top-K。多查询的优势:覆盖面广——不同角度的查询可能检索到不同方面的文档。局限:成本高——3-5 倍的检索和 LLM 调用,延迟也相应增加。

Step-Back Prompting(Zheng et al., 2024)。核心思想:当查询太具体时,后退到更抽象的概念,检索背景知识。用户问"2024 年 RAG 的重排序方法有哪些",Step-Back 生成"RAG 检索优化的通用方法有哪些"——更抽象的查询能检索到更全面的背景知识,再结合具体查询的结果,生成更完整的答案。

Step-Back 的工作流:用户查询 → LLM 生成抽象查询 → 分别检索具体和抽象查询 → 合并结果 → 生成答案。Step-Back 的优势:补充背景知识——具体查询可能遗漏基础概念和原理。局限:抽象查询可能引入不相关的背景信息。

查询分解(Query Decomposition)。核心思想:将复杂查询拆分为多个子问题,分别检索和回答,再综合。用户问"RAG 和微调哪个好?各自的优缺点是什么?在什么场景下选哪个?",分解为三个子问题:“RAG 的优缺点”、“微调的优缺点”、“RAG vs 微调的选型建议”。

查询分解的工作流:用户查询 → LLM 拆分为子问题 → 每个子问题独立检索和生成 → 综合子答案 → 生成最终答案。查询分解的优势:处理复杂问题——多步推理和多方面对比。局限:成本最高——N 个子问题 × 检索 + 生成,延迟和成本显著增加。

查询澄清(Query Clarification)。核心思想:当查询模糊时,先追问澄清,再检索。用户问"那个方法怎么样?“,系统追问"您指的是哪个方法?RAG 还是微调?”,用户回答后,再进行精准检索。查询澄清适用于对话式 RAG 系统——通过多轮交互理解用户真实意图。

1.3 查询优化策略选择

不同场景选择不同策略:查询不清晰 → 查询改写(最基础,必做);查询-文档语义鸿沟大 → HyDE(跨越鸿沟);需要全面覆盖 → 多查询(多角度);需要背景知识 → Step-Back(后退抽象);复杂多步问题 → 查询分解(拆分子问题);模糊查询 → 查询澄清(交互追问)。

最佳实践:查询改写(基础)+ HyDE(进阶)+ 查询分解(复杂问题)。不需要全部使用——根据场景选择最合适的策略。查询改写是性价比最高的优化,几乎零成本就能提升检索质量。


⚙️ 二、检索优化:粗筛 + 精排 + 补充

在这里插入图片描述

2.1 重排序:从 Top-100 到 Top-10 的精雕细琢

第 02 篇我们介绍了混合检索(稀疏+稠密),这 … 评估体系:用数据说话

3.1 为什么评估是优化的前提?

在这里插入图片描述

没有评估的优化是盲目的——你改了分块策略,检索质量变好了还是变差了?你加了重排序,生成质量提升了多少?你换了嵌入模型,忠实性有没有改善?如果没有量化指标,你只能"感觉不错"——但感觉不靠谱。

RAGAS(Retrieval Augmented Generation Assessment, Es et al., 2023)是 RAG 评估的事实标准——提供六大核心指标,覆盖检索和生成的各个维度。RAGAS 的核心思想:用 LLM 评估 RAG 系统——用 GPT-4 等强模型判断答案是否忠实、是否相关、检索是否精准。

3.2 六大评估指标

忠实性(Faithfulness)——最重要的指标。衡量答案是否基于检索文档,有没有编造。计算方法:将答案拆分为原子陈述,检查每个陈述是否可由检索文档支持。忠实性 = 支持的陈述数 / 总陈述数。忠实性低意味着 LLM 在编造——这是 RAG 最需要避免的问题。

答案相关性(Answer Relevancy)。衡量答案是否回答了问题,有没有跑题。计算方法:从答案反向生成问题,计算原问题与生成问题的语义相似度。相关性低意味着 LLM 在跑题——答非所问。

上下文精确率(Context Precision)。衡量检索到的文档中有多少是相关的——检索精度。精确率低意味着检索噪音大——返回了很多不相关的文档,干扰生成。

上下文召回率(Context Recall)。衡量所有相关文档中,检索到了多少——检索完整性。召回率低意味着检索遗漏多——有些重要文档没检索到,信息不完整。

上下文有害性(Context Harmfulness)。衡量检索文档中是否包含有害/偏见/过时信息。有害性高意味着检索到了危险内容——在生产环境中可能导致严重后果。

方面评价(Aspect Critique)。多维度综合评价:覆盖性、实用性、完整性、准确性、时效性等。用 LLM 对每个维度打分 1-5,综合评价 RAG 系统的整体质量。

3.3 评估驱动的优化闭环

RAG 优化的正确姿势:评估驱动——建立基线 → 提出改进 → 评估改进 → 上线或回滚。

第一步:建立基线。用 RAGAS 评估当前 Naive RAG 系统的六大指标,记录基线值。例如:忠实性 0.65、答案相关性 0.72、上下文精确率 0.55、上下文召回率 0.60。

第二步:提出改进。根据基线指标识别瓶颈——忠实性低?加忠实性 Prompt 和引用机制。上下文精确率低?加重排序。上下文召回率低?加多查询或查询改写。

第三步:评估改进。用 RAGAS 重新评估改进后的系统,对比前后指标。例如:加重排序后,上下文精确率从 0.55 提升到 0.78——改进有效。

第四步:上线或回滚。数据驱动决策——指标提升则上线,指标下降则回滚并尝试其他改进。


📊 总结对比

查询优化策略

策略 核心思想 检索次数 成本 适用场景
查询改写 重写查询 1x 查询不清晰
HyDE 假设答案检索 1x 查询-文档鸿沟
多查询 扩展多角度 3-5x 需要全面覆盖
Step-Back 后退到抽象 1-2x 需要背景知识
查询分解 拆分子问题 3-5x 复杂多步问题
查询澄清 追问澄清 1x 模糊查询

检索优化策略

策略 优化目标 实现难度 效果 推荐度
Cross-Encoder 排序精度 ★★★★★
Cohere Rerank 排序精度 ★★★★★
ColBERT 精度+速度 ★★★★
元数据过滤 检索范围 ★★★★★
父子分块 精度+上下文 ★★★★
上下文压缩 Token效率 ★★★

评估指标

指标 评估对象 核心问题 优先级
忠实性 生成 有没有编造? 最高
答案相关性 生成 有没有跑题?
上下文精确率 检索 检索准不准?
上下文召回率 检索 检索全不全?
有害性 检索+生成 安不安全?
方面评价 整体 综合好不好?

一句话总结

RAG 进阶优化三大维度:查询优化(帮用户把问题问对——查询改写最基础必做/HyDE跨越查询-文档语义鸿沟/多查询扩展覆盖面/Step-Back后退到抽象补充背景/查询分解拆分复杂问题/查询澄清交互追问。最佳实践=查询改写+HyDE+查询分解)、检索优化(粗筛+精排+补充——粗筛用混合检索+元数据过滤Top-100/精排用Cross-Encoder或Cohere Rerank Top-10/补充用父子分块完整上下文+上下文压缩节省Token。最佳实践=混合检索+元数据过滤+Cohere Rerank+父子分块)、评估体系(用数据说话——RAGAS六大指标:忠实性最重要防幻觉/答案相关性防跑题/上下文精确率衡量检索精度/上下文召回率衡量检索完整性/有害性安全底线/方面评价综合评估。优化闭环:建立基线→提出改进→评估改进→上线或回滚。没有评估就没有优化——RAGAS是RAG优化的基础设施)。


参考链接

系列预告:第 05 篇将深入真实世界应用——企业知识库、智能客服、文档问答、RAG 在生产中的落地之路。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐