导航

本文系统性地梳理了 RAG(Retrieval-Augmented Generation,检索增强生成)系统从基础到高级的 20 种优化方法,涵盖分块策略、检索增强、查询优化、生成质量控制等多个维度。

分块策略

1. 语义分块

核心思路:按句子级嵌入相似度切分,而非固定字符数。当相邻句子语义相似度低于阈值时在此处切块,从而保留语义完整性。

断点计算方法:

  • 百分位法(Percentile):相似度低于某百分位的位置作为断点
  • 标准差法(Standard Deviation):相似度低于「均值 − 标准差」的位置
  • 四分位距法(IQR):用四分位距检测异常低的相似度作为断点

2. 切块大小评估

核心思路:对多种切块大小(如 128、256、512 字符)分别做检索与生成,用忠实度(回复是否紧扣上下文)和相关性(是否答到点上)等指标对比,数据驱动选出最优切块参数。

  • 优势:避免拍脑袋定 chunk size,有评估依据;适合新语料或新场景的调参
  • 局限:需要标注或可自动评估的测试集,且评估有一定计算成本
  • 适用场景:上线前调参、不同领域/文档类型单独优化

13. 命题分块

核心思路:不按字符或句子切块,而是把文本拆成原子化、自包含的”命题”(一句一事实,可独立理解)。用命题做检索单元,实现更细粒度的 query–content 匹配。

  • 优势:检索粒度细,适合事实型、实体型问题;命题可复用、可组合
  • 局限:建库需对每块做命题抽取,成本高;命题过多时索引与检索开销增大
  • 适用场景:知识密集型、强调”单事实”准确性的 QA

检索增强

3. 上下文增强检索

核心思路:检索到最相关的块后,同时带上其前、后相邻块一起作为上下文,避免”孤岛片段”缺少前文/后文而导致理解不全。

  • 优势:实现简单,无需改索引;能明显改善需要前后文才能理解的内容(如列表、步骤、对比)
  • 局限:会引入与问题无关的相邻块,可能增加噪声和 token 消耗
  • 适用场景:分块较细、上下文连贯性重要的场景

4. 上下文片段标题提取(CCH)

核心思路:用 LLM 为每个文本块生成简短描述性标题,建索引时同时存「块文本嵌入」和「标题嵌入」。检索时用查询分别与文本、标题算相似度,再取平均(或加权)作为该块得分,从而多一个”主题维度”提升检索精度。

  • 优势:标题浓缩主题,对概括性、概念型查询更友好;可与现有向量检索无缝结合
  • 局限:预处理阶段要为每块调用 LLM 生成标题,成本和延迟增加
  • 适用场景:块较长、需要”主题级”匹配的知识库

7. 重排序(Reranking)

核心思路:两阶段检索——先用向量(或 BM25)快速召回一批候选文档,再用更精细的模型对「查询-文档」对打分并重排,只保留最相关的若干条送入生成。常用实现:LLM 打 0–10 分,或专用 reranker 模型(如 Cross-Encoder)。

  • 优势:在不扩大首阶段召回量的前提下显著提升 top-k 精度,减少无关上下文注入
  • 局限:第二阶段要对每条候选调用模型,延迟和成本随候选数增加
  • 适用场景:对准确率要求高、候选数可控(如 top-20 内 rerank)

8. 相关段落提取(RSE)

核心思路:不为单块打分后简单取 top-k,而是为连续块序列算”价值和”:每块价值 = 相似度 − 惩罚项,再用最大子数组(Kadane)思想找价值和最大的连续段落。这样返回的是一整段连贯文本,而不是零散块。

  • 优势:上下文连贯、边界更自然,适合需要”一整段话”才能答好的问题
  • 局限:依赖块顺序与相似度曲线质量;实现和调参(惩罚、最小长度等)略复杂
  • 适用场景:长文档、叙述性强,且希望按”段落”而非”单块”呈现

11. 自适应检索

核心思路:先对用户查询做类型分类(事实型 / 分析型 / 观点型 / 情境型),再根据类型选用不同检索策略(如事实型偏精确匹配、分析型多召回再压缩等),实现”因问施策”。

  • 优势:同一套系统可兼顾多类问题,检索更有的放矢
  • 局限:分类与各策略设计依赖领域知识;分类错误会传导到检索
  • 适用场景:混合类型问答、客服/咨询等

15. 融合检索

核心思路:向量检索(语义相似)与 BM25(词匹配)同时做,对两路分数分别 Min-Max 归一化后按 alpha 加权融合:

final_score = alpha * norm_vector + (1 - alpha) * norm_bm25

再按融合分取 top-k,语义与关键词互补,召回更稳。

16. 图RAG(Graph RAG)

核心思路:从每个文本块中抽取概念/实体,以块为节点、以共享概念 + 语义相似度为边权建知识图谱。检索时先命中部分节点,再通过图上的边扩展关联节点,从而把跨多块的相关信息一并拉取。

  • 优势:能利用”概念共现""实体关系”做关联扩展,适合概念密集、关系复杂的领域
  • 局限:建图与概念抽取成本高;图规模大时遍历与索引设计更复杂
  • 适用场景:知识图谱、领域百科、多实体关系推理

17. 分层检索RAG

核心思路:建两层索引——摘要层(如每页/每章一个摘要)和详细层(页内细粒度块)。检索时先查摘要层锁定相关页/章,再只在对应页内查详细块,从而在保证相关性的前提下缩小搜索范围、提升效率。

  • 优势:适合超长文档、十亿级规模;先筛范围再精查,延迟与算力更可控
  • 局限:摘要质量与粒度影响第一层召回;若相关分布在多页,需合理设置 k_summaries
  • 适用场景:长篇报告、书籍、法规、多章节文档

查询优化

6. 查询转换

核心思路:在检索前对用户原始查询做变换,使检索更准或更全。常用三种策略:

  • 查询重写:把模糊、口语化查询改写成更具体、更贴近文档表述的形式

  • 回退提示(Step-back):生成一个更宽泛的”背景问题”,先检索背景再结合原问题

  • 子查询分解:把多子问题的复杂查询拆成 2~4 个简单子查询,分别检索再合并

  • 优势:不改索引即可提升检索表现,尤其适合表述不规范或复杂的用户问句

  • 局限:多一次(或多次)LLM 调用,延迟与成本增加;重写/分解质量依赖 prompt

  • 适用场景:开放域问答、复杂多步问题、需要”先背景后细节”的检索

18. 假设文档嵌入(HyDE)

核心思路:用户查询往往很短,与长文档在嵌入空间里距离较远。HyDE 的做法:先用 LLM 根据问题生成一段”假设的”答案文档(风格、长度接近真实文档),再用这段假设文档的嵌入(而非原始 query 的嵌入)去检索真实文档,从而拉近 query 与 document 的表示距离。

  • 优势:能把短/抽象问句补成伪文档,大幅提升检索相关性;不用重建索引,只在检索侧增强 query
  • 局限:多一次 LLM 生成与嵌入调用;假设文档若偏离真实文档风格,可能引入噪声
  • 适用场景:短查询、知识问答、关键词匹配差的 RAG 场景

索引增强

5. 文档增强RAG(问题生成)

核心思路:为每个文本块用 LLM 生成若干”该块能回答的问题”,把「问题 + 对应块」一并写入向量库。用户查询时,既匹配块内容,也匹配这些预生成问题,从而拉近”问句”与”陈述句”的语义距离。

  • 优势:显著缓解 query(问句)与 document(陈述)之间的表述差异,提高召回
  • 局限:建库时每块要生成多条问题,成本和存储都增加;问题质量依赖模型与 prompt
  • 适用场景:FAQ、知识问答、用户常以问句形式提问的场景

14. 多模态RAG

核心思路:从 PDF 等文档中同时提取文本与图像,用视觉模型为每张图生成文本描述(caption),将「正文 + 图像描述」统一嵌入并写入同一向量库,实现”以文搜文+以文搜图”的联合检索。


后处理

9. 上下文压缩

核心思路:检索得到多块文本后,不直接全部塞给 LLM,而是先对每块做”压缩”:只保留与当前查询强相关的内容,去掉无关句子或整段,从而减少噪声、节省 token、提高生成质量。

三种压缩策略:

  • 选择性(Selective):从原文中筛选与查询相关的句子,保持原句、原序

  • 摘要(Summary):针对查询写一段只含相关信息的摘要

  • 抽取(Extraction):按查询抽取关键事实或结构化信息

  • 优势:显著减少无关上下文,降低幻觉与 token 消耗;可与任意检索方式组合

  • 局限:每块都要过一次 LLM,延迟与成本增加;过度压缩可能丢细节

  • 适用场景:检索结果偏长、噪声多,或上下文窗口紧张时


生成质量控制

12. Self-RAG

核心思路:在「检索 → 生成」全流程中插入多个反思与决策点,在运行时自适应地决定是否检索、是否重试、是否标注”无依据”。

六个关键组件:

  1. 检索决策:判断当前查询是否需要检索
  2. 文档检索:需要时做向量检索
  3. 相关性评估:评估每个检索文档与查询是否相关
  4. 回复生成:基于相关上下文生成回复
  5. 支持评估:评估回复是否被上下文充分支持
  6. 效用评估:对回复的整体实用性打 1–5 分
  • 优势:可减少无谓检索与幻觉,输出更可控、可解释
  • 局限:多次 LLM 调用,延迟与成本高;依赖各环节 prompt 设计
  • 适用场景:对准确性与可追溯性要求高的场景

系统级优化

10. 反馈回路RAG

核心思路:把用户对回复的评分/反馈纳入闭环:记录「查询–回复–评分」,用 LLM 判断历史反馈与当前查询/文档是否相关,据此动态调整文档相关性得分,并把高质量问答对写入知识库,使系统越用越准。

核心组件:反馈收集 → 相关性调整(按历史反馈修正检索分数)→ 知识积累(优质 Q&A 入向量库)

  • 优势:可持续利用真实用户信号,适合客服、知识库等有稳定反馈的场景
  • 局限:依赖高质量、足量反馈;反馈噪声或冷启动会影响调整效果
  • 适用场景:有评分/点赞/纠错等用户反馈的在线系统

19. 动态纠正RAG(CRAG)

核心思路:检索完成后先评估这批文档与 query 的相关性(如 0–1 分),再按分数区间做分支:

  • 高相关 → 只用本地文档

  • 低相关 → 放弃本地、改用网络搜索

  • 中等 → 本地 + 网络一起用

  • 优势:降低”检索到无关文档仍强行生成”的幻觉与错误;适合知识边界不固定、需时效信息的场景

  • 局限:需要可靠的相关性评估和网络搜索接口;阈值需调参

  • 适用场景:开放域问答、时效性强的场景、本地库覆盖不全时

20. 强化学习增强RAG

核心思路:把 RAG 流程看成强化学习:

  • 状态:当前 query、已选上下文、历史回复与奖励
  • 动作:重写 query、扩展/过滤上下文、生成回复
  • 奖励:如生成回复与标准答案的语义相似度

用 epsilon-greedy 等策略根据状态选动作,用奖励迭代优化,使检索与生成策略逐步变好。

  • 优势:可端到端利用标注或用户反馈优化整条管道;理论上能学到复杂策略
  • 局限:需要奖励信号(标注答案或用户反馈)、训练循环与稳定性调参
  • 适用场景:有充足标注或反馈、希望长期自动优化效果的场景

方法总结对比

编号方法优化维度核心思想
1语义分块分块基于语义相似度的智能分割
2切块大小评估分块数据驱动选择最优切块参数
3上下文增强检索检索返回匹配块及其相邻块
4上下文标题提取(CCH)检索标题+文本双维度匹配
5文档增强RAG索引预生成问题弥补语义鸿沟
6查询转换查询重写/回退/分解查询
7重排序检索两阶段:粗检索+精排序
8相关段落提取(RSE)检索最大子数组找连续最优段落
9上下文压缩后处理压缩检索结果去除噪声
10反馈回路系统用户反馈动态调整系统
11自适应检索检索按查询类型选策略
12Self-RAG生成多维度反思评估机制
13命题分块分块原子化事实陈述作为检索单元
14多模态RAG索引图文联合检索
15融合检索检索向量+BM25加权融合
16图RAG检索知识图谱关联发现
17分层检索检索摘要→详细的两级检索
18HyDE查询假设文档嵌入替代查询嵌入
19CRAG系统动态评估并纠正检索质量
20RL增强RAG系统强化学习优化全流程

优化方法选择指南

  • 分块优化:检索不够精准时,优先考虑语义分块(1)、命题分块(13)或切块大小评估(2)
  • 检索增强:融合检索(15)性价比高、易落地;图RAG(16)适合概念与关系密集的领域
  • 查询优化:HyDE(18)对短查询、抽象问句效果好;查询转换(6)适合复杂、多子问题查询
  • 后处理:重排序(7)+ 上下文压缩(9)能明显提升最终回复质量与可控性
  • 系统级:CRAG(19)适合对可靠性、时效性要求高的场景;反馈回路(10)适合有持续用户反馈的产品
  • 端到端:Self-RAG(12)与 RL 增强(20)能力最全面,实现与调参成本也更高,可按需选用

相关链接