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)

相关推荐
后端小肥肠4 分钟前
小佛陀漫画怎么做?深扒中老年高互动赛道,用n8n流水线批量打造
人工智能·aigc·agent
是店小二呀5 分钟前
本地绘图工具也能远程协作?Excalidraw+cpolar解决团队跨网画图难题
人工智能
i爱校对22 分钟前
爱校对团队服务全新升级
人工智能
KL1328815269328 分钟前
AI 介绍的东西大概率是不会错的,包括这款酷铂达 VGS耳机
人工智能
vigel199030 分钟前
人工智能的7大应用领域
人工智能
人工智能训练1 小时前
windows系统中的docker,xinference直接运行在容器目录和持载在宿主机目录中的区别
linux·服务器·人工智能·windows·ubuntu·docker·容器
南蓝1 小时前
【AI 日记】调用大模型的时候如何按照 sse 格式输出
前端·人工智能
robot_learner1 小时前
11 月 AI 动态:多模态突破・智能体模型・开源浪潮・机器人仿真・AI 安全与主权 AI
人工智能·机器人·开源
Mintopia1 小时前
🌐 动态网络环境中 WebAIGC 的断点续传与容错技术
人工智能·aigc·trae
后端小张2 小时前
【AI 学习】从0到1深入理解Agent AI智能体:理论与实践融合指南
人工智能·学习·搜索引擎·ai·agent·agi·ai agent