免费POC, 零成本试错
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


先分块再向量化已经过时!先embedding再chunking才是王道

发布日期:2025-10-28 18:08:04 浏览次数: 1522
作者:Zilliz

微信搜一搜,关注“Zilliz”

推荐语

RAG技术迎来革新!先embedding再chunking策略突破传统分块局限,让语义检索更精准高效。

核心内容:
1. 传统chunking方法的痛点分析:固定分块与递归分块的局限性
2. 先embedding再chunking的创新思路与优势解析
3. Max-Min语义分块等前沿解决方案的技术解读

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家
图片
图片

先embedding再chunking的时代来了。

图片

在RAG应用开发中,第一步就是对于文档进行chunking,chunk质量会直接决定整个RAG检索的质量。

过去,行业通常会采用先chunking再embedding,最后检索、生成的思路进行。

但这个思路中,在chunking环节,无论是固定长度分块,还是递归分块,其实都解决不了精度和上下文的平衡的问题

在此背景下,先embedding再chunking的思路逐渐被更多人接受

典型代表是Jina AI提出的Late Chunking策略,以及Max–Min semantic chunking。Late Chunking详见Late Chunking×Milvus:如何提高RAG准确率

本文将对Max–Min semantic chunking进行重点解读。

01 

常见chunk思路解读

一个典型的RAG流程是这样的:

第一步,数据清洗与处理对元数据去除无关内容(如页眉页脚、乱码),统一格式,并将长文本分割成短片段(如 500 字 / 段),避免向量表示时丢失细节。

第二步,向量生成与存储:用embedding模型(如 OpenAI 的 text-embedding-3-small、LangChain 的 BAAI embedding)将每个文本片段转换成向量(Embedding)然后将其存储到向量数据库(如 Milvus、Zilliz Cloud),数据库会通过不同索引方式优化语义检索效率。

第三步,查询:将用户的自然语言查询(如 “RAG 如何解决大模型幻觉问题”)通过相同的embedding模型转换成向量后,向量数据库根据查询向量,快速找到语义最相似的Top-K 个文本片段

第四步,生成回答:将检索到的 Top-K 文本片段作为上下文,和用户的原始查询一起拼接成提示词(Prompt),传给大模型,大模型据此生成回答。

在这个过程中,高效的文档分块是整个流程中的第一步它将文档拆成小块(一个段落、一节或一组句子),可以有效的提高后续召回内容的准确性与细节丰富度。

但做好一个高质量的chunking并不容易。

目前行业有两种常见的分块方法:

  • 固定大小分块简单粗暴,按固定的字符数或token数来切分。优点是效率高,但没有语法和语义意识,随便切割,容易让句子甚至单词断裂,直接导致不连贯。

  • 递归字符分块这个思路比固定大小聪明些,按优先级比如段落、换行符、句子等逐步切分。它会先按段落切分,如果段落太大,就会递归地按换行符、句子等切分。优点是简单且有语义感,能保证块内的一定连贯性,但可能仍然存在断层。但是部分文档可能缺乏清晰结构,或章节、段落长度差异过大,这会影响检索算法向 LLM 提供最优相关文本的能力;此外,该方法还可能生成超出 LLM 上下文窗口的分块。

以这两种方式进行分块的时候,我们经常要考虑两个问题:精度和上下文的平衡

越小的块,精度越高,但上下文可能不全;越大的块,语境更完整,但可能包含太多无关信息。

2025年Bhat等人的研究发现,分块大小这个问题没有标准答案,但整体上,事实类问题适合小块(64-128 token),而叙事类问题则适合大块(512-1024 token)。

有没有更聪明一点的办法?不要完全被长度限制的分块思路?

答案是有的——Max–Min semantic chunking。

论文链接:https://link.springer.com/article/10.1007/s10791-025-09638-7?utm_source=chatgpt.com

02 

Max–Min semantic chunking 解读

Max–Min semantic chunking的核心是通过动态语义评估来实现分块优化。

相比传统RAG流程,先chunking再embedding,Max–Min semantic chunking会先对所有句子进行embedding,然后在此基础上进行分块

Max–Min semantic chunking会将分块任务视为动态 / 时序聚类问题:基于句向量的相似度,将不同句子组合成新的分块。

但与传统聚类方法不同,该方法需尊重文档中句子的时序性—— 即同一聚类内的句子必须连续。算法会按顺序逐句处理文档,决定每个句子是加入当前分块,还是开启新分块。

具体步骤如下:

  1. 生成embedding并初步聚类:首先使用文本嵌入模型,将所有句子映射到高维空间。设文档包含 n 个句子,通过计算,已将前n-k个句子归入当前分块 C。此时需决策:n-k+1个句子,是加入分块 C,还是创建新分块。

  2. 计算分块内最小相似度:计算当前分块 C 内所有句子向量间的最小 pairwise 余弦相似度,识别分块内语义最不相似的句子对,衡量分块内句子的关联紧密程度,进而判断新句子是否与分块内句子足够相似。

  3. 计算新句子与分块的最大相似度:计算当前分块 C 内所有句子的最大余弦相似度,对比新句子与现有分块的最高语义相似度。

  4. 分块决策依据核心决策逻辑为:若分块 C 内的最小相似度小于新句子与分块 C 的最大相似度,则新句子加入分块 C,否则开启新分块。

  5. 阈值调整(分块大小优化):对于如何调整块内语义相关度,我们可以动态调整分块大小、相似度阈值等等参数。

  6. 初始化处理(分块中仅有单个句子时):当当前分块仅包含 1 个句子时,需特殊处理初始化问题,直接对比第一句与第二句相似度与我们设置的阈值常数,高于常数就算入同一个分块,低于这个常数就开启新的分块。

03 

Max–Min semantic chunking的优劣势

Max–Min semantic chunking的创新点一共有三:

  1. 动态分块逻辑:摒弃固定尺寸或结构依赖的静态规则,以 “句子语义相似度” 为核心决策依据。具体流程为:先计算当前分块内句子的最小语义相似度(衡量分块内语义关联的下限),再计算新句子与当前分块的最大语义相似度(衡量新句子与分块的适配度);若最大相似度高于最小相似度,则将新句子纳入当前分块,否则启动新分块。

  2. 轻量化参数设计:仅需调整 3 个核心超参数(最大分块大小、一二句之间的最低语义相似度需求、新句子与块内句子最大相似度的最低门槛),且超参数逻辑与分块大小自适应 —— 分块规模越大,新句子纳入的阈值越高。

  3. 计算资源复用:复用 RAG 系统原生所需的 “句子嵌入向量”(无需额外计算嵌入),仅在分块阶段增加轻量化的余弦相似度计算,整体计算开销低于传统语义分块方法。

但Max–Min semantic chunking方法也有其不足,因为是依据时序聚类,因此处理长文档时可能会丢失文档中长距离的上下文依赖关系

如果关键信息散落在多个文本块中,脱离上下文的文本分块片段很可能失去其原有的意义,导致后续的召回效果比较差。

以Milvus 2.4.13 release note为例,假如分为如下两个文档块,如果我们要查询Milvus 2.4.13有哪些新功能?,直接相关内容在分块2里,而Milvus版本信息在分块1里,此时,Embedding 模型很难将这些指代正确链接到实体,从而产生质量不高的Embedding。

此外,由于功能描述与版本信息不在同一个分块里,且缺乏更大的上下文文档,LLM 难以解决这样的关联问题。

对于这种问题,我们可以采用滑动窗口重新采样、重叠的上下文窗口长度以及多次文档扫描等方式来解决

阅读推荐
放弃ES+Mongo,如何用Milvus一套系统搞定千万用户视频检索*关键词
DeepSeek-OCR解读:视觉如何成为长上下文压缩的新思路" data-itemshowtype="0" linktype="text" data-linktype="2">DeepSeek-OCR解读:视觉如何成为长上下文压缩的新思路
Agent失控" data-itemshowtype="0" linktype="text" data-linktype="2">比LangChain强在哪?Parlant × Milvus动态规则告别agent失控
多少做RAG的人,连分词都搞不定? Milvus Analyzer指南
大模型贵,小模型蠢!vLLM+Milvus+智能路由,无痛降本50%
图片
图片

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询