【RAG 系列·第 04 篇】进阶优化:查询改写·重排序·评估——RAG 优化全攻略
【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优化的基础设施)。
参考链接:
- HyDE (Gao et al., 2023)
- Step-Back Prompting (Zheng et al., 2024)
- RAGAS (Es et al., 2023)
- Self-RAG (Asai et al., 2023)
- Cohere Rerank
- ColBERT (Khattab & Zaharia, 2020)
系列预告:第 05 篇将深入真实世界应用——企业知识库、智能客服、文档问答、RAG 在生产中的落地之路。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)