微信扫码
添加专属顾问
我要投稿
文本切分五个层级:
Level 1: Character Splitting - 简单的字符长度切分
Level 2: Recursive Character Text Splitting - 通过分隔符切分,然后递归合并
Level 3: Document Specific Splitting - 针对不同文档格式切分 (PDF, Python, Markdown)
Level 4: Semantic Splitting - 语义切分
Level 5: Agentic Splitting-使用代理实现自动切分
这个 切分器 的工作原理是确定何时分隔句子。这是通过查找任意两个句子之间的向量差异来完成的。当该差异超过某个阈值时,它们将被拆分。后面演示它是怎么实现的:
搭建语义切分流程
数据加载
# This is a long document we can split up.with open("state_of_the_union.txt") as f:state_of_the_union = f.read()创建拆分器
要实例化 SemanticChunker,我们必须指定一个嵌入模型。下面我们将使用 OpenAIEmbeddings,也可以使用自己的模型。
from langchain_experimental.text_splitter import SemanticChunkerfrom langchain_openai.embeddings import OpenAIEmbeddingstext_splitter = SemanticChunker(OpenAIEmbeddings())
拆分文本
docs = text_splitter.create_documents([state_of_the_union])print(docs[0].page_content)
这样我们就完成了基于向量的语义切分;下面介绍其参数控制:
切分的几种形式
text_splitter = SemanticChunker( OpenAIEmbeddings(), breakpoint_threshold_type="percentile")docs = text_splitter.create_documents([state_of_the_union])print(docs[0].page_content)
print(len(docs))
# 26
标准差
在此方法中,任何大于 X 个标准差的差值都将被拆分。
text_splitter = SemanticChunker( OpenAIEmbeddings(), breakpoint_threshold_type="standard_deviation")docs = text_splitter.create_documents([state_of_the_union])print(docs[0].page_content)
print(len(docs))
# 4
四分位距
在这种方法中,四分位数距离用于分割块。
text_splitter = SemanticChunker( OpenAIEmbeddings(), breakpoint_threshold_type="interquartile")docs = text_splitter.create_documents([state_of_the_union])print(docs[0].page_content)
print(len(docs))
# 25
梯度
在这种方法中,距离的梯度与百分位数方法一起用于分割块。当块彼此高度相关或特定于某个领域时,此方法非常有用。这个想法是在梯度数组上应用异常检测,使分布变得更宽,并且易于识别高度语义数据中的边界。
text_splitter = SemanticChunker( OpenAIEmbeddings(), breakpoint_threshold_type="gradient")docs = text_splitter.create_documents([state_of_the_union])print(docs[0].page_content)
print(len(docs))
26
以上介绍了langchain基于向量的语义切分实现,后续将介绍具体的算法实现和其它语义切分方式,敬请期待。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-12-10
最新力作:一招提升RAG检索精度20%
2025-12-10
Apple 入局 RAG:深度解析 CLaRa 框架,如何实现 128x 文档语义压缩?
2025-12-09
客服、代码、法律场景适配:Milvus Ngram Index如何百倍优化LIKE查询| Milvus Week
2025-12-09
一键把碎片变成有料笔记:NoteGen,一款跨平台的 Markdown 笔记应用
2025-12-07
Embedding模型选型思路:相似度高不再代表检索准确(文末附实战指南)
2025-12-06
Palantir Ontology 助力AIP Agent落地工具介绍:Object Query
2025-12-05
把AI记忆做好,是一个价值6千亿美元的市场
2025-12-05
我错了,RAG还没完!AI记忆的结合会成为下一个技术风口
2025-10-04
2025-10-11
2025-09-30
2025-10-12
2025-12-04
2025-11-04
2025-10-31
2025-11-13
2025-10-12
2025-09-16
2025-12-10
2025-11-23
2025-11-20
2025-11-19
2025-11-04
2025-10-04
2025-09-30
2025-09-10