spring-ai-alibaba 迭代字符分割器

TextSplitter

spring-ai有一个文本分割器接口,TextSplitter

spring-ai本身仅提供了一个TokenTextSplitter,按照token个数进行切分

但是这样的切分策略很容易在段落或句子中间断开,造成语义的割裂,很难保持语义完整性

SentenceSplitter

spring-ai-alibaba为了解决这个问题,提供了一个SentenceSplitter

不过该切分器是使用opennlp的SentenceModel进行句子切分,底层是一个训练好的拆分句子的模型,像是一个黑盒,并不容易理解

RecursiveCharacterTextSplitter

最近,spring-ai-alibaba新增了一个RecursiveCharacterTextSplitter,迭代字符文本分割器

该分割器的逻辑也很容易理解,就是维护一个分隔符列表,首先使用第一个分隔符进行分割,如果文本大小不满足要求,就继续用下一个分隔符进行分割,直到分隔符用完,就按设置的文本大小进行分割

相比于英文中,句号和小数点共用,中文有自己专用的句号,使用句号进行分割不容易失误,更适合中文环境下使用

默认分隔符列表是{ "\n\n", "\n", "。", "!", "?", ";", ",", " " },代表双换行符、单换行符、中文句号、中文叹号、中文问号、中文分号、中文逗号、空格

代码调用

java 复制代码
        List<Document> documents = ...
		RecursiveCharacterTextSplitter splitter = new RecursiveCharacterTextSplitter();
		documents = splitter.split(documents);

调用方法很简单,new 一个 RecursiveCharacterTextSplitter,然后调用split方法即可

默认文本块大小为1024,支持自定义分隔符列表

ps:该类目前还未发布到中央仓库,使用需自行编译打包,或等待新版本(>1.0,0,2)

相关推荐
风象南6 小时前
普通人用AI加持赚到的第一个100块
人工智能·后端
牛奶6 小时前
2026年大模型怎么选?前端人实用对比
前端·人工智能·ai编程
牛奶6 小时前
前端人为什么要学AI?
前端·人工智能·ai编程
罗西的思考9 小时前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
冬奇Lab10 小时前
OpenClaw 源码精读(2):Channel & Routing——一条消息如何找到它的 Agent?
人工智能·开源·源码阅读
冬奇Lab10 小时前
一天一个开源项目(第38篇):Claude Code Telegram - 用 Telegram 远程用 Claude Code,随时随地聊项目
人工智能·开源·资讯
格砸11 小时前
从入门到辞职|从ChatGPT到OpenClaw,跟上智能时代的进化
前端·人工智能·后端
可观测性用观测云11 小时前
可观测性 4.0:教系统如何思考
人工智能
sunny86512 小时前
Claude Code 跨会话上下文恢复:从 8 次纠正到 0 次的工程实践
人工智能·开源·github
小笼包包仔12 小时前
OpenClaw 多Agent软件开发最佳实践指南
人工智能