微信扫码
添加专属顾问
我要投稿
我们将文本切分定义为五个层级:
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-使用代理实现自动切分
本篇文章将介绍字符切分的概念和实现。虽然简单,但有助于我们理解一些参数和整体概念。
字符切分概念
字符分割是分割文本的最基本形式。它是简单地将文本分成n个字符大小的块的过程,而不考虑其内容或形式。
不建议在任何应用程序中使用这种方法,但它是我们理解基础知识的一个很好的起点。
优点:简单容易
缺点:非常死板,没有考虑到文本的结构
两个小概念:
Chunk Size(块大小)-块中包含的字符数量。50、100、10万等等。
Chunk Overlap(块重叠)-为了避免重要信息被切开成多个部分,希望有连续块重叠,overlap就是重叠块的大小。
下面看个例子,来看看字符切分逻辑:
text = "2024年一季度公司实现营业收入24.56亿元(-12.60%),实现归母净利润19.54亿元(-3.70%),扣非后归母净利润19.37亿元(+2.38%),基本每股收益0.12元,(-3.36%)。"
chunks = []
chunk_size = 35
for i in range(0, len(text), chunk_size):
chunk = text[i:i + chunk_size] # 每隔35是一个块
chunks.append(chunk)
print(chunks)
在实际工程使用中,我们都不是孤立的切分文本,而是对文档进行切分,下面我们使用langchain和llama_index来演示这个过程。
LangChain实现
from langchain.text_splitter import CharacterTextSplitter
text_splitter = CharacterTextSplitter(chunk_size=35, chunk_overlap=0, separator='', strip_whitespace=False)print(text_splitter.split_text(text))
text_splitter = CharacterTextSplitter(chunk_size=35, chunk_overlap=5, separator='', strip_whitespace=False)st = text_splitter.split_text(text)pprint(st)
加入separator
先利用separator将文档切分成小块,再使用长度对小块进行切割:
text_splitter = CharacterTextSplitter(chunk_size=35, chunk_overlap=0, separator=',', strip_whitespace=False)print(text_splitter.split_text(text))
LLama-Index实现
from llama_index.core.text_splitter import SentenceSplitterfrom llama_index.core import SimpleDirectoryReader
构建切分器
splitter = SentenceSplitter(chunk_size=200,chunk_overlap=15,)
加载文档
documents = SimpleDirectoryReader(input_files=["./test.txt"]).load_data()
切分文档
nodes = splitter.get_nodes_from_documents(documents)
nodes里面不仅包含了切分的文本信息,也包含了很多额外的相关内容。可以去探索...
至此,你已经学会了字符切分的全部概念和实战,让我们下篇继续吧。
如果对内容有什么疑问和建议可以私信和留言,也可以添加我加入大模型交流群,一起讨论大模型在创作、RAG和agent中的应用。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-04-27
RAG技术:优化知识库,解决AI答非所问
2025-04-27
AI 写代码总是翻车?Upstash 创始人怒推 Context7:给 LLM 喂上最新鲜的官方文档。
2025-04-26
葵花宝典之「知识库」调优秘籍!RAG优化指南!
2025-04-26
RagFlow文档解析过程分析
2025-04-26
深度学习!构建基于LangGraph的RAG多智能体研究工具。
2025-04-26
用RAG与Agent提升企业问答效率:我的AI实践之路
2025-04-26
理解 RAG 第一部分:为什么需要它
2025-04-26
理解 RAG 第三部分:融合检索与重新排序
2024-10-27
2024-09-04
2024-07-18
2024-05-05
2024-06-20
2024-06-13
2024-07-09
2024-07-09
2024-05-19
2024-07-07
2025-04-26
2025-04-25
2025-04-22
2025-04-22
2025-04-20
2025-04-19
2025-04-18
2025-04-16