持续改进 RAG 应用效果:从“能用”到“好用”的系统化方法

目录

一、从评测开始:没有指标,就没有改进

(一)为什么评测是第一步

(二)评测维度设计

二、提升索引准确率:检索质量决定上限

(一)文档解析与清洗

[(二)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))

(四)假设驱动检索(HyDE)

四、改造信息获取路径:知识库不是唯一信息源

(一)CRAG:当知识库不够时,主动走向互联网

(二)多数据源融合

五、回答前的自我反思:让模型"多想一步"

[六、总结: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),将语料块按主题聚合,相当于为文档自动生成目录结构,使系统在大规模语料中更快定位相关区域,尤其适合长文档和知识密集型场景。

假如志愿者拿到的文本资料是没有目录的,志愿者一页一页查找资料必然很慢。因此,可以将词条信息聚类,比如按照商店、公园、酒吧、咖啡店、中餐馆、快餐店等方式进行分组,建立目录,再根据汉语拼音字母来排序。这样志愿者来查找信息的时候就可以更快速地进行定位。

三、让系统更好理解问题:问题本身就是检索的一部分

可阅读:生产级提升 RAG 检索增强策略体系的关键策略

(一)问题补全(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)策略不直接使用用户查询做检索,而是:

  1. 由 LLM 生成一个假设回答(Hypothetical Answer)

  2. 将该假设文本作为向量进行检索;

  3. 获取更相关的候选文档作为上下文。英飞

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 从"能用"走向"好用、可信、可扩展"。

参考与延伸阅读

  1. 阿里云大模型工程师ACA认证免费课程

  2. https://arxiv.org/abs/2005.11401

  3. https://arxiv.org/abs/2302.00083

  4. https://arxiv.org/abs/2310.11511

  5. https://github.com/explodinggradients/ragas

  6. https://arxiv.org/abs/2305.14627

  7. https://arxiv.org/abs/2305.09617

  8. https://arxiv.org/abs/2212.10496

  9. https://arxiv.org/abs/2307.11019

  10. https://yale-lily.github.io/spider

  11. https://neo4j.com/developer/graph-data-science

相关推荐
九狼13 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS13 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区14 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈14 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang14 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx
shengjk116 小时前
NanoClaw 深度剖析:一个"AI 原生"架构的个人助手是如何运转的?
人工智能
西门老铁18 小时前
🦞OpenClaw 让 MacMini 脱销了,而我拿出了6年陈的安卓机
人工智能
恋猫de小郭18 小时前
AI 可以让 WIFI 实现监控室内人体位置和姿态,无需摄像头?
前端·人工智能·ai编程
是一碗螺丝粉19 小时前
5分钟上手LangChain.js:用DeepSeek给你的App加上AI能力
前端·人工智能·langchain