分块并非简单的预处理步骤,而是RAG流水线的核心支柱。优质文本块是有意义、独立完整的知识单元,而劣质文本块只是会误导LLM的孤立碎片。
在检索增强生成(RAG)系统中,若说检索模块是搜索引擎,那么分块(Chunking)就是支撑搜索引擎的地基。即便性能最强大的大型语言模型(LLM),面对过长、过短、冗余或拆分不当的文本块,也会束手无策。这也是业内实践者常说的: “分块决定了RAG质量的70%。”
优质的分块能帮助检索器精准定位完整、有上下文、贴合需求的信息;而劣质分块会产生碎片化、脱离语境的文本片段,迫使LLM陷入幻觉困境。
一、什么是分块?——RAG的基础预处理环节
RAG的第一步是文档收集与摄入,即汇总所有原始资料(文档、文章或知识库条目)。在检索之前,这些文档需要经过文本分块处理——将冗长文本拆分为更小的、有意义的片段,这些片段被称为“文本块(Chunks)”。
每个文本块都设计为逻辑连贯、独立完整的单元,使检索器在响应查询时,能够高效定位、排序并调用最相关的信息片段。
分块本质上是在生成嵌入向量前,将长文本拆分为小型有意义片段的过程。检索器实际用于响应查询的,正是这些文本块。
不妨试想这样一种场景:你向他人询问教科书中某一章节的内容,但事先已将该章节撕成了随机且大小不均的碎片。如果这些碎片与内容的逻辑结构完全脱节,得到的答案必然混乱不堪或残缺不全。RAG系统的表现亦是如此。
分块得当的文档能清晰捕捉核心观点、完整保留上下文,让LLM进行有意义的推理;而分块糟糕的文档会割裂语义、产生检索噪声。向量数据库、嵌入向量、重排器等后续组件,都必须建立在这个基础环节之上。
二、分块为何比想象中更重要?
分块绝非简单的文本切割,它直接决定了系统的信息检索方式,以及LLM能获取的上下文规模:
- 文本块过大:可能包含无关或次要信息,不仅会混淆模型判断,还会稀释查询焦点。LLM难以高效推理,可能输出模糊、矛盾或部分错误的答案;
- 文本块过小:缺乏足够的上下文支撑模型理解完整语义,导致信息匮乏,进而产生残缺或碎片化的响应。
优质分块需要找到平衡点——形成既不过短也不过长、符合人类信息组织习惯的独立语义单元。
三、主流RAG文本分块策略详解
1. 固定长度分块(Fixed-Size Chunking)
固定长度分块是最简单直接的方式:无论句子或段落边界,按预定义的字符数或令牌数(如每块500个令牌)拆分文本。
这种方式可预测性强、生成速度快,适用于超大型、杂乱或混合类型的数据集。但它存在明显缺陷:语义常常被拦腰截断。例如,一个句子可能起始于某个文本块,却结束于另一个文本块,导致嵌入向量的语义表达能力下降。
文本块重叠(Chunk Overlap)的作用
为保持连贯性,通常会在文本块之间设置少量重叠:
from langchain.text_splitter import RecursiveCharacterTextSplitter splitter = RecursiveCharacterTextSplitter( chunk_size=500, # 文本块大小 chunk_overlap=50 # 文本块重叠部分大小 ) chunks = splitter.split_text(long_text) # 拆分长文本文本块重叠意味着前一个文本块的最后几个句子,会重复出现在下一个文本块的开头。这能确保跨越两个文本块边界的重要信息不被丢失。若缺少重叠,检索器可能只返回某个观点的部分内容,导致LLM遗漏关键上下文,输出残缺或误导性答案。
通常重叠部分占文本块长度的10%~20%,在冗余度与效率之间取得平衡。
固定长度分块是日志、邮件、代码仓库和结构不一致的大型语料库的务实选择。
2. 基于句子的分块(Sentence-Based Chunking)
基于句子的分块以完整句子为单位拆分文本,而非采用任意长度阈值。这种方式确保每个文本块都包含连贯的语义,保留语法和语义完整性。
它在维持清晰度和上下文方面表现突出,每个文本块都代表一个有意义的思想单元。通过逻辑分组句子,检索器能向LLM返回更精准、易懂的信息,降低碎片化或混乱响应的风险。通常也会搭配少量重叠,进一步保障文本块间的连贯性。
3. 基于段落的分块(Paragraph-Based Chunking)
基于段落的分块以完整段落为单位拆分文本,而非单个句子或固定令牌数。这种方式保留了内容的自然结构和逻辑流向,让检索器更容易捕捉连贯的观点和上下文。
每个文本块通常对应一个明确的主题或子主题,帮助LLM生成更准确、有意义的响应。对于长文档、研究论文或文章等需要维持信息逻辑流的场景,基于段落的分块尤为有效。与基于句子的分块类似,它也可加入少量重叠以确保相邻文本块的连贯性。
4. 语义分块(Semantic Chunking)
语义分块关注“意义”而非“长度”。它不依赖任意切割,而是利用嵌入向量或相似度分数识别自然断点——如主题切换、上下文转换或章节边界。
这种方式生成的文本块语义连贯性更强,由于拆分边界遵循语义逻辑,检索质量显著提升,尤其适用于知识库、文档或文章等结构化内容。但代价是计算成本更高,且生成的文本块长度不一致。
from langchain_experimental.text_splitter import SemanticChunker from sentence_transformers import SentenceTransformer # 加载嵌入模型 model = SentenceTransformer("all-MiniLM-L6-v2") # 初始化语义分块器,设置断点阈值 chunker = SemanticChunker(model, breakpoint_threshold=0.4) # 拆分长文本 chunks = chunker.split_text(long_text)对于主题流向至关重要的高质量文档,语义分块通常是最精准的选择。
5. 递归拆分(Recursive Splitting)
递归拆分介于固定长度分块和语义分块之间,优先尊重文本结构,仅在必要时才拆分文本。
典型策略是:先尝试按标题拆分,若某个章节仍过长,则按段落拆分,再不行按句子拆分,最后才按字符拆分。这种方式生成的文本块既具语义意义,又能控制长度。
recursive_splitter = RecursiveCharacterTextSplitter( # 拆分优先级:二级标题 -> 三级标题 -> 换行 -> 句号 -> 无分隔符 separators=["\n## ", "\n### ", "\n", ". ", ""], chunk_size=600, chunk_overlap=80 ) chunks = recursive_splitter.split_text(long_doc)该方法在结构化内容(如开发者文档、技术手册、报告和学术资料)中表现出色,因为这些内容的层级结构至关重要。
6. 滑动窗口分块(Sliding Window Chunking)
部分内容(如法律合同、科学论文或长篇解释)的语义分布在多个句子中。针对这类文档,滑动窗口策略能有效保障连贯性。
它不生成独立的文本块,而是创建重叠窗口——例如,400个令牌的窗口,每次滑动200个令牌。每个文本块与下一个文本块共享上下文,避免语义在边界处丢失。
这种方式能极好地维持上下文,但会增加文本块数量,进而影响成本和性能。滑动窗口在法律RAG、金融、医学研究和合规系统中尤为有价值。
7. 分层分块(Hierarchical Chunking)
分层分块构建多级结构:小型文本块用于细粒度检索,中型文本块用于平衡推理,大型文本块用于维持全局上下文。
在检索阶段,系统可能先获取小型文本块以保证精准度,再搭配相关的大型文本块恢复完整上下文。这能减少幻觉,提升推理深度。
该技术支撑着企业级RAG系统和多粒度框架(如LlamaIndex中的相关实现)。
四、实际应用中的分块误区
多数RAG项目失败源于细微的分块问题:
- 文本块过大:向模型输入过多无关细节;
- 文本块过小:语义碎片化,丢失核心意义;
- 拆分不当:截断句子或混合无关章节,导致嵌入向量质量低下;
- 缺少重叠:造成上下文断裂;
- 元数据缺失:混淆检索器判断;
- 一刀切策略:对所有文档类型采用单一分块方法。
分块绝不能“一刀切”。政策文件与教科书的结构不同,通话记录与研究论文的逻辑迥异。分块策略必须根据文档类型和检索任务灵活调整。
五、总结
分块并非简单的预处理步骤,而是RAG流水线的核心支柱。优质文本块是有意义、独立完整的知识单元,而劣质文本块只是会误导LLM的孤立碎片。
若说检索是引擎,分块便是燃料。高质量分块能打造出清晰、有上下文、可靠的RAG系统;而无论LLM多么强大,劣质分块只会产生噪声和幻觉。掌握合适的分块策略,是解锁RAG系统最佳性能的关键。
如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示
因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取
四、AI大模型商业化落地方案
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。