大家好,我准备开启一个全新的系列,来聊聊——RAG(Retrieval-Augmented Generation)系统的底层设计与工程实现。
你可能已经用过各种“大模型加检索”的应用:AI 助手能秒答公司文档问题、客服机器人能一口气分析十几页合同、技术问答系统好像“查阅过全网资料”……但你有没有想过:这些模型到底是怎么“知道”你提的问题答案的?模型为什么能记住一整本文档?我们把知识库接入大模型,到底做了什么?
这一切的背后,离不开三个字母:RAG。
这个系列将拆解构建一个 RAG 系统的全流程,深入剖析每个关键步骤的逻辑、技术选型与工程落地难点:
- RAG 实战指南(一):什么是RAG?一文搞懂检索增强生成技术
- RAG 实战指南(二):一文搞懂RAG 的文档解析
- RAG 实战指南(三):一文搞懂RAG 的切分策略
- RAG 实战指南(四):RAG-embedding篇
- RAG 实战指南(五):RAG信息检索-如何让模型找到‘对的知识’
此外,所有相关源码示例、流程图、模型配置与知识库构建技巧,我也将持续更新在 Github:LLMHub,欢迎关注收藏!
1.前言
RAG飞速发展,成为连接“生成能力”与“外部知识”的桥梁,关于RAG的介绍可以参考什么是RAG?一文搞懂检索增强生成技术。
前面我们介绍了RAG系统中的文档解析,RAG 的文档解析:PDF 篇,在解析文档得到数据后,由于数据规模很可能非常庞大,整体存储具有难度,并且在查询的时候可能仅仅和其中的一个或几个段落有关系,所以需要分块技术将解析后的文档内容切分为适当的片段。
在RAG系统的构建中,文档切分策略很大程度上决定着模型检索质量,切分的好,信息命中更精准,生成回答更有上下文逻辑;切分的差,AI或许会变成“口吃患者”。
分块技术在实际应用中面临诸多挑战。首先是如何选择合适的分块粒度。如果分块过大,模型在检索时可能会引入大量无关信息,影响回答的精准度;如果分块过小,又可能导致上下文被打断,使得模型缺乏完整语义,难以理解用户问题的背景。
其次,语义完整性是一个核心问题。很多文档结构并非严格按段落划分语义,尤其在技术文档、法律条款或科研论文中,一个重要的论点可能跨越多个段落甚至页码。简单按长度切分容易打断逻辑,导致模型“读到的”和“作者要表达的”不是一回事。
下面,我介绍一下5种RAG切分策略。
2.固定大小切分
将文档按照预设的字符数、词数或句子数进行等间隔划分。例如每段包含500个字符或5个句子。该方法实现简单,但容易打断语义边界,可能导致上下文缺失或内容重复。
3.语义切分
通过自然语言处理技术(如句向量相似度、话题建模等)判断文本语义的边界,在语义上自然断句。
以向量相似度为例,将句子或段落转换为向量,通过计算相邻句段的余弦相似度,如果判断两个段落语义上属于同一单元,那么就进行合并。
这种方式能提升分块的语义连贯性,适用于逻辑紧密的文章,但计算代价较高,依赖模型质量。
4.递归切分
在保持固定长度的同时,尝试以语义结构(如段落、句子、标点)为边界递归地切分文本。若段落太长无法容纳于块中,则再递归切分为句子,直到满足长度要求。
相比纯固定切分,该方法能更好地保留语义完整性。
5.基于文档结构的切分
利用原始文档的结构信息(如HTML标签、Markdown标题、PDF书签、Word段落等)进行切分。比如以章节、小标题、列表项为边界进行分块。
这种方式在处理格式规范的文档(如手册、报告)时效果尤为突出。
6.基于LLM的切分
借助大语言模型来“理解”文档内容并主动划定分块边界。例如,提示模型判断哪些段落构成完整的语义单元,或根据任务需求生成最佳的分块方案。这种方式智能程度高,但计算成本也相对较大,适合高精度应用场景。
7.总结
实际应用中,往往需要结合多种策略,根据数据类型和业务需求灵活调整,以构建既高效又精准的 RAG 系统。
如果想形象的理解一下分块,可以使用在线的分块可视化工具ChunkViz进行体验。
文中的图片来自
图解 RAG 的 5 种分块策略 - 53AI-AI知识库|大模型知识库|大模型训练|智能体开发
非常感谢,如有侵权请联系删除!
更多相关资料在github中,系统整理与分享大语言模型(LLM)相关的核心知识、面试内容、实际应用场景及部署技巧。内容涵盖从基础概念、主流模型对比、Prompt 设计、模型微调到工程部署的完整流程,帮助开发者、研究者以及求职者高效掌握大模型领域的关键能力。
关于深度学习和大模型相关的知识和前沿技术更新,请关注公众号coting
!