在AI大模型爆发的当下,检索增强生成(RAG)早已不是什么新鲜概念。无论是智能客服自动解答用户疑问,还是学术研究者快速梳理文献要点,亦或是企业搭建内部知识库助手,RAG技术都在背后发挥着关键作用。我们常说RAG的核心是"检索+生成",大家也都在拼命卷检索模型的召回率,想让模型更快更准地找到相关信息,同时也在优化生成模型的流畅度和准确性,力求输出的内容既专业又易懂。但很多人都忽略了一个藏在流程最前端的关键环节,那就是文档分块。

可能有人觉得,分块不就是把长文档切成一小块一小块吗?这有什么技术含量。但实际落地过RAG项目的人都知道,分块环节直接决定了后续检索和生成的效果上限。就像我们做饭,食材处理得好不好,直接影响最终的菜品口感。如果食材切得大小不一,要么煮不熟要么煮烂,同理,文档分块如果做得不好,后续再强的检索模型和生成模型,也很难输出令人满意的结果。今天,我们就来深度聊聊分块这个"隐藏王者",重点解析一款融合了Small2big思想和语义分块的创新方案------LGMGC(Logits-Guided Multi-Granular Chunker),看看它是如何解决传统分块的痛点,让分块从"机械切割"升级为"智能拆分"的。
在聊LGMGC之前,我们先静下心来想想,为什么分块值得我们花这么多心思去研究。毕竟在RAG的整个流程里,分块似乎是最"不起眼"的一步,但恰恰是这一步,埋下了很多隐患。
我们都清楚RAG的基本流程:分块→检索→生成。先把动辄几万字甚至几十万字的长文档,切割成一个个大小合适的块,然后当用户提出问题时,检索模块从这些块里找出和问题最相关的部分,最后把这些相关块作为上下文喂给大模型,让模型基于这些信息生成答案。这个流程看似简单,但分块环节的一点点偏差,都会在后续环节被无限放大。
传统分块方法最大的问题,就是粒度不合理。要么是切得太碎,把完整的语义单元拆得支离破碎。比如一句话"人工智能技术的快速发展,给医疗行业带来了革命性的变化",如果被硬生生拆成"人工智能技术的快速发展"和"给医疗行业带来了革命性的变化",那么检索时模型单独看到其中任何一部分,都很难理解完整的语义,更别说精准匹配用户的问题了。这种情况在处理叙事类文本或者学术论文时尤为明显,一段文字里的逻辑连贯性被破坏后,后续的检索和生成都会变成"无的放矢"。
要么就是切得太大,一个块里包含了大量无关信息。比如把一整篇学术论文的一个章节直接当成一个块,里面可能包含了研究背景、实验方法、实验结果、结论等多个部分。当用户只想了解其中的实验结果时,检索模型不得不从这个庞大的块里"大海捞针",不仅检索效率低,还很容易把无关的信息也带进来,导致大模型生成的答案冗余、不准确。这种情况在企业知识库场景中很常见,很多企业的文档都是长篇大论的规章制度或项目报告,粗放式的分块会让RAG系统的实用价值大打折扣。
除了粒度问题,现有分块方法还面临着"效果"和"成本"的两难抉择。早期的递归分块是最粗放的方式,完全不考虑语义,只按照固定的字符长度或单词数量来切割文档。这种方法的优点是简单、高效、成本低,但缺点也很明显,就是语义连贯性极差,很容易出现我们上面说的"切得太碎"或"切得太大"的问题,完全无法满足高精度RAG场景的需求。
后来出现了语义分块方法,比如基于句子嵌入距离的分块,通过计算句子之间的语义相似度,来判断哪里是合适的分割点。这种方法比递归分块要智能得多,能够在一定程度上保证语义的完整性,但也存在明显的短板。比如在寻找最优分割点时,往往需要进行大量的计算和迭代,而且对于不同类型的文本,适配性也参差不齐,有时候还是会出现语义边界判断不准的情况。
再到后来,有人提出用大模型直接进行分块,通过给大模型喂入提示词,让大模型自主判断文档的语义边界,然后输出合适的块。这种方法的效果确实好,几乎能完美保证语义的完整性,分块质量远超传统方法。但问题也随之而来,这种方式需要反复调用大模型的API,每调用一次都要花费一定的费用,对于需要处理大量文档的企业来说,长期下来成本非常高昂。而且反复调用API还会导致处理速度变慢,同时企业的核心文档数据需要传给第三方API,还存在数据安全泄露的风险,这也是很多企业在落地时非常顾虑的一点。
所以说,一个好的分块方法,必须要做到"语义完整+粒度灵活"。既要保证每个块都是一个完整的语义单元,不被随意拆分,又要能够根据不同用户的问题需求,提供不同大小的块用于检索和生成。检索时需要更精细的小块,这样才能精准定位到答案所在的位置;生成时则需要更完整的大块,这样才能为模型提供充足的上下文信息,让生成的答案更连贯、更全面。而LGMGC的核心目标,就是解决这个"语义完整"和"粒度灵活"的矛盾,用一种简单、高效、低成本的方式,实现分块效果的升级。
那么LGMGC到底是如何实现"智能分块"的呢?其实它的核心思路非常清晰,简单来说就是"先合后分",先通过语义分块得到"语义完整的父块",再把父块拆成"多粒度的子块",通过这两个步骤的结合,既保证了语义的连贯性,又兼顾了检索的灵活性。整个框架主要包含两个关键模块,这两个模块相互配合,形成了1+1>2的效果。
第一个模块是Logits-Guided Chunker,核心作用是利用小模型的语义理解能力,切出语义完整的父块。这里可能有人会问,Logits是什么?其实不用把它想得太复杂,简单来说,Logits就是大模型在预测下一个token(字符或单词)时输出的概率信息。比如模型在处理一句话的末尾时,会预测下一个token是句子结束标记[EOS]的概率,这个概率越高,就说明模型认为这句话已经说完了,语义是完整的。LGMGC正是利用了模型的这一特性,来精准判断文档的语义边界。
具体来说,这个模块的操作流程分为三步。第一步,先对原始文档进行初步处理,用递归分块的方式把文档切成固定大小(比如θ个单词)的初始块。这一步的目的是为了避免一开始就处理过长的文本,提高后续处理的效率,相当于先给文档做一个"粗加工"。第二步,给每个初始块添加一个简单的提示词,比如"请基于前面的句子继续写作",然后把这个带有提示词的初始块输入到预训练的小模型中,让模型进行一次前向传播,计算出每个句子末尾出现[EOS]标记的概率p[EOS]。这里的关键是"只做一次前向传播",不需要让模型输出完整的分块结果,只需要获取它的Logits信息就行,这样就大大降低了计算成本和时间成本。第三步,从计算出的p[EOS]中,选择概率最高的位置作为分割点,分割点前面的文本就是一个"父块",这个父块保证了语义的完整性。然后把分割点后面剩下的内容,和下一个初始块拼接在一起,重复上面的步骤,直到整个文档都被处理完,得到一系列语义完整的父块。
这个模块的优势非常突出。首先,它的语义边界判断非常精准,因为它是基于模型对文本的理解来判断的,而不是像传统方法那样基于固定长度或简单的语义相似度。其次,它的成本非常低,只需要调用一次小模型的前向传播,不需要反复调用API,而且小模型本身的部署成本也很低,支持本地部署,完美解决了大模型分块成本高、数据安全风险大的问题。最后,它的处理速度很快,一次前向传播就能完成一个初始块的处理,效率远超需要反复迭代的语义分块方法。
第二个模块是Multi-Granular Chunker,核心作用是借鉴Small2big的思想,把父块拆成多粒度的子块,适配不同的查询需求。Small2big是近年来在RAG领域非常流行的一种思路,核心逻辑就是"检索用小块,生成用大块"。检索时,小块的精度更高,能够精准定位到和问题最相关的信息;生成时,大块的上下文更完整,能够让模型更好地理解信息之间的逻辑关系,生成更连贯、更全面的答案。LGMGC的这个模块,就是把这个思路落到了实处。
这个模块的操作非常直观,主要分为两步。第一步,对第一步得到的父块进行递归拆分。假设父块的大小是θ个单词,那么就把它拆成θ/2、θ/4大小的子块,以此类推,而且在拆分的过程中,会严格保证句子不被拆分,确保每个子块的语义也是完整的。比如父块的大小是400个单词,那么拆分后就会得到200个单词、100个单词大小的子块,这些子块都是从父块中拆分出来的,语义上既独立又连贯。第二步,在推理阶段,父块的相似度得分由它所有子块(包括父块本身)的最高得分决定。比如一个父块拆分成了200个单词和100个单词两个级别的子块,那么在检索时,会分别计算这个父块以及它的所有子块和用户问题的相似度,然后取其中的最高得分作为这个父块的最终得分。最后,根据得分高低,选择前k个父块传给大模型生成答案。
这种多粒度的设计,让LGMGC能够完美适配RAG的"检索+生成"全流程。在检索阶段,通过小块的高精度匹配,快速找到和问题最相关的信息;在生成阶段,通过父块的完整上下文,为模型提供充足的信息支撑,让生成的答案既精准又连贯。而且这种设计还能提高RAG系统的鲁棒性,不管用户的问题是宽泛的还是具体的,都能找到合适的块来匹配,避免了单一粒度分块在面对不同类型问题时的局限性。
把这两个模块结合起来,就是LGMGC的整体流程。先通过Logits-Guided Chunker对文档进行"精加工",生成一系列语义完整的父块;再通过Multi-Granular Chunker对父块进行"细拆分",生成不同粒度的子块;最后在推理阶段,结合子块的高精度检索和父块的完整上下文生成,实现RAG效果的最大化。这种"先合后分"的思路,既解决了传统分块语义不连贯的问题,又解决了单一粒度适配性差的问题,堪称分块环节的"最优解"之一。
当然,任何技术方案的好坏,都需要通过实验来验证。LGMGC的论文中,用了两个主流数据集、多种基线方法做了对比实验,结果非常有说服力。我们不妨结合实验结果,看看LGMGC到底有多"能打"。
首先来看实验的基础设置。论文选择了两个具有代表性的数据集,分别用于测试检索性能和问答性能。其中,检索性能测试用的是GutenQA数据集,这个数据集被称为"大海捞针"型数据集,每个问题的答案只存在于1-2句话中,非常考验分块的精准性,只要分块稍微有一点偏差,就很难检索到正确的答案。问答性能测试用的是LongBench的3个单文档数据集,分别是NarrativeQA、MultifieldQA、QasperQA,这三个数据集涵盖了叙事文本、多领域文本、学术论文等多种常见场景,都是实际应用中经常遇到的抽取式问答场景,测试结果的实用性很强。
评估指标方面,检索性能主要用了DCG@k和Recall@k两个指标。DCG@k衡量的是检索结果的相关性和排名,得分越高,说明检索出来的结果不仅相关,而且排名越靠前;Recall@k衡量的是检索系统能不能找到相关的证据,得分越高,说明漏检的概率越低。问答性能主要用了F1分数,这个指标衡量的是预测答案和真实答案的匹配度,得分越高,说明生成的答案越准确。
基线方法方面,论文选择了目前主流的几种分块方法,包括递归分块、语义分块、段落级分块、LumberChunker(现有大模型分块方法的代表),同时还加入了LGMGC的两个子模块(LG Chunker、MG Chunker)进行消融实验,以此来验证两个模块的有效性。关键参数方面,所有方法都测试了200、300、500个单词三种常见的块大小,保证了实验的公平性。而且LGMGC用的是8位量化的Llama3-8b模型,这种模型属于轻量化模型,部署成本很低,非常适合企业实际落地使用。
从实验结果来看,LGMGC的表现可以说是"全面碾压"基线方法,不管是检索性能还是问答性能,都处于领先水平。我们先看检索性能的测试结果,也就是GutenQA数据集上的表现。
首先,LG Chunker(单模块)的表现就非常亮眼。不管块大小是200、300还是500个单词,LG Chunker的DCG@k和Recall@k分数,都远超递归分块、语义分块和段落级分块这三种传统方法。这说明用Logits信息来判断语义边界的思路是完全可行的,而且效果非常好,比传统的分块方法更能精准地找到语义完整的块。
然后,我们把LG Chunker和LumberChunker做对比。LumberChunker是现有大模型分块方法的代表,效果已经非常出色。从实验结果来看,LumberChunker在部分指标上略高于LG Chunker,但两者的差距非常小。而LG Chunker的优势在于成本和部署难度,LumberChunker需要反复调用大模型API,成本高、速度慢,还存在数据安全风险;而LG Chunker只需要一次前向传播,成本低、速度快,还支持本地部署,对于企业来说,实用性要高得多。
再看MG Chunker(单模块)的表现,多粒度分块的优势非常明显。MG Chunker的得分比传统分块方法高很多,这说明多粒度的设计确实能够提高检索的灵活性和精准性,让检索系统能够更好地适配不同的问题需求。
最后是LGMGC(融合后)的表现,它在所有指标上都拿到了最好的成绩,实现了"登顶"。而且更重要的是,LGMGC的标准差最小,这说明不管块大小怎么变化,它的性能都非常稳定,不需要用户花大量的时间去调优超参数。这一点对于实际落地来说非常重要,很多传统分块方法对块大小非常敏感,块大小稍微调整一下,性能就会出现很大的波动,用户需要反复测试才能找到合适的块大小,而LGMGC则完美解决了这个问题。
除了检索性能,问答性能的测试结果更能体现LGMGC的实际价值。LongBench数据集的测试结果进一步证明了LGMGC的优势,主要体现在两个方面。第一,用RAG流程比直接喂整个文档效果好得多。把文档分块后进行检索再生成,比直接把整个文档截断后喂给大模型的F1分数高很多,这也从侧面印证了分块环节的重要性,好的分块能够为后续的生成环节提供高质量的"素材",让模型更容易找到准确的答案。第二,LGMGC在全场景下都表现最优。不管是用BGE-Large还是E5-Large作为检索器,不管是用Llama3-8b还是Llama3-70b作为生成器,LGMGC的F1分数都是最高的。这说明LGMGC的分块效果具有很强的通用性,不管搭配哪种检索器和生成器,都能发挥出很好的效果,不会因为依赖特定的模型而限制其应用场景。
结合实验结果和个人在RAG落地过程中的实际体验,我认为LGMGC的核心价值,在于它抓住了RAG分块的核心矛盾,并用简单高效的方式解决了它。它的优势可以总结为四个方面,每一个方面都切中了实际落地中的痛点。
第一个优势是语义连贯性强。通过Logits信息判断语义边界,能够精准识别文档中的完整语义单元,避免了传统分块方法把句子拆碎的问题。在实际应用中,这一点非常重要,比如处理学术论文时,LGMGC能够精准地把一个实验方法、一个实验结果拆分成独立的父块,检索时能够快速定位到相关的内容,生成的答案也更准确、更连贯。
第二个优势是粒度适配性好。多粒度子块的设计,让LGMGC能够完美适配RAG的"检索+生成"全流程,检索时用小块保证精度,生成时用大块保证上下文完整。在实际落地中,用户的问题需求是多样化的,有的用户需要精准的答案,有的用户需要全面的解释,LGMGC能够根据不同的需求,自动匹配合适的块粒度,提高了RAG系统的用户体验。
第三个优势是部署成本低。LGMGC采用的是轻量化的小模型,支持本地部署,不需要反复调用大模型API,既降低了成本,又保证了数据安全。对于中小企业来说,这一点尤为重要,很多中小企业因为成本和数据安全的顾虑,不敢轻易尝试RAG技术,而LGMGC的出现,为它们提供了一个低成本、高安全的分块解决方案,让RAG技术的落地门槛大大降低。
第四个优势是性能稳定。LGMGC对块大小不敏感,不管块大小是200、300还是500个单词,性能都非常稳定,不需要用户花大量的时间去调优超参数。在实际落地中,这能够大大提高项目的推进效率,减少不必要的测试和调试工作,让技术人员能够把更多的精力放在检索和生成模块的优化上。
正是因为这些优势,LGMGC的适用场景非常广泛。不管是处理叙事类文本,比如小说、故事、新闻报道;还是处理学术类文本,比如论文、研究报告;亦或是处理企业类文本,比如规章制度、项目文档、客服话术,只要是需要抽取式问答的RAG场景,LGMGC都能派上用场。比如在智能客服场景中,LGMGC能够把客服话术文档拆分成语义完整的块,当用户提出问题时,快速检索到相关的话术,生成准确的回复;在学术研究场景中,LGMGC能够把大量的文献拆分成不同粒度的块,研究者可以快速定位到相关的研究方法、实验结果,提高文献阅读和研究的效率;在企业知识库场景中,LGMGC能够把企业的规章制度、项目文档拆分成易于检索的块,员工可以快速找到自己需要的信息,提高工作效率。
当然,我们也要客观地看待LGMGC的不足,不能把它神化。从个人的实际实践来看,如果单纯追求极致的分块效果,LumberChunker这类纯大模型驱动的语义分块方法,效果会略胜一筹。因为这类方法是让大模型直接理解整个文档的语义,然后进行分块,能够处理一些更复杂的语义场景,比如多段落之间的逻辑关联、跨句子的语义衔接等。但随之而来的是更高的API调用成本、更长的处理耗时,以及数据安全方面的风险。所以在实际落地时,我们需要根据自己的需求做取舍,如果追求极致效果,并且不介意成本和数据安全风险,那么可以选择纯大模型分块方法;如果追求"效果+成本+安全"的平衡,那么LGMGC无疑是更好的选择。
除了LGMGC本身,还有一个值得我们关注的问题,那就是分块效果的自动评估。目前行业内还缺乏统一的分块效果评估标准,很多时候我们都是通过下游的检索性能和问答性能来间接评估分块效果,比如看DCG@k、Recall@k、F1分数等指标的变化。但这种间接评估的方式,很难精准地定位分块环节的问题,比如到底是语义边界判断不准,还是粒度设计不合理,导致了下游性能的下降。而且不同的数据集、不同的应用场景,对分块效果的要求也不同,很难用一套统一的指标来衡量所有场景下的分块效果。
结合互联网领域的相关研究和实践,目前有一些初步的分块效果评估思路。比如从语义完整性、粒度合理性、检索适配性三个维度来构建评估体系。语义完整性可以通过计算块内句子的语义相似度、判断块是否包含完整的语义单元来评估;粒度合理性可以通过分析块的大小分布、判断块是否存在过大或过小的情况来评估;检索适配性可以通过分析块与查询的匹配度、判断块是否能够支撑精准检索来评估。当然,这些思路还处于初步阶段,还需要进一步的研究和实践来完善。后续我也会专门整理相关的研究和实践经验,给大家系统介绍如何科学衡量分块质量,感兴趣的朋友可以持续关注。
回到RAG技术本身,分块作为整个流程的"第一步",其重要性不言而喻。随着RAG技术的不断发展,越来越多的人开始关注分块环节,各种创新的分块方法也不断涌现,LGMGC只是其中的一个优秀代表。但无论分块方法如何创新,其核心目标始终不变,那就是实现"语义完整+粒度灵活",为后续的检索和生成环节提供高质量的支撑。
在实际落地RAG项目时,我们不能盲目追求新技术、新方法,而是要结合自己的实际需求,选择最适合的分块方案。对于大多数企业和开发者来说,LGMGC无疑是一个非常值得尝试的选择,它不仅效果出色,而且成本低、易部署、稳定性强,能够快速落地并产生价值。当然,我们也可以在LGMGC的基础上,结合自己的应用场景进行优化和改进,比如根据文本类型调整块大小、优化提示词提高语义边界判断的精准性等,让分块效果更贴合自己的实际需求。
最后,我想说的是,RAG技术的发展,从来不是单一环节的优化,而是整个流程的协同升级。分块、检索、生成,这三个环节相互影响、相互制约,只有每个环节都做到极致,才能实现RAG效果的最大化。而分块作为整个流程的基础,其重要性不容忽视。希望今天的分享,能够让大家对分块环节有更深入的理解,也希望LGMGC这种优秀的分块方法,能够帮助更多的人解决实际落地中的问题,推动RAG技术在更多场景的普及和应用。未来,随着大模型技术的不断进步,相信会有更多更优秀的分块方法出现,让RAG技术的效果更上一层楼,为我们的工作和生活带来更多的便利。