news 2026/5/28 1:57:47

RAG系列:#5 RAG中的11种分块策略

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RAG系列:#5 RAG中的11种分块策略

原文:https://mp.weixin.qq.com/s/Yax05qsVj1tXi77za8Wm2g
欢迎关注公zh: AI-Frontiers

RAG往期文章推荐

RAG效果差?7个指标让你的准确率大幅提升

RAG评测完整指南:指标、测试和最佳实践

收藏!RAG核心工具大全: 7大解析工具+向量模型+数据库+检索排序

GraphRAG开源生态全景:6大主流开源项目,微软/蚂蚁/港大项目同台PK

检索增强生成(RAG)将 LLM 与信息检索系统相结合,以生成更准确、更符合上下文的响应。通过从外部文档中获取相关信息,解决了LLM固有的一些问题:

  • 幻觉问题 (Hallucination):当被问到知识盲区或不确定的内容时,大模型容易一本正经地编造看似合理但完全虚构的细节。比如,你问「蓝鳍X9的新型芯片性能如何?」,如果模型在训练时没学过,它可能会凭空捏造出这款芯片的参数、性能和评价。

  • 知识固化与过时:无法知晓训练截止日期之后发生的事,比如,你问「2026年世界杯决赛结果如何?」,模型只能回答「我的知识截止到某年某月,无法提供最新信息」或者胡编一个结果。

  • 缺乏领域深度与可溯源性: 在回答高度专业或企业内部独有的问题时,往往不够深入,最关键的是,无法知道答案来自哪里。

RAG 的一个关键组成部分是「分块」: 将大型文档分割成更小、更易于管理的部分。然后对这些块进行索引,并在检索阶段使用这些块,为语言模型提供上下文相关的信息。

为什么分块很重要

在 RAG 中,分块有多种用途:

① 决定检索的命中精度与召回率

  • 块太大:如一整章,细节问题易被噪音干扰,模型难以找关键信息,回答不精确或产生幻觉

  • 块太小:如单个句子,丢失上下文,导致召回失败

  • 理想情况:块应包含独立、完整的语义单元(如一个概念的解释、一个问答对),兼顾语义完整与检索精度

② 突破大模型的上下文窗口与注意力限制

  • 上下文窗口限制:模型处理能力有限,超长文档无法一次输入。即使窗口够大,全文检索也面临速度慢、成本高、易被无关信息干扰等问题。分块是海量知识“索引化”的关键

  • 注意力稀释效应:输入整本书时,模型注意力被分散。给出少量精准、高相关度的“知识卡片”,能让注意力集中,提升回答质量

③ 直接影响生成答案的连贯性与完整性

  • 合理分块能提供信息丰富、边界清晰的完整文本,便于模型提炼答案。分块破碎则输入碎片化,生成内容易前言不搭后语

分块策略概述

文本分块策略因其划分文本的方式和保留的上下文层次而异。主要包括:

  • 固定长度分块

  • 基于句子的分块

  • 基于段落的分块

  • 滑动窗口分块

  • 语义分块

  • 递归分块

  • 上下文增强型分块

  • 特定模态分块

  • 代理分块

  • 子文档分块

  • 混合分块

每种方法都有其独特的优势、适用于特定的应用场景。本文将详细介绍每种分块方法,比较不同的分块策略,探讨如何选择合适的分块策略,并了解在 RAG 中实施分块的最佳实践

固定长度分块

原理:将文本分割成预定义长度的块,通常基于标记或字符

适用场景:简单的文档、常见问题解答,或者处理速度是首要考虑因素的情况

优势

  • 简单易行:无需复杂算法即可轻松实现

  • 统一性:生成一致的块大小,简化索引

挑战

  • 上下文丢失:可能导致句子或想法断裂,从而造成信息不完整

  • 相关性问题:关键信息可能跨越多个数据块,从而降低检索效率

实施技巧

  • 选择合适的块大小,兼顾上下文和效率

  • 考虑结合重叠窗口来减少上下文丢失

基于句子的分块

原理:在句子边界处分割文本,确保每个部分都是一个完整的思想

适用场景:简短、直接的回复,例如客户查询或对话式人工智能

优势

  • 上下文保留:保持单个句子的完整性

  • 易于实施:利用自然语言处理(NLP)工具进行句子检测

挑战

  • 上下文有限:单个句子可能缺乏足够的上下文信息来回答复杂的问题

  • 长度可变:句子长度可能不同,导致句子块大小不一致

实施技巧

  • 使用自然语言处理库进行精确的句子边界检测

  • 如果多个句子较短,请将它们合并成一个更完整的句子

基于段落的分块

原理:将文档拆分成段落,每个段落通常包含一个完整的想法或主题

适用场景:结构化文档,如文章、报告或论文

优势

  • 更丰富的语境:提供比基于句子的片段更多信息

  • 逻辑划分:与文本的自然结构一致

挑战

  • 大小不一致:段落长度可能差异很大

  • 标记限制:较长的段落可能会超出模型的上下文长度限制

实施技巧

  • 监控数据块大小,确保其保持在可接受的 token 限制范围内

  • 如有必要,可将较长的段落进一步拆分,同时尽量保持上下文连贯性

滑动窗口分块

原理:通过在文本上滑动窗口来创建重叠的文本块,确保相邻的文本块共享内容

适用场景:需要保持各部分之间上下文联系的文档,例如法律或医学文本

优势

  • 上下文连续性:重叠部分有助于保持信息的流畅性

  • 改进检索:提高检索结果中包含相关信息的概率

挑战

  • 冗余:内容重叠会导致信息重复

  • 计算成本:数据块越多,处理和存储需求就越高

实施技巧

  • 根据文档性质优化窗口大小和重叠部分

  • 在检索过程中使用去重技术来处理冗余数据

语义分块

原理:利用 embedding 或机器学习模型,根据语义含义分割文本,确保每个部分在主题或思想上是连贯的

适用场景:需要深入理解的复杂查询,例如技术手册或学术论文

优势

  • 上下文相关性:数据块按有意义的方式分组,从而提高检索准确率

  • 灵活性:能够适应文本固有的结构和内容

挑战

  • 复杂性:需要高级自然语言处理模型和计算资源

  • 处理时间:语义分析可能很耗时

实施技巧

  • 利用预训练模型进行语义分割

  • 计算成本与语义块粒度之间的平衡

递归分块

原理:使用字符、标题、副标题、段落和句子等层次分隔符,将文本逐步分解成更小的部分

适用场景:大型、层级结构化的文档,如书籍或篇幅较长的报告。

优势

  • 层级上下文:维护文档的结构关系

  • 可扩展性:对超大型文本有效

挑战

  • 实现复杂:需要处理多层文本结构

  • 潜在的上下文丢失:即使是最小的数据块,如果管理不当,也可能丢失上下文

实施技巧

  • 利用文档结构(如 HTML 标签)来识别层次结构

  • 存储有关每个数据块在层次结构中的位置的元数据,以便在检索时提供上下文信息

上下文增强型分块

原理:通过添加来自周围块的摘要或元数据来丰富每个块,从而在序列之间保持上下文

适合场景:篇幅较长、需要保证多个部分之间连贯性的文档

优势

  • 增强上下文:提供额外信息,而不会显著增加数据块大小

  • 提高一致性:帮助模型生成更准确、更符合语境的响应

挑战

  • 复杂性:需要额外的处理才能生成摘要或元数据

  • 存储开销:增强型数据块会占用更多存储空间

实施技巧

  • 生成简洁的摘要,以最大限度地减少额外的令牌使用

  • 考虑将关键术语或概念作为元数据包含在内,而不是提供完整的摘要

特定模态分块

原理:分别处理不同的内容类型(文本、表格、图像),并根据其性质对每种内容进行分块处理

适合场景:混合媒体文档,例如科学论文或用户手册

优势

  • 定制化方法:针对每种内容类型优化分块

  • 提高准确率:专门的处理可以提高检索效率

挑战

  • 实现复杂度:每种模态都需要自定义逻辑

  • 整合难度:在检索过程中整合来自不同模态的信息可能具有挑战性

实施技巧

  • 使用OCR识别包含文本的图像

  • 将表格转换为结构化数据格式

  • 保持不同模式下索引系统的一致性

代理分块

原理:采用大型语言模型 (LLM) 分析文本,并根据内容结构和语义建议块边界

适用场景:需要保留含义和上下文的复杂文档

优势

  • 智能分割:利用 LLM 的理解能力创建有意义的块

  • 适应性强:能够有效处理多样化和非结构化的内容

挑战

  • 计算密集型:处理整个文档需要大量资源

  • 成本:由于计算成本,可能不适用于大规模应用

实施技巧

  • 对关键文档有选择地使用主体分块

  • 优化 LLM 提示,使其能够高效地识别逻辑块边界

子文档分块

原理:对整个文档或大段内容进行总结,并将这些总结作为元数据附加到各个部分

适用场景:提高大型文档集合的检索效率

优势

  • 分层检索:允许检索系统在多个上下文级别上运行

  • 上下文深度:为模型提供额外的信息层

挑战

  • 额外处理:需要生成和管理摘要

  • 元数据管理:增加了索引系统的复杂性

实施技巧

  • 利用自然语言处理技术实现摘要过程自动化

  • 高效存储汇总信息,以最大限度地减少对存储空间的影响

混合分块

原理:结合多种分块策略,动态适应不同的查询类型或文档结构

适用场景:能够处理各种查询和文档类型的多功能系统

优势

  • 灵活性:可根据内容和需求切换策略

  • 性能优化:在各种使用场景下平衡速度和准确性

挑战

  • 复杂逻辑:需要复杂的决策算法

  • 维护:组件越多,出错的可能性就越大

实施技巧

  • 制定选择分块策略的标准(例如,文档类型、查询复杂度)

  • 对混合方法进行广泛的测试和验证,以确保其可靠性

分块策略的比较分析

分块

策略

上下文

保留度

实现

复杂度

计算

成本

最适合场景

固定长度分块

简单文档,对速度要求高的应用场景

基于句子的分块

短查询,对话式人工智能

基于段落的分块

中高

结构化文档

滑动窗口分块

对上下文要求高的文本

语义分块

技术或学术文档

递归分块

大型、分层结构的文档

上下文增强分块

非常高

需要连贯性的长文档

特定模态分块

可变

可变

混合媒体文档

代理分块

非常高

非常高

非常高

需要深度理解的复杂文档

子文档分块

大型文档集合

混合分块

可变

非常高

可变

多功能系统

选择合适的分块策略

选择合适的分块策略取决于以下几个因素:

  • 文档类型:结构化文档与非结构化文档、长度和模式

  • 查询复杂度:简单常见问题 vs. 复杂技术咨询

  • 资源可用性:计算能力和时间限制

  • 预期结果:速度 vs. 准确性 vs. 上下文保留

指南

  • 为了提高速度:使用固定长度或基于句子的分段

  • 对于上下文:选择滑动窗口、语义或上下文增强型分块

  • 对于混合内容:采用特定模态或混合分块

  • 对于大型系统:使用递归或子文档分块在效率和上下文之间取得平衡

RAG 中分块实施的最佳实践

  • 监控代码块大小:确保代码块保持在语言模型的标记限制内

  • 保持原意:避免随意拆分句子或逻辑单元

  • 优化检索:使用适合分块策略的高效索引和检索机制

  • 处理冗余:实施去重以管理重叠内容

  • 广泛测试:使用特定数据和查询评估不同的策略,以找到最佳方法

  • 利用元数据:使用元数据增强数据块,以提高检索相关性

分块是检索增强生成(RAG)过程中的一个关键步骤,它直接影响系统的效率和准确性。理解各种分块策略及其适用场景,有助于开发者根据自身需求定制RAG系统。通过权衡上下文保留、计算成本和实现复杂度之间的利弊,可以选择最合适的分块方法来有效地增强语言模型

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 1:57:11

国内BIM协同平台口碑排行:5家主流厂商实测对比

当前工程建设与建筑设计行业的数字化转型进程中,BIM协同平台的作用愈发关键——跨专业协作效率、信息传递准确性、全周期数据联动能力,直接影响项目的进度、成本与质量控制。本次排行基于行业用户反馈、第三方监理实测数据及厂商公开交付案例&#xff0c…

作者头像 李华
网站建设 2026/5/28 1:56:48

Vibe Coding 最佳实践:让 AI 写代码不再越写越乱

导读Vibe Coding 很容易上手,但没有方法论的话,项目做大一点就会变成屎山。这篇文章整理了一套在 GitHub 上获得数千 star、被广泛采用的最佳实践,帮你把 AI 协作从「玄学」变成「工程」。一、先说一个很多人都踩过的坑 用 AI 写代码&#xf…

作者头像 李华
网站建设 2026/5/28 1:56:29

从航拍照片到三维地图:WebODM让你轻松玩转无人机影像处理 ✨

从航拍照片到三维地图:WebODM让你轻松玩转无人机影像处理 ✨ 【免费下载链接】WebODM User-friendly, commercial-grade software for processing aerial imagery. ✈️ Download it for free! 项目地址: https://gitcode.com/gh_mirrors/we/WebODM 你是否曾…

作者头像 李华
网站建设 2026/5/28 1:56:02

看了几十家供应商的演示,报价差了十多倍,选 ERP 到底该看什么?

从业多年,接触过大量选型案例后,我可以明确给出答案:差价从来不在基础功能上,而在供应商懂不懂你的业务、能不能平稳落地、以及长期服务能力。低价供应商拿着通用模板演示,流程走得行云流水,可一旦问到企业…

作者头像 李华
网站建设 2026/5/28 1:54:01

LLM推理服务中的Block调度器设计与优化实践

1. LLM推理服务的核心挑战与Block调度器设计理念在当前的AI服务架构中,大型语言模型(LLM)推理服务面临的核心矛盾是吞吐量与延迟之间的权衡。传统调度方案如轮询(Round Robin)或随机分配(Random)采用静态规则,无法感知实例的实际负载状态,导致…

作者头像 李华