立即注册

2PLM

查看: 100|回复: 0

图解AI:RAG分块策略

[复制链接]
发表于 2025-6-13 17:57:24 | 显示全部楼层 |阅读模式
RAG作为大模型入门级的应用,在处理策略上要比写提示语好落地的很多。
刚刚经历了一个AI落地大项目的上线,提示语写了将近5000字。比起写提示语我还是更愿意写crud。
步入今天的正题聊聊 RAG 里的五种分块策略!
经典流程

因为上传的文档可能很大,所以第一步「检索文档」里还涉及「分块」,也就是把大文档拆成更小、更易处理的片段。这一步特别关键,因为它得确保文本能适配嵌入模型的输入尺寸。

下面就来详细说说五种分块策略,咱们一个个搞明白!

固定大小分块

按预设的字符数、单词数或 Token 数,把文本切成均匀的片段。
举个例子(配合刚才那张图里的蓝色重叠部分):比如设定每块 500 字,那前一块的最后 100 字和下一块的前 100 字会有重叠。
优点:实现起来简单,而且所有块大小一致,方便批量处理。
缺点:容易切断句子或完整的意思,重要信息可能被拆到两个块里,比如一句话前半句在这块,后半句在那块。

语义分块

按有意义的单元来分段,比如句子、段落或主题章节。具体怎么做呢?
先给每个段落生成嵌入向量,然后计算相邻段落的余弦相似度段落的余弦相似度:
如果第一段和第二段的相似度很高,就把它们合并成一个块;
直到遇到相似度明显下降的段落,就新开一个块。
优点:保持语言的自然流畅,每个块都包含完整的观点,这样检索时更准,LLM 生成的回答也更连贯相关。
缺点:需要设定一个相似度阈值,但不同文档的阈值可能不一样,得反复调参。

递归分块

先按文档的天然分隔符(比如段落、章节)初步分块,然后检查每个块的大小:
如果超过预设的最大块大小,就进一步拆分成更小的块;
如果大小合适,就保持不变。
举个栗子🌰:
先把文档分成两个紫色段落(块 1 和块 2);
块 1 太长,再拆成两个小块;块 2 刚好合适,不拆分。
优点:和语义分块类似,能保留完整语义。
缺点:实现起来更复杂,计算量也更大,因为要多一步 “检查是否需要拆分” 的逻辑。

基于文档结构的分块

利用文档本身的结构来划分块,比如标题、章节、子标题等。比如:
一个一级标题下的所有内容作为一个块;
每个表格或图表的说明文字单独成块。
优点:贴合文档的逻辑结构,块的内容更完整。
缺点:依赖文档有清晰的结构,如果遇到结构混乱的文档(比如纯文本无标题),就不好用了。另外,块的长度可能不均匀,有些块可能超过模型的 Token 限制,这时候可以结合递归分块一起用。

基于大语言模型的分块

直接让 LLM 帮忙生成语义独立、有意义的块。比如给 LLM 一个提示:“请将以下文本分成每个块约 500 字的语义完整段落,确保每个块包含独立的主题。”
优点:语义准确性最高,LLM 能理解上下文,比前四种基于规则的方法更智能。
缺点:计算成本最贵,每次分块都要调用 LLM,而且 LLM 本身也有上下文窗口限制,处理长文档可能需要多次调用。

总览图


怎么选?

每种方法都有优缺点,实际中语义分块用得比较多,但还是得根据具体情况测试:
  • 如果文档结构清晰 → 优先用「结构分块」+「递归分块」;
  • 如果追求简单高效 → 用「固定大小分块」,记得加重叠部分;
  • 如果对语义要求高且计算资源充足 → 试试「LLM 分块」。

最后抛个问题给大家:你还知道其他分块策略吗? 欢迎讨论!



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 立即注册

小黑屋|手机版|Archiver| PLM的星空

GMT+8, 2025-8-21 06:46 , Processed in 0.078583 second(s), 18 queries .

PLM产品部技术团队 X3.4

© 2018-2023粤ICP备2021011559号粤公网安备 44060402002077号

快速回复 返回顶部 返回列表