SH

Soloharness

概念 · 辨析 · Agent

← 返回概念辨析

Concept Contrast Fable

分块和语义分块,一个是把长文切成段,一个是不按字数按意思切

分块是指把长文本切分成更小的片段以便嵌入、检索或处理的通用操作。语义分块是分块的一种具体策略——不依据固定字数或字符数,而是依据语义边界(如段落、句子结束或主题转移点)来切割。所有语义分块都是分块,但不是所有分块都在意语义边界——按字数硬切的块可能在句子中间断掉。

寓言

切肉有两种刀法,一种按斤两切,一种跟着肉的纹理切

镇上的肉铺里有两个学徒,跟着同一个师傅学切五花肉。老师傅的规矩很明确:每块五花肉算一份,重量要在一斤上下,误差不超过一两。大徒弟张刀老老实实照着规矩做——每块肉往秤上一放,刀起刀落切满一斤,装袋。

半年后客人开始反馈了。张刀切的肉分量标准但每块肉的组织结构乱七八糟——一份肉里可能半块瘦连着一条筋,还有一小块脆骨嵌在中间。刘刀切的肉分量不标准但组织结构清晰——同一块肉里要么瘦要么肥,经络要么完整保留在一片上要么完全分离。客人的评价很直接:「炒张刀的肉需要每片都重新拆;炒刘刀的肉下锅就是一股完整的口感。」

师傅把两个徒弟叫过来,在案板上铺了同一块五花肉,问了一个问题:切肉到底是为谁的?张刀的说法是给客人的——每份都一样重,公平。刘刀的说法也是给客人的——每份都保持同一片肉的内部一致性,口感完整。师傅说两个都对,但你们切出来的东西用在不同的地方。红烧肉要大块匀称,用张刀的刀法。涮火锅要薄片均匀一致,用刘刀的刀法。

张刀的办法像按重量切:每份都差不多重,不管肉纹从哪里走,一刀落下就算一份。这对需要公平分量的买卖很有用,也容易算账。但它可能把一整条筋切成两半,客人下锅以后才发现,前半截在这一袋,后半截在另一袋。

刘刀的办法是跟着肉的纹理走。他不先问每份几两,而是先看肥瘦交界、筋膜走向和骨边位置,找自然断点。这样切出来的肉内部口感紧凑,一片就能说明这块肉的性质。缺点也明显——有的片大,有的片小,遇到长筋长肉就很难保持均匀分量。

后来肉铺接了新业务——给城里的酒楼供现切的涮锅肉片。师傅直接把张刀的固定重量刀法停掉了,全部改用刘刀的纹理刀法,因为涮锅需要肉片纹理一致。同时他又规定了一个下限:每片肉不能比一张宣纸更薄,涮锅时一夹就散;也不能整条肉不切,客人根本下不了锅。

师傅最后给两个徒弟定了混合规矩:先按纹理把大块分好,再在每块里按大致分量修整;或者先按分量粗切,再把断在筋膜上的地方补一刀。切刀和切法不是二选一,是看客人要红烧、涮锅还是做馅,再决定两种规矩怎么配。

分块

将长文本拆分为短片段进行嵌入、索引或处理的一般操作。策略包括固定大小分块、按段落分块、语义分块和递归分块。它是 RAG 管道的上游步骤,直接影响检索质量。

语义分块

分块的一种具体策略,依据语义边界(话题转换、段落、论证单元)而非固定字数来切割文本。目标是保持每块内部的语义完整性和独立性,代价是块大小不均匀。

故事对应

  • 张刀的秤重切法:固定大小分块——均匀但不尊重内容结构
  • 刘刀的纹理切法:语义分块——不均匀但每块内部结构完整
  • 客人评价:「炒张刀的肉要拆,炒刘刀的肉完整」——分块策略对下游使用体验的影响
  • 红烧肉用重量法、涮火锅用纹理法:不同场景适配不同分块策略
  • 句子断在两块之间:固定分块的最大缺陷——信息断裂
  • 涮锅肉片设最小厚度下限:语义分块需设最小块边界,防止极端情况
  • 混合策略:现实 RAG 系统中的常见做法——组合语义和固定分块

落到 RAG 系统的分块策略选择

设计 RAG 系统的分块管道时,不要在「固定大小」和「语义分块」之间二选一。先确定你的文档类型:如果是结构化强的技术文档,语义分块按章节和段落切效果最好;如果是聊天记录或社交媒体内容,固定窗口加重叠可能更稳。然后做 A/B 测试:同一套查询分别跑两套切分策略的检索结果,用人工评估比较前 5 条结果的信息完整性。大多数成熟的 RAG 系统使用分层策略:第一层做较大的语义分块保证上下文完整,第二层在块内做小粒度的检索片段切分来控制精度。分块策略没有银弹——它在你的具体数据和查询模式上反复调试才收敛。