目录
一、起点:文档解析与清洗的重要性
二、Chunk 切分策略:在语义完整性与检索效率之间取得平衡
1. 基于领域知识的切分
2. 基于固定长度的切分
3. 上下文感知与语义驱动切分
三、句子滑动窗口检索:增强语义连续性
(一)先用一句话理解它在解决什么问题
(二)它是怎么工作的(机制拆解)
1. 先做正常的 chunk 检索
2. 引入「句子滑动窗口」
3. 句子滑窗检索获取检索到的句子的上下文
4. window_size 怎么选?(工程视角)
四、自动合并检索:构建更稳健的语义结构
(一)它在做什么?
(二)为什么它比句子滑动窗口好
五、Embedding 与 ReRank 的联合优化
(一)选择更适合业务的Embedding模型
(二)选择更适合业务的ReRank模型
模型选型建议
六、聚类索引:为知识自动“建目录”
七、实践建议与常见模式
八、总结
参考链接
干货分享,感谢您的阅读!
在检索增强生成(Retrieval‑Augmented Generation,RAG)系统设计中,一个经过广泛实践验证的结论是:
检索质量决定生成质量的上限。
即使基础大模型再强大,如果所检索语料不具备相关性与完整性,再好的生成也难免偏离事实或缺失关键信息。
这次我们从知识库构建、检索单元设计、检索策略优化到检索后排序技术,全方位介绍提升 RAG 检索质量的核心方法和实现策略,结合当前研究与实战案例,为构建高质量检索增强应用提供有效参考。
一、起点:文档解析与清洗的重要性
RAG 系统的第一步是准备高质量的知识语料库。无论源是网页、PDF、Word、内部文档还是会议资料,文本清洗、结构解析以及噪声剔除都是不可绕过的步骤。
噪声清理:去除 OCR 错误、乱码、无意义短句、重复段落。
结构化解析:识别标题、段落、表格、列表等结构,尽可能保留原始文档的层次关系。
标准化格式:对日期、单位、缩写等进行统一规范。
高质量原始语料是整个检索与生成链路的基础,否则后续切分、嵌入和排序都会受到干扰。
二、Chunk 切分策略:在语义完整性与检索效率之间取得平衡
Chunk是指对原始数据或文本进行切分后得到的最小信息单元。Chunk 的本质,是在“语义完整性”和“检索粒度”之间做平衡。
在处理大规模文本、知识库或非结构化数据时,如果将完整内容一次性交由大语言模型进行理解和推理,不仅计算成本高,而且检索效率和生成质量都会受到明显影响。因此,在实际系统中,通常会先将长文本拆分为多个结构清晰、语义相对完整的 chunk,再进行向量化和检索。
每个 chunk 都承载了一部分可独立理解的有效信息。当用户提出问题时,系统只需在这些 chunk 中定位与问题最相关的部分,而非对整个语料库进行“全量扫描”。这种机制类似于图书馆中通过分类、索引和标签来快速定位书籍内容,能够显著提升检索效率和回答的准确性。
合理的 chunk 切分策略,是 RAG(Retrieval-Augmented Generation)系统性能优化的关键因素之一。通过优化切分方式,可以在保证语义完整性的同时,提高向量检索的相关性,减少无关上下文干扰,从而加速信息检索、提升生成质量与整体推理效率。常见的 chunk 切分方法主要包括以下几类:
1. 基于领域知识的切分
针对具有明确结构的专业文档(如法律、金融、技术规范等),可利用领域特有的结构信息进行切分。例如,在法律文档中,以章节编号、条款、款项作为天然的切分边界,能够最大程度保留语义完整性和逻辑层次。
2. 基于固定长度的切分
按照固定的词数或 token 数进行切分,例如每 128 或 512 个词作为一个 chunk。这种方式实现简单、性能稳定,适合快速构建系统,但缺点是无法感知语义边界,可能导致上下文被强行截断,影响检索和生成效果。
3. 上下文感知与语义驱动切分
在切分过程中引入上下文感知机制,尽量避免语义断裂。例如,在 chunk 边界处保留前后相邻的句子,或确保关键句对不被拆散。进一步地,可以引入自然语言处理技术,对文本进行语义单元识别,如基于句子相似度计算、主题模型(如 LDA)、或基于 BERT 等模型的向量聚类,以保证每个 chunk 内部语义高度一致,减少跨 chunk 的信息依赖。
在实践中,通义实验室提供了一种中文文本切割模型,可直接对长文本进行语义感知切分,输出结构合理的文本块,适用于构建高质量知识检索系统(详见:中文文本分割模型)。
三、句子滑动窗口检索:增强语义连续性
句子滑动窗口检索是一种在向量命中结果基础上,通过上下文扩展补全语义链路的检索增强策略。它以命中 chunk 为中心,根据预设窗口大小引入相邻句子,使大模型在生成阶段获得更完整的语义上下文,从而有效提升 RAG 系统的回答准确性与稳定性。
(一)先用一句话理解它在解决什么问题
句子滑动窗口检索的核心目的是:
避免“检索命中但上下文不完整”,让模型看到答案真正需要的前因后果。
在标准 RAG 中,向量检索往往只返回命中的 chunk 本身,但很多知识并不是孤立存在的——
定义、条件、约束、结论,往往分散在相邻的句子或段落中。
滑动窗口做的事情,就是:在命中 chunk 的基础上,向前、向后“多看几句”。
(二)它是怎么工作的(机制拆解)
1. 先做正常的 chunk 检索
流程的第一步没有变化:
文档被切分为多个 chunk(句子级、段落级都可以)
每个 chunk 被向量化
用户问题向量化
向量检索,命中一个或多个最相关的 chunk
到这里,是标准 RAG。
2. 引入「句子滑动窗口」
当某个 chunk 被命中后,不是直接把它送进大模型,而是:
以该 chunk 为中心
根据
window_size,向前、向后扩展上下文
假设:
window_size = 1
→ 取「前 1 句 + 当前句 + 后 1 句」window_size = 2
→ 取「前 2 句 + 当前句 + 后 2 句」
这就是“滑动窗口”的含义:窗口不是固定在某个位置,而是随着命中 chunk 滑动。
3. 句子滑窗检索获取检索到的句子的上下文
4. window_size 怎么选?(工程视角)
没有绝对标准,但有经验法则(常见取值):
| window_size | 适用场景 |
|---|---|
| 0 | 极短、强结构化文本 |
| 1 | 大多数技术文档(推荐默认) |
| 2 | 逻辑链较长的教程 / 原理说明 |
| ≥3 | 成本高、噪声多,一般不建议 |
实际工程中常见组合
句子级 chunk + window_size = 1
段落级 chunk + window_size = 0 或 1
四、自动合并检索:构建更稳健的语义结构
自动合并检索通过多粒度切分构建文档结构树,在检索阶段根据命中分布动态向上合并语料块,从根本上避免语义碎片化问题,是比滑动窗口更稳健的检索增强策略。
(一)它在做什么?
同一份文档,按不同粒度切分:
1024 token(大块)
512 token(中块)
128 token(小块)
这些 chunk 之间形成父子关系,构成一棵文档结构树。
向量检索时,通常命中的是最小粒度的叶子节点(如 128)。
如果命中了同一个父节点下的多个叶子节点:
→ 自动“向上合并”,返回对应的父节点(如 512 或 1024)。
(二)为什么它比句子滑动窗口好
滑动窗口是局部补上下文
自动合并是直接恢复原始语义块
本质总结
句子滑动窗口解决的是“上下文不够”,自动合并检索解决的是“语义被切碎”
五、Embedding 与 ReRank 的联合优化
Embedding 模型决定“能不能找到相关内容”;
ReRank 模型决定“相关内容排在第几位”。
在中文场景下,Embedding 模型是否针对中文语料优化,往往直接影响召回质量;而 ReRank 模型则是提升 Top-K 命中质量的关键补充。
(一)选择更适合业务的Embedding模型
经过切分的语料块在提供检索服务之前,我们需要把chunk语料块由原来的文本内容转换为机器可以用于比对计算的一组数字,即变为Embedding向量。我们通过Embedding模型来进行这个转换。但是,由于不同的Embedding模型对于生成Embedding向量质量的影响很大,好的Embedding模型可以提升检索的准确率。
比如,针对中文检索的场景,我们应当选择在中文语料上表现更好的模型。那么针对你的业务场景,你也可以建议你的技术团队做Embedding模型的技术选型,挑选针对你的业务场景表现较好的模型。
(二)选择更适合业务的ReRank模型
除了优化生成向量的质量,我们还需要同时优化做向量排序的ReRank模型,好的ReRank模型会让更贴近用户问题的chunks的排名更靠前。因此,我们也可以挑选能让你的业务应用表现更好的ReRank模型。
模型选型建议
在模型选型阶段,可优先参考ModelScope社区中关注度和下载量较高的主流模型,作为通用场景下的稳妥选择;若业务存在明确的领域特性且语料规模充足,也可考虑由技术团队自行训练或微调 Embedding 模型或 ReRank 模型,以进一步贴合业务需求。
在 Embedding 模型方面,推荐使用阿里云提供的按 token 计费的通用文本向量 API 服务。该服务由通义实验室基于大模型底座构建,支持多语言统一向量表示,整体效果稳定,且具备按量付费、即开即用的优势,能够有效降低项目初期的成本与工程复杂度。
此外,智源研究院发布的BAAI/BGE 系列模型在中文 RAG 场景中表现突出,当前应用广泛。其中,Embedding 模型可提升语义表达精度,ReRank 模型则通过对初步检索结果进行重排序,进一步增强相关性判断能力。实践中,如bge-large-zh-v1.5在中文向量表示上效果优秀,bge-reranker-base与bge-reranker-large也因性能稳定、社区活跃而被广泛采用。
六、聚类索引:为知识自动“建目录”
聚类索引(如RAPTOR等)是一类将语料按照主题自动聚合的方法,通过层级结构将大量 chunk 组织成主题簇,再从中生成高层摘要与树形结构索引,使查询时既能定位精确事实,又能捕获高层主题信息。该策略对于长文档、多主题文档和复杂推理场景表现尤为突出。vinija.ai
RAPTOR 的做法是:
对 chunk 向量进行聚类;
对聚类结果生成摘要;
递归构建树形索引;
查询时可灵活访问不同抽象层级的信息。
七、实践建议与常见模式
为了兼顾检索质量与系统效率,在工程实践中常见如下组合策略:
固定长度 + 语义边界感知混合:在固定 token 切分基础上结合句子或结构边界;
滑动窗口 + ReRank:增强上下文关联同时提升排序精度;
父子层级切分 + 聚合检索:兼顾结果精度与上下文完整。
八、总结
提升 RAG 系统中检索质量并非单一策略的优化,而是多个环节协同设计的结果。从数据清洗、chunk 切分策略、滑动窗口检索、自动合并结构、Embedding 选型到 re‑ranking 技术,每一步都影响最终生成的准确性与稳定性。
检索质量既是系统性能的瓶颈,也是提升生成质量的关键杠杆。只有在提升检索链路质量的基础上,才能让大语言模型真正发挥其知识生成能力。
参考链接
Optimizing Retrieval‑Augmented Generation(论文) — arXiv
https://arxiv.org/abs/2505.08445arXivBreaking It Down: Domain‑Aware Semantic Segmentation for RAG(论文) — arXiv
https://arxiv.org/abs/2512.00368arXivFreeChunker: A Cross‑Granularity Chunking Framework(论文) — arXiv
https://arxiv.org/abs/2510.20356arXivRethinking Chunk Size For Long‑Document Retrieval(论文) — arXiv
https://arxiv.org/abs/2505.21700arXivSearching for Best Practices in RAG— ACL Anthology (文献综述)
https://aclanthology.org/2024.emnlp‑main.981.pdfACL AnthologyRetrieval‑Augmented Generation Explained— Wikipedia
https://en.wikipedia.org/wiki/Retrieval‑augmented_generation维基百科RAG—Chunking策略实战— 技术博客(实战代码与聚合策略)
https://blog.csdn.net/SmartCodeTech/article/details/154130977CSDN 博客RAG检索质量差?这5种分块策略帮你解决70%问题— 阿里云社区
https://developer.aliyun.com/article/1685312阿里云开发者社区Retrieval‑Augmented Generation Technical Guide— Medium
https://solutionsarchitecture.medium.com/retrieval‑augmented‑generation‑rag‑a‑comprehensive‑technical‑guide‑d69a2cb70c22MediumRAPTOR Hierarchical Indexing in RAG— Microsoft Tech Community
https://techcommunity.microsoft.com/blog/-/from‑zero‑to‑hero‑proven‑methods‑to‑optimize‑rag‑for‑production/4450040TECHCOMMUNITY.MICROSOFT.COM