目录
[(二)Chunk 切分策略:不是越小越好](#(二)Chunk 切分策略:不是越小越好)
[1. 基于领域知识的切分](#1. 基于领域知识的切分)
[2. 基于固定长度的切分](#2. 基于固定长度的切分)
[3. 上下文感知与语义驱动切分](#3. 上下文感知与语义驱动切分)
[(五)Embedding 与 ReRank 的联合优化](#(五)Embedding 与 ReRank 的联合优化)
[1. 选择合适的 Embedding 模型](#1. 选择合适的 Embedding 模型)
[2. 引入 ReRank 模型提升排序精度](#2. 引入 ReRank 模型提升排序精度)
[(一)问题补全(Query Enrichment)](#(一)问题补全(Query Enrichment))
[1. 基于多轮对话的渐进式补全](#1. 基于多轮对话的渐进式补全)
[2. 单轮输入的标准化与转述](#2. 单轮输入的标准化与转述)
[3. 参数化意图模板补全](#3. 参数化意图模板补全)
[(二)多路召回(Multi-Query / RAG-Fusion)](#(二)多路召回(Multi-Query / RAG-Fusion))
[1. 多角度查询改写](#1. 多角度查询改写)
[2. 检索结果融合(RAG‑Fusion)](#2. 检索结果融合(RAG‑Fusion))
[1. Step‑Back 抽象策略](#1. Step‑Back 抽象策略)
[2. 问题分解(Decomposition)](#2. 问题分解(Decomposition))
[六、总结:RAG 是一条持续演进的工程路线](#六、总结:RAG 是一条持续演进的工程路线)
干货分享,感谢您的阅读!
随着 RAG(Retrieval-Augmented Generation,检索增强生成)在企业级应用中的落地,许多团队都会遇到一个相似的阶段性问题:系统已经能回答问题,但稳定性、准确性和专业性仍然不足。这并非单点技术失误,而是 RAG 本身作为"系统工程"的必然结果。

我们对常规 RAG 改造思路的系统性梳理,在保持技术客观性的前提下,我们本次对如何持续改进 RAG 应用效果进行一次完整总结,并在关键环节给出适度扩展,帮助建立清晰的优化路线图。
一、从评测开始:没有指标,就没有改进
持续优化 RAG 的前提,不是引入更多"高级算法",而是建立一套可重复、可量化的评测体系。
(一)为什么评测是第一步
在缺乏评测标准的情况下,RAG 系统的改进往往陷入"感觉驱动":
-
有时感觉检索不准,但说不清哪里不准;
-
有时答案读起来不对,却无法定位是检索问题还是生成问题。
评测的价值在于:把主观感受转化为可讨论、可对比的指标。
(二)评测维度设计
RAG 系统通常可拆解为两个核心模块:
-
检索模块(Retrieval):
-
准确率(Precision)
-
召回率(Recall)
-
F1 值
-
Top-K 命中率
-
-
生成模块(Generation):
-
回答相关性
-
事实一致性(Faithfulness)
-
覆盖完整度
-
可读性与业务价值
-
在工程实践中,可以结合端到端评测(用户问题 → 最终答案)与模块级评测并行推进,并引入如 Ragas 等业界成熟评测框架,同时保留业务定制指标,确保评测真正服务业务目标。
二、提升索引准确率:检索质量决定上限
在 RAG 中,一个广泛被验证的结论是:检索质量决定生成上限。模型再强,如果取回的语料不对,答案注定不可靠。
这部分可以阅读:提升 RAG 检索质量:构建高效可用的知识检索管道
(一)文档解析与清洗
知识库构建的第一步,往往被低估。无论是网页、PDF 还是内部文档,都需要:
-
去除噪声信息(页眉、页脚、导航栏);
-
保留语义完整的内容结构(表格、列表、标题层级)。
高质量的原始语料,是一切优化的基础。
(二)Chunk 切分策略:不是越小越好
在 RAG 中,chunk(文本片段)是知识库语料被向量化前的基本单位。合理的切分策略能够显著提升检索效率和召回精度。
如果 chunk 过大,则可能包含无关信息,使检索精度下降;但如果过小,尤其是按字数或固定 token 切分,会切断语义单元,导致检索时缺乏上下文关联性。固定长度切分虽然实现简单,但存在语义断裂风险。Medium
例如:固定长度 512 token 的切分可能在句子中间结束,从而分离了本应一体的语义结构。
合理的 chunk 切分策略,是 RAG(Retrieval-Augmented Generation)系统性能优化的关键因素之一。通过优化切分方式,可以在保证语义完整性的同时,提高向量检索的相关性,减少无关上下文干扰,从而加速信息检索、提升生成质量与整体推理效率。常见的 chunk 切分方法主要包括以下几类:
1. 基于领域知识的切分
针对具有明确结构的专业文档(如法律、金融、技术规范等),可利用领域特有的结构信息进行切分。例如,在法律文档中,以章节编号、条款、款项作为天然的切分边界,能够最大程度保留语义完整性和逻辑层次。
2. 基于固定长度的切分
按照固定的词数或 token 数进行切分,例如每 128 或 512 个词作为一个 chunk。这种方式实现简单、性能稳定,适合快速构建系统,但缺点是无法感知语义边界,可能导致上下文被强行截断,影响检索和生成效果。
3. 上下文感知与语义驱动切分
在切分过程中引入上下文感知机制,尽量避免语义断裂。例如,在 chunk 边界处保留前后相邻的句子,或确保关键句对不被拆散。进一步地,可以引入自然语言处理技术,对文本进行语义单元识别,如基于句子相似度计算、主题模型(如 LDA)、或基于 BERT 等模型的向量聚类,以保证每个 chunk 内部语义高度一致,减少跨 chunk 的信息依赖。
在实践中,通义实验室提供了一种中文文本切割模型,可直接对长文本进行语义感知切分,输出结构合理的文本块,适用于构建高质量知识检索系统(详见:中文文本分割模型)。
(三)句子滑动窗口检索
标准 RAG 检索往往只返回与查询最相关的 chunk。但很多知识并非孤立存在,而是跨句或跨段落分布。句子滑动窗口检索策略在命中 chunk 的基础上,根据预设窗口(window_size)引入命中 chunk 前后相邻句子,从而补全语义线索。
-
window_size=1:默认多数技术文档效果较好;
-
window_size=2:适用于原理性教程或多句逻辑链文档;
-
window_size ≥3:虽然涵盖更多上下文,但也可能引入噪声。
滑动窗口机制实质上是对标准检索的补充,使生成阶段能获得更完整的语义上下文。
(四)自动合并检索
自动合并检索通过对已切分的 chunk 构造层级结构(如父子关系、语义树等),在检索阶段不仅返回最相关子块,还动态向上合并语义,从而避免碎片化信息。相比简单的滑动窗口,这种策略能够在更大粒度上保留语义一致性。
例如,可以通过先按章节切分"父块",再在父块内部进行精细的"子块"切分,检索时先返回子块,再按父块聚合并扩展相邻上下文,这在技术文档等结构丰富的场景中效果显著。CSDN 博客
(五)Embedding 与 ReRank 的联合优化
-
检索质量的关键还在于如何构建向量与排序策略,这直接影响相关性判断与最终召回准确率。
1. 选择合适的 Embedding 模型
用于生成向量的 Embedding 模型种类繁多,不同模型对中文语料的语义表达能力存在明显差异。针对中文场景,优先选用对中文语料表现更佳的模型,可显著提升召回质量。Embedding 模型通常决定了语义空间的表达能力,是影响检索质量的基础因素。
2. 引入 ReRank 模型提升排序精度
初次召回往往返回 TopK 候选(如 Top50),但其中并不全是最相关内容。通过引入 ReRank 模型(如交叉编码 Cross‑Encoder)对初筛候选重新排序,可以将真正语义相关的 chunk 更靠前,从而提升最终生成内容的质量和可用性。System Overflow
(六)聚类索引:为知识自动"建目录"
通过无监督聚类(如 RAPTOR),将语料块按主题聚合,相当于为文档自动生成目录结构,使系统在大规模语料中更快定位相关区域,尤其适合长文档和知识密集型场景。
假如志愿者拿到的文本资料是没有目录的,志愿者一页一页查找资料必然很慢。因此,可以将词条信息聚类,比如按照商店、公园、酒吧、咖啡店、中餐馆、快餐店等方式进行分组,建立目录,再根据汉语拼音字母来排序。这样志愿者来查找信息的时候就可以更快速地进行定位。
三、让系统更好理解问题:问题本身就是检索的一部分
(一)问题补全(Query Enrichment)
在标准 RAG 流程中,检索质量高度依赖用户问题的语义清晰度。然而现实用户输入往往具有:
-
信息缺失(如缺少领域上下文)
-
歧义性强(如"这个策略怎么优化?"无法显式指出目标对象)
-
表达偏口语化或模糊
针对以上挑战,问题补全(Query Enrichment)旨在让 RAG 系统在不增加用户负担的前提下自己完善查询,从而提高召回相关性和回答质量。
1. 基于多轮对话的渐进式补全

这一策略将大模型看作"需求分析师":
-
初始意图识别:粗粒度判断用户表达的核心问题及潜在缺失信息;
-
生成澄清问题:针对关键信息缺失点提出最简澄清询问;
-
上下文状态维护(Slot Filling):将用户补充信息结构化存储;
-
意图收敛与执行:当信息满足执行条件时启动检索与回答。
此方法适合咨询、分析类场景,特别是当单轮输入远不足以反映用户真实意图时。
2. 单轮输入的标准化与转述

该方案强调在弱多轮场景下规范用户输入:
-
系统使用模型将用户语句转述为标准化、可检索的查询形式;
-
目标是提升召回质量而非改写用户意图;
-
相比直接检索,该方法能够显著增加检索命中率。
在学术界,这类 query rewriting 技术正成为解决用户查询噪声问题的基础手段之一,例如DMQR‑RAG 就提出了多样化的查询重写策略以提高召回覆盖。arXiv
3. 参数化意图模板补全

对于可执行性极强的业务调用场景(如订票、预约等),采用 Intent → Slot → Action 的结构化提取策略尤为有效:
-
自动提取缺失参数;
-
填充到业务执行模板;
-
直接触发业务逻辑执行。
这一策略在自动化流水线应用中减少了对人工确认环节的依赖。
(二)多路召回(Multi-Query / RAG-Fusion)
向量检索本质上是基于相似性的一种单一语义视角搜索,一旦原始问题偏离库中典型语义表达,很容易产生错误或漏召回。为此,多路召回(Multi‑Query)策略提出:
-
对同一问题生成多个语义等价但侧重点不同的子查询;
-
并行执行检索,得到多组候选文档;
-
之后进行去重与融合排序,从而提升召回覆盖率。TECHCOMMUNITY.MICROSOFT.COM
1. 多角度查询改写

多角度查询改写的核心思想是:
-
不依赖单一查询向量;
-
针对不同语义空间生成若干变体;
-
覆盖用户意图的不同维度。
生成的子查询数量与质量需要精心设计,避免检索开销过大带来的延迟与噪声。
2. 检索结果融合(RAG‑Fusion)

多路召回后,如果不做融合处理,将得到大量重复或相关性不高的候选结果。因此,融合排序成为核心模块:
-
去重(Deduplication):剔除重复或高度相似的检索结果;
-
融合排序:常见方法包括基于 Reciprocal Rank Fusion(RRF)或加权相似度融合等;
-
更高级方法还可以使用 LLM‑Based Re‑Ranking 进行精排。TECHCOMMUNITY.MICROSOFT.COM
(三)语义抽象与问题分解:从宏观到微观的"语义导航"
针对复杂问题,仅依赖直接检索常常无法获取完整答案。两个有效策略包括:
1. Step‑Back 抽象策略
先让模型对问题进行宏观抽象,提取更通用、更核心的语义,再据此进行检索。这一策略能够:
-
降低复杂语句的噪声;
-
捕捉更本质的意图;
-
有助于检索高层次通用知识。Medium
2. 问题分解(Decomposition)
将复杂问题拆解成若干子问题分别处理:
-
子问题可以并行或串行执行;
-
对每个子问题分别检索与生成;
-
最终汇总得到完整回答。
学术界也提出类似思想,例如 ACL 上的论文就着重强调了问题拆分对于 multi‑hop 问答的改善效果。ACL Anthology
(四)假设驱动检索(HyDE)

HyDE(Hypothetical Document Embeddings)策略不直接使用用户查询做检索,而是:
-
由 LLM 生成一个假设回答(Hypothetical Answer);
-
将该假设文本作为向量进行检索;
-
获取更相关的候选文档作为上下文。英飞
HyDE 解决了用户查询与知识库文本之间的语义不匹配,特别是在用户表达模糊或知识库用语更为专业时效果显著。
四、改造信息获取路径:知识库不是唯一信息源
(一)CRAG:当知识库不够时,主动走向互联网
Corrective RAG 的核心思想是:
如果检索结果相关性不足,就主动引入外部搜索结果,再统一生成答案。
在知识更新频繁、强时效性的问题场景中,这一策略能显著提升回答覆盖率和准确性。
具体详细内容可直接查看:Corrective Retrieval Augmented Generation(CRAG):构建更可靠的信息抽取与生成系统
(二)多数据源融合
现代 RAG 不应局限于文本语料,而应逐步融合:
-
结构化数据库(NL2SQL)
-
图数据库(NL2Cypher / Neo4j)
通过让大模型生成 SQL 或 Cypher 查询,可以直接从数据层获取事实型、统计型和关联型知识,极大扩展 RAG 的能力边界。
这部分具体可以详细见:从多种数据源中获取资料:推进 RAG 向结构化与图数据检索的融合
五、回答前的自我反思:让模型"多想一步"
这部分可以重点查看:Self‑RAG:让大模型"多想一步"的自反思检索增强生成机制
Self-RAG,也称为self-reflection,是一种通过在应用中设计反馈路径实现自我反思的策略。基于这个思想,我们可以让应用问自己三个问题:
-
相关性:我获取的这些材料和问题相关吗?
-
无幻觉:我的答案是不是按照材料写的来讲,还是我自己编造的?
-
已解答:我的答案是不是解答了问题?
Self-RAG(Self-Reflection)通过引入自检机制,让模型在输出前反复评估:
-
回答是否基于检索内容?
-
是否存在编造?
-
是否真正解决了用户问题?
虽然系统复杂度有所提升,但在高风险、高专业度场景中,这类策略往往是必要的质量保障。
六、总结:RAG 是一条持续演进的工程路线
RAG 的优化并不存在"一步到位"的方案,它更像一条持续演进的工程路线:
-
从评测入手,建立反馈闭环;
-
以检索为核心,提升信息质量;
-
通过问题理解与多策略召回,增强系统鲁棒性;
-
融合多数据源,拓展能力边界;
-
借助自反思机制,保障答案可信度。
正是这些看似零散、但相互协同的改造思路,共同推动 RAG 从"能用"走向"好用、可信、可扩展"。