TextLoader
作用:读取文本文件(如.txt),将全部内容放入一个Document对象中。
from langchain_community.document_loaders import TextLoader
loader = TextLoader(
"xxx.txt",
encoding="utf-8",
)
docs = loader.load()
print(docs)
print(len(docs)) # 结果为1
RecursiveCharacterTextSplitter
RecursivecharacterTextSplitter,递归字符文本分割器,主要用于按自然段落分割大文档。
是LangChain官方推荐的默认字符分割器。
它在保持上下文完整性和控制片段大小之间实现了良好平衡,开箱即用效果佳。
from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
loader = TextLoader(
"../P3_LangChainRAG开发/data/Python基础语法.txt",
encoding="utf-8",
)
docs = loader.load()
splitter = RecursiveCharacterTextSplitter(
chunk_size=500, # 分段的最大字符数
chunk_overlap=50, # 分段之间允许重叠的字符数
# 文本分段依据
separators=["\n\n", "\n", "。", "!", "?", "。", "!", "?", " ", ""],
# 字符统计依据(函数)
length_function=len,
)
split_docs = splitter.split_documents(docs)
TextLoader 和 文档分割器 RecursiveCharacterTextSplitter 使用示例:
from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
# 文档加载器
loader = TextLoader("data/Python基础语法.txt", encoding="utf-8")
# 加载文档
docs = loader.load()
# 文档分割器
recursive_splitter = RecursiveCharacterTextSplitter(
chunk_size=500, # 每个文档的最大字符数
chunk_overlap=50, # 每个文档的重叠字符数
separators=["\n\n", "\n", "。", "!", "?", "。", "!", "?", " ", ";", ":"], # 文档分隔符,默认是空行
length_function=len, # 计算文档长度的函数
)
# 分割文档
splits_docs = recursive_splitter.split_documents(docs)
print(len(splits_docs))
for split_doc in splits_docs:
print("="*20)
print(split_doc.page_content)
print("="*20)
TextLoader 是一个简单的加载器,可以加载文本文件内容,返回仅有一个Document对象的list。
RecursivecharacterTextSplitter 递归字符文本分割器,是LangChain官方推荐的默认分割器。
- 基于文本的自然段落分割大文档为小文档
- 可以指定小文档的最大字符数、重叠字符数
- 可以手动指定段落划分的依据(符号)以及字符数量统计函数