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)

相关推荐
lohiecan2 小时前
国产自研开源新语言|梦丘 MOS-LANG 重磅登场!深耕 AI 编程与嵌入式生态
人工智能·junit
一水鉴天2 小时前
从“AI内在机制探询”到“三重三九格人本主权智能体架构”的演进 之1 20260503 (腾讯元宝)
人工智能
Hello world.Joey2 小时前
OSTrack
人工智能·算法·目标检测·目标跟踪
AI科技星2 小时前
全域数学·数术本源·第四卷《分析原本》【乖乖数学】
人工智能·机器学习·数学建模·数据挖掘·agi
早日退休!!!2 小时前
PyTorch适配NPU
人工智能·pytorch·python
qcx232 小时前
【AI Agent通识九课】01 · Agent 和 ChatGPT 到底差在哪?
人工智能·ai·chatgpt·agent
小手智联老徐2 小时前
Claude Code CLI + DeepSeek V4:终结 AI 编程高成本时代的王炸组合
人工智能
2zcode2 小时前
基于深度学习的糖尿病眼底图像分类识别系统(含UI界面+多模型对比+数据集+训练代码)
人工智能·深度学习·分类
绛橘色的日落(。・∀・)ノ2 小时前
机器学习 梯度下降
人工智能·机器学习
Empty-Filled2 小时前
AI 测试能力评估与个性化入门指南
人工智能