Spring AI 13 · TextSplitter 文档分块 13 · TextSplitter 文档分块 学完能做什么理解为什么必须分块用 TokenTextSplitter 控制块大小与重叠掌握分块参数对检索质量的影响。⏱️ 预计耗时45 分钟含动手 依赖前置第 12 章 第 07 章token 上限 pgvector 文档25分块与检索质量 难度一句话分块是把长文档切成「大小适中、语义完整」的小块块太大检索不准、块太小丢上下文找到平衡点是 RAG 质量的关键。1. 为什么必须分块三个硬理由1. token 上限embedding 模型单条输入有上限整篇长文会被拒第 07 章 2. 检索精度一整篇文的向量是「平均语义」问细节时匹配不准 3. 上下文成本命中后要把 chunk 塞进 prompt块太大 token 贵 稀释重点一句话检索的最小单位是 chunkchunk 的质量直接决定 RAG 的质量。2. TokenTextSplitter最常用的分块器ListDocumentrawreader.get();// 第 12 章读进来的长文档TokenTextSplittersplitternewTokenTextSplitter();ListDocumentchunkssplitter.apply(raw);// 切成一堆小 DocumentSystem.out.println(分块前 raw.size() 个分块后 chunks.size() 个);默认按token 数切不是字符数更贴合模型的计量方式。3. 关键参数块大小与重叠TokenTextSplittersplitternewTokenTextSplitter(800,// defaultChunkSize每块目标 token 数350,// minChunkSizeChars最小块字符数避免碎块5,// minChunkLengthToEmbed太短的块丢弃10000,// maxNumChunks单文档最多切多少块true// keepSeparator是否保留分隔符);最需要关注的是块大小chunkSize和是否有重叠overlap参数取向效果风险块偏大如 1000上下文完整检索不精、token 贵块偏小如 200检索精准易丢上下文、割裂语义有重叠相邻块共享边界内容避免答案被切断略增存储与冗余经验起点中文 300~600 token/块重叠 10%~20%再按实测pgvector 文档23召回评估调整。4. 重叠overlap为什么重要不重叠时一个完整答案可能被切成两半两块都不完整检索都不命中无重叠: [...签收起 7 天] [内商品完好可退...] ← 问「几天内可退」两块都不全 有重叠: [...签收起 7 天内商品] [7 天内商品完好可退...] ← 至少一块含完整信息5. 按结构分块更聪明纯按 token 切会「一刀切断句子」。更好的做法是顺着文档结构切Markdown按标题层级#/##切每节一块。PDF先按页/段落 Reader 读第 12 章再对过长的块二次 token 切分。FAQ按「一问一答」切语义天然完整。// 组合先按结构读再对过长块做 token 细分ListDocumentbyStructurenewMarkdownDocumentReader(md,config).get();ListDocumentfinalChunksnewTokenTextSplitter(500,200,5,10000,true).apply(byStructure);6. 分块后检查chunks.forEach(c-{intlenc.getText().length();if(len20)System.out.println(⚠️ 过短块: c.getText());if(len2000)System.out.println(⚠️ 过长块: len 字);});System.out.println(平均长度 chunks.stream().mapToInt(c-c.getText().length()).average().orElse(0));理想状态大小均匀、每块能独立表达一个完整意思。7. 分块决策速查你的内容建议策略结构化文档手册/Markdown先按结构切过长再 token 细分长篇连续文本论文/合同TokenTextSplitter 重叠FAQ / 问答对按「一问一答」切表格/代码单独处理避免被拦腰切断8. 一句话总结分块把长文切成「大小适中、语义完整」的 chunk用 TokenTextSplitter 控制块大小 重叠能按结构切就别硬按 token 切——chunk 质量 RAG 质量。➡️ 下一章14-metadata富化与来源标注.md给每个 chunk 打上来源与业务标签让过滤和溯源真正可用。

相关新闻

最新新闻

网络安全职业发展指南与面试全攻略

网络安全职业发展指南与面试全攻略

1. 网络安全行业现状与职业发展指南作为一名在网络安全领域摸爬滚打多年的从业者,我经常被问到如何进入这个行业、如何准备面试等问题。今天我就结合自己的经验,系统性地分享网络安全行业的现状、职业发展路径以及面试准备的全套方法论。1.1 网络安全行业…

2026/8/26 2:10:24
链表数据结构与算法面试高频题型解析

链表数据结构与算法面试高频题型解析

1. 链表数据结构基础认知链表作为线性表的链式存储结构,在算法面试中出现的频率仅次于数组。与数组的连续内存空间不同,链表通过指针将零散的内存块串联起来,每个节点(Node)包含数据域和指针域。这种差异直接导致了两者…

2026/8/26 2:10:24
C++通用哈希模板:基于折叠表达式与模板元编程的自动化哈希实现

C++通用哈希模板:基于折叠表达式与模板元编程的自动化哈希实现

1. 项目概述:为什么我们需要一个“万用”哈希模板?在C的世界里,哈希函数无处不在。从std::unordered_map、std::unordered_set到各种自定义的哈希表实现,一个高效、可靠的哈希函数是保证数据快速存取和容器性能的基石。然而&#…

2026/8/26 2:10:24
C++刷LeetCode:算法优化与面试实战技巧

C++刷LeetCode:算法优化与面试实战技巧

1. 为什么选择C刷LeetCode 作为一名长期使用C解决算法问题的开发者,我越来越意识到这门语言在算法竞赛和面试刷题中的独特优势。C的STL库提供了丰富的数据结构和算法实现,同时其接近底层的特性让我们能够更精确地控制内存和性能。 在LeetCode这样的编程…

2026/8/26 2:10:24
机器人“最后几厘米”难题:VLA模型如何让机械臂精准操作

机器人“最后几厘米”难题:VLA模型如何让机械臂精准操作

机器人行业有个很反直觉的现象:你能买到能在仓库里灵活搬运货箱的超大机械臂,却很难买到一台能稳稳把一颗纽扣电池从桌面拿起来的桌面机器人。疫情以后,人形机器人、工业机械臂、四足机器人的视频一次次刷屏,但大家下意识都在回避…

2026/8/26 2:10:24
多边形中心与重心:几何计算与物理模拟的核心差异

多边形中心与重心:几何计算与物理模拟的核心差异

1. 从“中心”到“重心”:一个被忽视的几何核心概念在图形处理、物理模拟、游戏开发乃至工业设计中,我们常常需要计算一个多边形的“中心点”。但当你脱口而出“中心点”时,你指的是哪个“中心”?是视觉上看起来最居中的那个点&am…

2026/8/26 2:05:24