尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Spring AI 13 · TextSplitter 文档分块

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 打上来源与业务标签让过滤和溯源真正可用。
返回列表