RAG 里的分块,看起来像是在调分块大小等参数,或者选择一个分割器。
但它真正影响的是后续的检索效果,因为分块涉及一个更根本的问题:
你准备让什么样的一段内容,成为检索系统里的基本知识单元?
这才是分块真正在做的事情。
一、为什么需要分块?
最直接的原因是**模型有上下文长度限制,**长文档无法无限地整体送进嵌入模型或生成模型中。
但即使文本没有超过长度限制,通常也不能简单把整篇文档压成一个向量。
因为嵌入最终会把一段文本压缩成固定维度的表示。一个块里包含的内容越多、主题越杂,局部信息就越容易被稀释,检索粒度也会越来越粗。
于是分块一直存在一个基本权衡:
- 块越大:上下文更完整,但检索粒度更粗,也更容易带回无关内容;
- 块越小:语义更集中,检索更精准,但更容易丢失原来的上下文。
所以分块真正要解决的并不是:每多少个 token 切一刀?
而是:
对于我的文档和用户问题,什么样的内容最适合作为一个独立的检索单元?
理解了这个问题,再来看不同的分块方式就会清楚很多。
二、常见的分块方式有哪些?
① 固定长度分块
最简单的方式,就是按照固定的字符数或 token 数控制每个块的大小,比如每 500 个 token 切成一块。
LangChain 中的TokenTextSplitter就属于这类很基础的实现。
它简单、稳定,也方便控制最终进入嵌入模型的文本长度。但因为主要依据长度切分,边界可能刚好落在一句话或一个完整段落中间;也可能把两个主题不同的内容放进同一个块。
因此,后面的很多方法其实都在解决一个问题:
除了长度,我们还能不能利用更多信息,找到更合理的切分位置?
② 按自然文本边界分块
一种很常见的改进,是优先沿着段落、句子、换行和标点等自然边界切分。
LangChain 中很常见的RecursiveCharacterTextSplitter就是这种思路:先尝试保留较大的文本单元,如果仍然超过设定长度,再逐级寻找更小的分隔符继续拆分。
这样可以尽量避免从一句话或一个段落中间硬切开,也是目前非常常见的一种基础分块方式。
但它判断边界主要依赖文本本身的形式。这里有一个换行、一个句号,并不意味着这里一定发生了语义变化,更不知道它是不是文档中的一个新章节或新的逻辑单元。
③ 基于语义分块
再进一步,可以直接利用内容之间的语义关系决定是否切开。
一种典型做法,是先对连续的句子或段落计算语义表示,再比较它们之间的相似度。当相邻内容的语义差异明显变大时,就把这里作为新的分块边界。
例如 Unstructured 的by_similarity会使用嵌入模型判断连续内容的主题相似度:相似的内容尽量组合在一起,相似度较低的内容则不会进入同一个块。
相比依赖字符和标点,这种方法开始真正考虑:
内容是不是还在讨论同一件事?
但语义发生变化,并不一定意味着文档结构也在这里发生变化。
④ 基于文档结构分块
对于法规、论文、报告、手册这类结构明确的文档,还可以更进一步:
直接利用文档本身的结构决定主要边界。
比如标题、章节、段落、列表、表格,以及法规里的章、节、条、款,本身就在表达内容之间的组织关系。
实现上,可以先通过文档解析或版面分析恢复这些结构,再根据自己的场景制定分块规则。
例如法规可以优先按“条”形成块,表格尽量保持完整;如果某个结构单元本身仍然太大,再在内部继续使用前面的递归分割或其他方法。
一些现成工具也在采用类似思路。
- Unstructured 的 by_title 会利用已经识别出的标题来保持章节边界;
- Azure 的文档布局方案也是先识别文档结构,再在结构内部继续控制块的大小。
这里最值得留下的不是某个具体工具,而是一种思路:
先利用文档结构确定大的边界,再用长度、递归或语义方法处理过大的结构单元。
这也是为什么对于复杂 PDF,分块往往不是从选择一个分割器开始,而是从上游能不能正确恢复文档结构开始。
一个重要参数 overlap:块与块之间为什么要保留重叠内容?
实际分块时,还经常会看到一个参数:重叠长度(overlap)。
它指的是相邻两个块之间保留一部分重复内容。例如前一个块最后的 100 个 token,也会出现在下一个块的开头:
块 A:AAAA +BBBB
块 B:BBBB+ CCCC
这样做主要是为了减少信息刚好落在切分边界上时造成的上下文断裂。
**Overlap 可以和前面的多种分块方式一起使用。**它本身并不决定“在哪里切”,而是在已经确定边界之后,为相邻块保留一些连续性。
不过重叠越大,也意味着更多重复内容、更大的索引和更多冗余召回,所以它同样需要结合实际效果来调整。
三、进阶分块策略:补回上下文
前面解决的是在哪里切、切多大。
但块切得越小,另一个问题就越明显:一段内容从原文中拿出来以后,可能失去原本的语境。
比如一个块里只有:
“其设计重现期不应小于 3 年。”
句子本身没有被切坏,但单独拿出来以后,“其”指什么、属于哪个章节、正在讨论什么问题,都可能看不出来了。
因此,除了继续调整块大小,还可以从另一个方向解决问题:
保持较小的检索粒度,同时把必要的上下文补回来。
① 给小块补充上下文
一种做法,是在原始块之外,再补充一小段能够说明它所在语境的信息,然后用增强后的内容参与检索。
Anthropic 的Contextual Retrieval就采用了这种思路:针对每个块生成一段简短的上下文,说明这部分内容在整篇文档中的位置和含义,再把它和原始块一起用于向量检索和关键词检索。
原本只有:
“其设计重现期不应小于 3 年。”
增强后可能变成:
“这部分来自某排水设计规范中关于雨水管渠设计重现期的规定:其设计重现期不应小于 3 年。”
重点不在于把块重新变大,而是:
让小块在脱离全文以后,仍然保留足够的信息被正确检索。
② 小块检索,大块返回
另一种常见思路是Parent-Child,也常被称为Small-to-Big。
它不直接给小块增加更多文字,而是同时保存两种不同粒度的块:
较大的父块 → 再切成多个较小的子块
检索时使用小块,因为它们主题更集中,更容易精准匹配;命中以后,再找到对应的父块,把更完整的上下文交给生成模型。
这样就把两个原本冲突的目标拆开了:
- 检索时用小块,追求准确;
- 生成时用大块,保留上下文。
这里面有一个很重要的认识:
用于检索的基本单元,不一定必须和最终交给生成模型的上下文单元完全相同。 Context Enrichment和Parent-Child的具体做法不同,但它们都在解决同一个问题:
如何在保持精细检索的同时,不因为块变小而丢掉必要的上下文。
四、生产环境中,怎么确定最终的分块策略?
看到这里会发现,分块并没有一个固定的“最佳方案”。
块应该多大、是否需要重叠、采用递归还是语义分块、是否值得增加上下文增强或 Parent-Child,都取决于文档本身和用户实际会提出的问题。
因此,生产环境里更可靠的做法,不是凭经验不断调参数,而是:
基准方案 → 运行评估 → 调整一种分块策略 → 再次评估
也就是先建立一个合理的基准方案,再用固定的检索评估集进行比较。
例如:
- 保持其他条件不变,只修改块大小;
- 只比较普通递归分块和基于文档结构的分块;
- 再观察 Recall@K、MRR 等检索指标以及具体的失败案例。
这样,分块就从“感觉这样切可能更好”,变成了一个可以验证、比较和持续迭代的工程问题。
最后
我在一线科技企业深耕十二载,见证过太多因技术更迭而跃迁的案例。那些率先拥抱 AI 的同事,早已在效率与薪资上形成代际优势,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。
我整理出这套 AI 大模型突围资料包:
- ✅AI大模型学习路线图
- ✅Agent行业报告
- ✅100集大模型视频教程
- ✅大模型书籍PDF
- ✅DeepSeek教程
- ✅AI产品经理入门资料
完整的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇
为什么说现在普通人就业/升职加薪的首选是AI大模型?
人工智能技术的爆发式增长,正以不可逆转之势重塑就业市场版图。从DeepSeek等国产大模型引发的科技圈热议,到全国两会关于AI产业发展的政策聚焦,再到招聘会上排起的长队,AI的热度已从技术领域渗透到就业市场的每一个角落。
智联招聘的最新数据给出了最直观的印证:2025年2月,AI领域求职人数同比增幅突破200%,远超其他行业平均水平;整个人工智能行业的求职增速达到33.4%,位居各行业榜首,其中人工智能工程师岗位的求职热度更是飙升69.6%。
AI产业的快速扩张,也让人才供需矛盾愈发突出。麦肯锡报告明确预测,到2030年中国AI专业人才需求将达600万人,人才缺口可能高达400万人,这一缺口不仅存在于核心技术领域,更蔓延至产业应用的各个环节。
资料包有什么?
①从入门到精通的全套视频教程⑤⑥
包含提示词工程、RAG、Agent等技术点
② AI大模型学习路线图(还有视频解说)
全过程AI大模型学习路线
③学习电子书籍和技术文档
市面上的大模型书籍确实太多了,这些是我精选出来的
④各大厂大模型面试题目详解
⑤ 这些资料真的有用吗?
这份资料由我和鲁为民博士共同整理,鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位,在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利,同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。
所有的视频教程由智泊AI老师录制,且资料与智泊AI共享,相互补充。这份学习大礼包应该算是现在最全面的大模型学习资料了。
资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。
智泊AI始终秉持着“让每个人平等享受到优质教育资源”的育人理念,通过动态追踪大模型开发、数据标注伦理等前沿技术趋势,构建起"前沿课程+智能实训+精准就业"的高效培养体系。
课堂上不光教理论,还带着学员做了十多个真实项目。学员要亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事!
如果说你是以下人群中的其中一类,都可以来智泊AI学习人工智能,找到高薪工作,一次小小的“投资”换来的是终身受益!
应届毕业生:无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。
零基础转型:非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界。
业务赋能 突破瓶颈:传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型。
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓**