语义分块
定义
语义分块 是一种面向 RAG 文档摄取的切分方法:它不是按固定词元数、固定字符数或固定长度对文档“一刀切”,而是根据文本之间的语义连续性、主题是否真实变化来决定 chunk 边界。
在本文语境里,它要解决的不是泛泛的“切得更智能”,而是非常具体的老问题:固定长度分块常把一句话切成两段、把同一主题拆散、把跨页内容和文档结构打碎,最终让检索阶段拿不到完整上下文。
在本文档中的语境
在 LongParser v0.1.5 的升级说明中,语义分块 被列为核心能力之一,定位是修复传统分块导致的上下文割裂问题。文章明确指出,很多 RAG 项目检索效果差,并不一定先出在向量库或模型参数上,而是出在文档解析阶段:
- 固定词元限制容易把一整句切断。
- 一个本应作为同一知识单元的主题会被拆到不同 chunk。
- 多栏论文、跨页表格、嵌套标题等复杂结构,若按长度硬切,信息顺序和归属会错乱。
因此,语义分块 在这里的直接目标,是让进入知识库的 chunk 更接近“完整可检索的上下文单元”,从而减少检索失败,而不是单纯追求块更大或更小。
关键机制
文章给出的实现信号比较明确:LongParser v0.1.5 使用 all-MiniLM-L6-v2 模型,对相邻文本块之间的余弦相似度进行跟踪,并且只在主题发生真实变化时创建边界。
这意味着它的判断逻辑不是“到多少 token 就切”,而是更关注以下问题:
- 当前文本与前后文本在语义上是否仍连续;
- 相似度变化是否足以说明主题已经切换;
- 是否应该把相邻段落保留在同一个 chunk 中,以维护完整语义。
从效果上看,这种做法的核心价值是:当内容仍围绕同一主题展开时,即使形式上已经换段、换页,系统也倾向于保持连续;只有当主题真的发生切换时,才建立新的分块边界。
混合分块模式
本文同时强调,语义分块 并不是完全脱离长度约束的纯语义策略。LongParser v0.1.5 支持混合分块模式,会把语义判断与其他边界条件一起使用。
文章点明了三类共同参与切分的因素:
- 词元限制;
- 标题层级;
- 表格结构。
这说明它并非简单否定固定长度控制,而是把长度约束降级为一种边界条件:
- 当语义上应当连在一起时,尽量避免过早切断;
- 当 chunk 已逼近或超过可接受的词元上限时,仍需要结合长度限制进行控制;
- 当标题或表格结构明确提示内容边界时,也会参与切分判断。
因此,语义分块 在本文中更准确的理解应是“语义优先、结构辅助、长度兜底”的混合切分方式,而不是与长度限制完全对立。
与文档结构的结合
文章特别提到,LongParser 的分块并不只看纯文本语义,还会结合文档结构信息做判断,这一点对复杂文档尤其重要。
它适配的结构场景至少包括:
- 多栏论文;
- 跨页表格;
- 嵌套标题。
这里的含义是:
- 对多栏论文,不能只按页面线性文本流粗暴切分,否则不同栏内容可能互相串扰;
- 对跨页表格,不能在页尾和页首之间直接断开,否则同一张表会被拆碎;
- 对嵌套标题,父子层级本身就是主题边界和上下文归属的重要信号。
因此,语义分块 在本文里不是单一的 embedding 相似度算法,而是与 文档边界标记、标题层级、表格连续性等结构线索共同工作。它更像一种“语义+结构”的联合切分策略。
在 RAG 中的直接效果
从文章表述看,语义分块 的价值不是抽象的“效果更好”,而是直接作用于 RAG文档摄取 和后续召回质量:
- 保留更完整的上下文;
- 减少因句子被切断造成的语义残缺;
- 减少同一主题被拆散后检索只召回半块内容的问题;
- 降低复杂排版文档进入向量库后发生信息错乱的概率;
- 提高检索命中的可用性,而不只是提高命中次数。
文章甚至把它描述为解决“上下文割裂核心问题”的能力。也就是说,在该文语境里,语义分块 的评价标准首先是“是否更容易检索到完整答案所需片段”,而不是 chunk 数量是否减少,或单块是否更大。
细节与边界
尽管文章对这项能力评价较高,但并没有把它描述成没有代价的万能方案,反而明确给出了边界。
1. 依赖特定模型实现
文中明确提到该能力依赖 all-MiniLM-L6-v2。这意味着分块质量会受 embedding 模型表达能力影响,不是一个与模型无关的抽象过程。
2. 超长文档可能出现性能与准确性问题
文章明确提出:对于超长篇文档,例如上千页的论文或合同,虽然 all-MiniLM-L6-v2 属于轻量模型,但仍可能出现两类问题:
- 性能下降;
- 分块不准。
也就是说,语义分块 在长文档场景下并不天然稳定,尤其当文档很长、结构很复杂、主题变化细密时,实际效果仍需测试验证。
3. 复杂文档场景仍需实测
文章进一步提出值得继续观察的场景,包括:
- 多语言混合文档解析;
- 模糊扫描件 OCR 后文本的切分;
- 跨页复杂表格解析。
这些内容虽然不全是语义分块单独造成的问题,但都会影响语义边界判断的稳定性。换言之,语义分块 的表现不仅取决于算法本身,也取决于前置解析质量和文档结构恢复质量。
与其他分块思路的关系
语义分块 与固定长度分块并不是简单替代关系。结合本文可作如下区分:
- 固定长度分块的优点是简单、稳定、易控制上下文窗口;
- 其主要缺点是容易制造语义断裂;
- 语义分块的优点是更强调知识单元完整性;
- 其代价是需要额外语义计算,并在超长文档中可能出现性能或准确性挑战;
- 最终工程上更可行的方案,是把语义判断与词元上限、标题层级、表格边界结合起来。
这也使它与 数据库文档分块、结构化文档标注 形成互补:前者强调围绕完整知识单元组织 chunk,后者强调通过显式结构帮助系统识别边界,而 语义分块 则提供了在自然文本连续性层面识别边界的能力。
适用场景
依据本文,语义分块 特别适合以下 RAG 文档场景:
- 段落之间主题连续但长度不均匀的说明文档;
- 同一知识点跨多段展开、不能被中间切断的文档;
- 有明显标题层级、嵌套章节的技术材料;
- 包含跨页表格、多栏排版等复杂结构的文档;
- 对召回完整性要求高、不能只拿到半段信息的企业知识库。
对于这类场景,是否采用 语义分块,会直接影响知识入库后 chunk 的可检索性和答案拼接质量。