LangChain:文本切割器TextSplitter的split_documents()与split_text()

LangChain 库中,文本切割器基类TextSplitter 提供了split_documents()split_text() 两个切割方法常用的文本分割方法。

TextSplitter的子类都继承的这两个方法。下面分别介绍它们的作用和区别。

text_splitter.split_documents()

功能

split_documents() 方法用于将包含多个 Document 对象的列表拆分成更小的 Document 对象列表。每个 Document 对象一般包含文本内容(page_content 属性)和元数据(metadata 属性)。该方法在拆分文本时会保留原始文档的元数据,这在处理需要关联元数据的场景下非常有用,比如文档来源、创建时间等信息。

参数

  • documents:一个包含 Document 对象的列表,这些对象是需要被拆分的文档。

返回值

返回一个新的 Document 对象列表,每个对象代表拆分后的一个文本块,并且保留了原始文档的元数据。

代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from langchain_text_splitters import CharacterTextSplitter
from langchain_community.document_loaders import TextLoader

text_splitter = CharacterTextSplitter.from_tiktoken_encoder(
encoding_name="utf-8", chunk_size=100, chunk_overlap=0
)
loader = TextLoader("../file/report.txt")
documents = loader.load() # 加载文档,返回 Document 对象列表

# 使用 split_documents() 拆分文档
split_docs = text_splitter.split_documents(documents)

for doc in split_docs:
print(f"文本内容: {doc.page_content}")
print(f"元数据: {doc.metadata}")
print("-" * 50)

代码结果

分割的文本块保留了元数据。

1
2
3
4
5
6
7
8
9
2024年是实现“十四五”规划目标任务的关键一年。中央经济工作会议明确提出稳中求进的工作总基调,要求扎实推动高质量发展。上市公司是加快培育新质生产力的重要载体,肩负着实现高质量发展的时代使命。
{'source': '../file/report.txt'}
--------------------------------------------------
截至5月7日,除公告延迟披露公司外,沪、深、北三家证券交易所共5412[1]家上市公司公布2024年年度报告。数据显示,上市公司群体以创新驱动为核心,扎实推进产业优化升级,以稳健经营应对风险挑战,以
{'source': '../file/report.txt'}
--------------------------------------------------
深化改革激发内生动力,发展质量和投资价值持续提升。
{'source': '../file/report.txt'}
--------------------------------------------------

text_splitter.split_text()

功能

split_text() 方法用于将单个字符串拆分成多个较小的字符串列表。该方法只关注文本内容的拆分,不会处理元数据,适用于只需要处理纯文本的场景。

参数

  • text:需要被拆分的字符串。

返回值

返回一个字符串列表,每个字符串代表拆分后的一个文本块。

代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from langchain_text_splitters import CharacterTextSplitter
from langchain_community.document_loaders import TextLoader

text_splitter = CharacterTextSplitter.from_tiktoken_encoder(
encoding_name="utf-8", chunk_size=100, chunk_overlap=0
)
loader = TextLoader("../file/report.txt")
document = loader.load()
text = document[0].page_content # 获取文档的文本内容

# 使用 split_text() 拆分文本
split_texts = text_splitter.split_text(text)

for text_block in split_texts:
print(text_block)
print("-" * 50)

代码结果

分割的文本块没有元数据,只返回字符串列表。

1
2
3
4
5
6
2024年是实现“十四五”规划目标任务的关键一年。中央经济工作会议明确提出稳中求进的工作总基调,要求扎实推动高质量发展。上市公司是加快培育新质生产力的重要载体,肩负着实现高质量发展的时代使命。
--------------------------------------------------
截至5月7日,除公告延迟披露公司外,沪、深、北三家证券交易所共5412[1]家上市公司公布2024年年度报告。数据显示,上市公司群体以创新驱动为核心,扎实推进产业优化升级,以稳健经营应对风险挑战,以深化改革激发内生动力,发展质量和投资价值持续提升。
--------------------------------------------------
一、四分之三公司盈利,彰显企业发展韧性
--------------------------------------------------

总结

  • split_documents():处理 Document 对象列表,拆分后保留元数据,返回 Document 对象列表。
  • split_text():处理单个字符串,只关注文本拆分,返回字符串列表。

LangChain:文本切割器TextSplitter的split_documents()与split_text()

http://blog.gxitsky.com/2025/05/31/AI-LangChain-014-TextSplitter-text/

作者

光星

发布于

2025-05-31

更新于

2025-06-01

许可协议

评论