检索增强生成的文档切片与分块机制百科

一、先把概念摆正:切片是检索增强生成的第一道工序

检索增强生成(Retrieval-Augmented Generation,简称 RAG)指的是这样一种工作方式:大模型在开口回答之前,先去外部资料库里检索一批相关段落,再把这些段落连同用户的问题一起交给模型,让它基于这些材料组织答案。它把模型从凭记忆答题,改成了带着资料答题。对企业官网、行业媒体、内部知识库这类内容资产来说,这是目前最现实的一条被生成式引擎引用的路径。

一条完整的流水线通常包含这些环节:文档采集、格式解析、正文清洗、切片、向量化、建立索引、查询改写、召回、重排、上下文拼装、答案生成。切片排在第四位,位置很靠前,却常常是整条链路上最不被重视的一环。原因不难理解,它看起来只是个技术细节,不像提示词那样直观,也不像模型选型那样显眼,出了问题也不会立刻报错。

切片的定义是:把一篇长文档拆成若干个可以被单独索引、单独检索、单独放进模型上下文的小段,每一个小段称为一个块,英文叫 chunk,这个过程就叫 chunking。拆完之后,每个块会被转换成一串数字,也就是向量,英文叫 embedding,存进向量数据库。用户提问时,系统把问题也转成向量,去找那些方向最接近的块。

这里有一个容易被忽略的因果关系:检索只能召回你已经切出来的东西。一个事实如果被切得支离破碎,或者被埋在一个主题混杂的大块里,它在检索阶段就已经输了,后面的模型再强也救不回来。所以切片不是可有可无的预处理,它是内容能否被引用的第一次筛选。

二、为什么非要切:四个绕不过去的约束

很多人的第一反应是,既然模型能读很长的文本,为什么不把整篇文章直接塞进去。这个想法在小规模试验里成立,在真实系统里几乎立刻撞墙。

  • 上下文窗口有限。上下文窗口指的是单次请求里能处理的文本总量,这些年从几千 token 涨到几十万 token,但它依然有上限,而且装得越满,推理越慢、越贵,中间部分的信息还越容易被忽略。
  • 向量会被平均掉。把一篇三千字的文章压成一个向量,等于把标题、案例、参数、结论全部搅在一起取平均。结果就是这个向量既不像标题,也不像结论,跟任何具体问题的相似度都不高。块越大,语义越糊。
  • 检索席位有限。系统通常只取相似度最高的前三个、前五个或前十个块,业内称为 top-k。席位是稀缺资源,一个大而全的块占掉一个席位,却只回答了问题的一小部分,性价比极低。
  • 答案要能追溯。生成式引擎在给答案时往往要标注出处。如果块太大,出处只能指到整篇文章,用户无法核对,引擎也不敢放心引用。

这四个约束指向同一个结论:切片的本质是一次取舍,用多大的颗粒度去交换多高的命中率。颗粒度越细,命中越准,但信息越不完整;颗粒度越粗,信息越完整,但命中越难。后面要讨论的各种切法,都是在这个跷跷板上找平衡。

三、固定长度切片:最朴素也最常用的做法

固定长度切片是最早普及、至今仍然最常见的一种做法。它不管内容讲到哪里,只管数字数:设定一个长度上限,比如五百个 token,从头开始数,数满了就下刀,切完这一块再从下一个位置继续。

具体实现时通常会带一个重叠参数。假设块长五百、重叠五十,那么第二块的起点不是第一块的终点,而是往回退五十个 token 的位置。这样相邻两块之间就有一段重复内容,用来防止一句话正好被切在中间,导致两边都读不通。

它的优点非常明确。实现简单,几乎任何技术栈都能做;块长均匀,索引体积和检索成本可以提前算准;不依赖文档结构,扫描件转出来的纯文本、聊天记录、字幕稿都能处理。对于结构混乱、格式五花八门的语料,这往往是唯一稳妥的选择。

缺点也同样明确,而且几乎全部来自它不看内容这一点。一句话可能被拦腰截断;一个代词可能和它指代的名词分居两块;一张表格可能被切成上半截和下半截;一个小标题可能留在上一块的末尾,而它统领的正文全在下一块。最典型的失真长这样:某一块的开头是支持三种安装方式,分别是壁挂、吊装和落地,读者完全不知道这是哪个产品在支持。人尚且读不懂,模型自然也读不懂。

所以固定长度切片并不是错,它只是默认了内容没有结构可用。当文档本身有清晰的标题体系时,继续用它,等于主动放弃了作者已经写好的导航信息。

四、语义切片:在意思断裂的地方下刀

语义切片换了一个思路:不看字数,看意思。它先把文档拆成一句一句,把每一句转成向量,然后计算相邻两句的相似度。相似度高,说明这两句在讲同一件事,继续往下走;相似度突然掉下来,说明话题换了,就在这里下刀。

这个思路符合人的阅读直觉。一篇文章从讲原理转到讲案例,从讲案例转到讲价格,语言的密度和用词会明显变化,句子之间的向量距离也会拉开。用这个落差当切点,切出来的块往往主题更纯,跨主题的污染更少。

但它有两个现实问题。第一是块长不可控。有的作者一段话写八百字不分段,语义切片就会切出一个巨大的块;有的作者一句一个短段,切出来又是一地碎片。第二是阈值难调。阈值设高了,切得稀碎;设低了,等于没切。而且这个阈值在不同语种、不同文体之间并不通用,技术文档和散文的最优阈值可以差很远。

另外,它比固定长度切片更贵也更慢,因为要先做一遍全量向量化才能决定在哪里切,切完还要再向量化一次用于索引。所以在工程实践里,语义切片更适合用在没有标题结构的口语材料上,比如访谈录音的转录稿、会议纪要、客服对话记录。对于有清晰小标题的网页文章,它的收益往往抵不过成本。

五、结构切片:沿着标题层级下刀

结构切片是目前对网页内容最友好的一种做法。它不数字数,也不猜语义,而是直接读文档的结构:一级标题、二级标题、三级标题、段落、列表、表格,按照作者已经划好的边界来切。一个二级标题连同它下面的若干段落,天然就是一个块。

这种切法有一个关键动作,叫做注入上下文路径。因为标题往往是不完整的短语,比如安装方式、常见故障、价格区间,单独拿出来信息量很低。工程上会在每个块的开头补上一行来路说明,写成产品手册大于基站电源 X200 大于安装方式这样的形式,把块的坐标交代清楚。这一行看起来不起眼,却是结构切片效果好的主要原因。

它最大的优势是贴合写作意图。作者用二级标题划分章节,本来就是在告诉读者这一段讲一件事。沿着这条线切,块与块的边界就是事与事的边界,主题纯度天然就高。同时它还能保住表格和列表的完整性,只要在解析阶段识别出来,就可以整块保留,不参与按长度硬切。

它的局限在于对结构质量的依赖。标题层级混乱、通篇只有一个大标题、用加粗代替小标题、把三个不相干的话题塞进同一节,这些都会让结构切片失效。另外还有两个极端要处理:小节太短,比如只有一句话,切出来是个孤块,信息不足;小节太长,比如一节写了三千字,就必须在这一节内部再做一次带长度约束的二次切分。

所以真实系统里最常见的是混合策略:先用结构切出大边界,再在超长的小节内部按长度或语义二次切分,最后给每块补上标题路径。三层叠加,既保住了语义边界,又控制了块长。

六、重叠窗口:多切一点,是为了不漏

重叠窗口指的是相邻两个块之间故意保留的那段重复内容。它是切片里最容易被忽略、却最影响实际效果的参数之一。业界的经验值通常在块长的百分之十到百分之二十之间,也就是五百字的块留五十到一百字的重复。

重叠要解决的问题是边界损耗。一句关键的话如果正好落在切口上,前半句在上一块、后半句在下一块,两块单独看都不完整。有了重叠,这句话至少会在其中一块里完整出现一次,检索时就有机会被完整命中。对于定义句、结论句、带数字的句子,这一点尤其重要。

但重叠不是越大越好,代价有三个。第一是重复召回:如果两块内容高度重合,它们很可能同时进入前几名,占掉两个宝贵席位,实际上只提供了一份信息。第二是上下文冗余:模型看到两段几乎一样的话,容易反复强调同一个点,答案变得啰嗦。第三是成本:索引体积变大,检索和生成的 token 消耗同步上升。

重叠太小的问题则是边界信息彻底丢失。有些系统为了省钱把重叠设成零,结果就是跨块的逻辑关系全部断裂,尤其是因为所以、虽然但是这类跨句结构,被切开之后语义直接反转。所以合理的做法是:块越长,重叠比例可以越低;块越短,重叠比例反而要留足,因为短块本身的容错空间就小。

七、粒度之争:召回精度与答案完整性的跷跷板

切片粒度指的是块的平均大小。它是所有切片参数里对效果影响最直接的一个,也是最能体现取舍的一个。

小块的优势是准。当块只有一两百字时,它的向量非常聚焦,几乎只表达一个意思。用户问一个具体问题,比如某型号的输入电压范围是多少,小块能精准命中那句话所在的段落,相似度分数很高,噪声很低。缺点是碎:答案可能只说了半句,缺少前提条件、适用型号、例外情况,模型拿到之后只能给出一个干巴巴甚至可能误导的回答。

大块的优势是全。当块有八百到一千字时,它通常包含完整的论述:背景、条件、数据、结论、例外。模型拿到之后能组织出有层次的答案。缺点是不准:向量被多个主题平均,跟任何一个具体问题的相似度都不算高,很容易在召回阶段就落选。即使被召回,块里大量无关内容也会稀释注意力。

这里还有一个被反复验证的现象:当上下文里塞进很多材料时,模型对开头和结尾的信息利用得更好,对中间部分明显更迟钝,业内把这种现象叫做迷失在中间。这意味着即使你把大块塞进去了,块中间那几句话也未必真被用上。

所以粒度不该是一个全局统一的值,而应该跟着问题类型走。事实型问题,比如参数、价格、型号、地址、时限,适合小块高精度;综述型问题,比如某个方案怎么做、某类产品怎么选、某个政策怎么影响行业,适合大块保完整。成熟的做法是按内容类型分别设定:参数表和规格条目用小块,方法论和案例叙述用大块。

八、父子块:用小刀切,用大碗端

既然小块准、大块全,一个自然的想法是把两者的优点拼起来。父子块就是干这个的,它在业界还有一个更形象的说法,叫小块召回、大块喂给模型。

具体做法是建立两层结构。底层是子块,切得很小,一两句话或者一个小段落,专门用来做向量索引和相似度匹配。上层是父块,也就是子块所属的整个小节,可能有一千字。每个子块都记录着自己属于哪个父块。检索时仍然用子块去匹配问题,一旦某个子块命中,系统不把它交给模型,而是顺着记录找到它的父块,把父块整段送进上下文。

这样做的收益很直接:匹配的精度来自子块,回答的完整度来自父块。用户问一个很细的问题,系统能精准定位到那句话;模型拿到的却是包含这句话的完整论述,能自己补上前提和例外,答案的质量会明显不同。

它也有需要处理的问题。最典型的是去重:一个问题可能同时命中同一个父块下的三个子块,如果不做合并,父块会被重复送进去三次,上下文直接被浪费掉。工程上通常按父块编号归并,一个父块只取一次。另一个问题是父块不能太大,如果父块本身就有三千字,把它整段塞进去,等于又回到了大块稀释注意力的老路,所以要给父块也设一个上限。

还有一种变体叫句子窗口检索:索引的是一句话,命中之后取这句话前后各若干句作为上下文。它比父子块更轻,不需要维护两层文档,适合段落内部逻辑紧密、但段落之间跳跃较大的内容,比如技术问答、法规条文。

九、表格与列表:最容易被切碎的两类内容

在所有内容形态里,表格和列表是被切片损伤最严重的两类。原因在于它们的信息不写在句子里,而写在结构里,一旦结构被拉平成一行文字,信息就散了。

表格的失真通常有三种。第一种是表头与数据分离:一张十行的参数表被切成两块,第二块只剩数据,没有列名,读者看到十二伏、三安、负四十到八十五度,完全不知道这三列分别是电压、电流和工作温度。第二种是行列关系丢失:表格被展平成型号甲、电压十二伏、电流三安这样的流水文字,人和模型都要费力还原对应关系,稍有错位就会张冠李戴。第三种是单位与脚注丢失:单位常常写在表头或表下方的小字里,切口一过就没了,续航十二到底是小时还是天,无从判断。

列表的失真则是另一种形态。列表项往往是省略主语的短句,靠列表上方那句引导语来确定主语。比如上面写着 X200 支持以下安装方式,下面三条是壁挂、吊装、落地。如果切片正好切在引导语和列表项之间,这三条就成了三个没有主语的孤块,谁也不知道是谁在支持这些安装方式。

缓解办法有几条,都不复杂。表格尽量整表保留,不要按长度硬切;确实过大时按行切,但每一块都要重复一遍表头,并在块首补上表名和所属小节。列表尽量与引导语绑在一起,作为一个整体切;如果列表很长,至少给每一项补上前缀,把壁挂写成 X200 支持壁挂安装。数字后面永远带上单位,百分比说清楚是同比还是环比。

这些做法对写作者同样成立。你在写表格时把表头写清楚、把单位写进每一列的名称里、在表下方补一句这张表说明了什么,本质上就是在替未来的切片做加固。

十、几个容易被忽略的隐形失真源

除了切法本身,还有一批失真发生在切片之前,属于解析环节埋下的坑。它们不出现在任何切片参数里,却直接决定了块的质量。

  • 双栏排版错序。学术论文和部分宣传册是双栏排版,解析器如果按视觉位置从左到右读,会把左栏第一行和右栏第一行拼成一句话,整段语义直接报废。
  • 页眉页脚混入正文。页码、公司名、版权声明会在每一页重复出现,被切进每一个块,既污染向量,也让模型误以为这是重要信息。
  • 图片里的文字没有被识别。参数表做成图片、价格写在截图里,解析阶段拿不到文字,这块内容对检索系统等于不存在。
  • 中英混排的长度估算偏差。同样一段话,按汉字数算和按 token 数算能差出一大截,分词器不同结果也不同。用固定字符数当长度上限,很容易在实际 token 上超标。
  • 全角半角与空格问题。数字和单位之间多一个空格、括号用了全角,都会影响关键词匹配和向量质量,尤其是型号、规格这类需要精确匹配的字符串。

这些问题没法靠调切片参数解决,只能靠在解析和清洗阶段逐个排查。判断方法很朴素:随便抽十个块出来读一遍,如果有一半读不懂,问题多半不在切法,而在解析。

十一、对内容创作者的具体启示

理解了上面这些机制,写作时其实可以做很多事,让自己的内容在检索阶段就占据优势。这些动作不需要懂算法,只需要改写作习惯。

第一,一个二级标题只讲一件事,并且把这件事写进标题里。标题不要写关于我们、更多内容、相关阅读,要写 X200 的三种安装方式与承重要求。标题本身就是块的标签,标签越具体,块被命中的概率越高。

第二,每一节的第一句话要能独立成立。这句话要带上主语和核心对象,不要用它、该产品、上述方案开头。因为在切片之后,这一节的第一句很可能就是整个块的开头,读者和模型都只能从这里开始理解。

第三,把结论写在段首,把论证放在后面。倒金字塔结构对人不算友好,但对检索极其友好:模型只需要读到第一句就能判断这个块有没有用,剩下的内容用来支撑答案的可信度。

第四,关键事实用完整的陈述句写,不要只放在图里、表里或者视频里。能被检索到的只有文字。参数、价格、时限、适用条件、例外情况,都要有对应的文字表述。

第五,控制段落长度。一段写三到六句,大约一百到两百字,是最适合被切片的密度。通篇八百字不分段,等于把切点交给了机器的猜测。

第六,术语要统一。同一个东西不要一会儿叫智能网关、一会儿叫边缘盒子、一会儿叫采集终端。检索系统不知道它们是同一个东西,用户也不知道。

第七,表格要能脱离正文被读懂。表名、表头、单位、注释,四样齐全,这张表才有可能被整块引用。

十二、一份可执行的自查清单

如果你想知道自己的页面在生成式引擎里被切得怎么样,可以按下面这份清单逐条过一遍。它不需要任何工具,人工就能完成大部分判断。

  • 孤块测试:随机抽出五个小节,只看标题和这一节的内容,能不能读懂它在说什么。如果需要翻回上文才知道主语是谁,这一节就不合格。
  • 标题测试:把所有二级标题单独列出来,能不能看出这篇文章讲了哪几件事。如果标题全是概述、详情、优势,说明标题没有承担导航功能。
  • 首句测试:每一节的第一句是否自带主语和对象,是否出现了它、该方案、上述这类必须依赖上文的指代。
  • 表格测试:把表格单独截出来发给一个不了解背景的同事,他能不能看懂每一列是什么、单位是什么。
  • 列表测试:把列表单独截出来,每一项是否还有明确的主语。如果只剩支持多种格式、可选配这样的短语,就需要补前缀。
  • 数字测试:所有数字是否都带了单位和口径,百分比是否说明了基数,时间是否说明了起算点。
  • 问句测试:用真实用户的十个问句去搜自己的站,看返回的段落是不是你希望被引用的那一段。搜不到,说明切点和问法对不上。
  • 重复测试:同一件事是否在文章里用不同说法讲了三四遍。在切片之后,这些重复会变成多个高度相似的块,互相挤占召回席位。

这八条里,孤块测试和首句测试的性价比最高。改这两件事几乎不需要成本,却能让块的可用率明显上升。

常见问题

切片长度到底设多少合适

没有通用答案,但有一个可用的起点:中文网页内容按三百到五百字一块,事实型内容往下压到一百五到两百字,方法论和案例往上放到八百字左右,重叠留百分之十到十五。定完之后不要凭感觉,用二十条真实问句做一次召回测试,看命中的块是否包含完整答案,再微调。真正决定效果的不是某个神奇数字,而是块内信息是否自足。

重叠窗口一定要设吗

只要用了按长度硬切,就建议设。因为硬切一定会切断句子,重叠是唯一的补救手段。如果用的是严格按标题的结构切片,块边界本来就在段落之间,重叠可以设得很小甚至设为零,因为切断的位置天然合理。判断标准很简单:看切口附近有没有被拦腰截断的句子,有就需要重叠。

文章结构很乱还能做结构切片吗

能,但要先补结构。最省力的做法是在解析阶段做一次标题识别,把加粗的短行、独立成行的编号、字号明显更大的文本提升为标题,再按层级挂靠。如果连这个都做不到,就退回固定长度切片加语义切片,同时接受效果打折。结构是内容资产,补齐它对人和对机器都有好处。

为什么同一篇文章在不同工具里切出来的块不一样

因为切片参数和解析能力不同。块长上限、重叠比例、长度按字符还是按 token 计算、标题识别规则、表格是否保留、是否注入标题路径,每一项都会改变结果。同一个模型家族的不同分词器,对同一段中文的 token 计数也能差出两三成。所以跨工具比较块数量意义不大,应该比较的是同一个问题能不能召回完整的答案。

表格到底该整块保留还是拆开

优先整块保留。表格的价值在于行列对应关系,一旦拆开,关系就断了。只有当表格超过几百行、整块塞进上下文会挤占其他内容时,才考虑按行拆,而且必须每块重复表头、补上表名和所属小节。宁可多占一点索引空间,也不要制造一批读不懂的数据块。

父子块会不会让存储和成本翻倍

会有增加,但没有想象中那么多。子块和父块是同一份内容的不同粒度,父块通常只在生成阶段才被取出,不参与向量检索,所以索引体积的增加主要来自子块。真正的成本风险在于父块过大导致上下文膨胀,以及多个子块命中同一父块造成重复。做好按父块去重、给父块设上限,成本是可控的。

内容创作者需要懂向量和余弦相似度吗

不需要会算,但需要知道它在干什么。你只需要记住一件事:系统判断两个块像不像,靠的是把它们压成向量之后比方向,而向量是把整块内容平均出来的结果。所以一块内容越杂,它的向量越模糊,越难被精准匹配。这个直觉足以支撑绝大多数写作决策,比如一节只讲一件事、标题写具体、首句带主语。

怎么判断自己的页面在生成式引擎里被切得好不好

三个可操作的办法。一是人工做孤块测试,把每个小节单独截出来读,看能不能读懂。二是用真实问句在主流生成式引擎里提问,看答案是否引用了你的页面、引用的是哪一段,引错了说明那一段的表述有歧义。三是看引用的颗粒度,如果引擎只能引用你的整篇文章而无法定位到具体段落,通常说明你的段落划分太粗,或者关键结论散落在多个段落里。

  • Related Posts

    • GEO百科
    • 3 11 月, 2026
    • 24 views
    • 1 minute Read
    生成式引擎答案置信度与不确定性表达机制百科

    什么是生成式引擎的答案置信度表达 当用户在生成式引擎中提出一个问题,模型给出的不是一个简单的搜索结果…

    • GEO百科
    • 2 11 月, 2026
    • 41 views
    • 0 minutes Read
    生成式引擎用户反馈闭环机制百科:点赞点踩与答案改写的相互作用

    随着生成式引擎逐渐成为用户获取信息的主要入口,传统搜索以链接列表呈现结果的模式,正在被直接给出整合式…

    发表回复

    您错过的内容

    多品牌集团GEO预算分配权重模型与测算实操

    • 4 11 月, 2026
    • 2 views
    多品牌集团GEO预算分配权重模型与测算实操

    GEO对高客单价品类议价能力的价值测算

    • 3 11 月, 2026
    • 21 views
    GEO对高客单价品类议价能力的价值测算

    GEO与传统广告投放协同价值测算双引擎模型

    • 2 11 月, 2026
    • 27 views
    GEO与传统广告投放协同价值测算双引擎模型

    GEO风险对冲价值测算:把增长从单一渠道依赖中解绑

    • 1 11 月, 2026
    • 44 views
    GEO风险对冲价值测算:把增长从单一渠道依赖中解绑

    GEO投入的边际收益递减与停止加码拐点测算

    • 31 10 月, 2026
    • 47 views
    GEO投入的边际收益递减与停止加码拐点测算

    GEO内容资产复利测算:一篇文章三年能带来多少线索

    • 30 10 月, 2026
    • 53 views
    GEO内容资产复利测算:一篇文章三年能带来多少线索