LangChain 文档切分器详解
在 LangChain 中,文档转换器是一种在将文档提供给其他 LangChain 组件之前对其进行处理的工具。通过清理、处理和转换文档,这些工具可确保 LLM 和其他 LangChain 组件以优化其性能的格式接收数据。
加载完文档之后还需要对文档进行转换。文本分割器专门用于将文本文档分割成更小、更易于管理的单元。理想情况下,这些块应该是句子或段落,以便理解文本中的上下文和关系。分割器考虑了 LLM 处理能力的局限性。通过创建更小的块,LLM 可以在其上下文窗口内更有效地分析信息。
主要文本分割器类型
- CharacterTextSplitter
- RecursiveCharacterTextSplitter
- Split by tokens
- Semantic Chunking
- HTMLHeaderTextSplitter
- MarkdownHeaderTextSplitter
- RecursiveJsonSplitter
- Split Code
CharacterTextSplitter
CharacterTextSplitter 根据指定的分隔符拆分文本,默认情况下分隔符设置为 \n\n。chunk_size 参数确定每个块的最大大小,并且只有在可行的情况下才会进行拆分。如果字符串以 n 个字符开头,后跟一个分隔符,然后在下一个分隔符之前有 m 个字符,则如果 chunk_size 小于 n + m + len(separator),则第一个块的大小将为 n。
from langchain_text_splitters import CharacterTextSplitter
text_splitter = CharacterTextSplitter(
separator="\n\n",
chunk_size=1000,
chunk_overlap=200,
length_function=len,
is_separator_regex=False,
)
参数说明:
separator:这是用于标识文本中自然断点的分隔符。在本例中,它被设置为\n\n,这意味着分割器将寻找双换行符作为潜在的分割点。chunk_size:此参数指定每个文本块的目标大小,以字符数表示。在这里,它被设置为 1000,这意味着分割器将旨在创建大约 1000 个字符长的文本块。chunk_overlap:此参数允许连续块之间重叠字符。它被设置为 200,这意味着每个块将包含前一个块末尾的 200 个字符。这种重叠可以帮助确保在块之间的边界上不会丢失任何重要信息。length_function:这是一个用于测量文本块长度的函数。在本例中,它被设置为内置的 len 函数,该函数计算字符串中的字符数。is_separator_regex:此参数指定分隔符是否为正则表达式。它设置为 False,表示分隔符是一个纯字符串,而不是正则表达式模式。
使用示例:
from langchain_community.document_loaders import PyPDFLoader
loader = PyPDFLoader("book.pdf")
pages = loader.load_and_split()
from langchain_text_splitters import CharacterTextSplitter
text_splitter = CharacterTextSplitter(
separator=,
chunk_size=,
chunk_overlap=,
length_function=,
is_separator_regex=,
)
texts = text_splitter.split_text(pages[].page_content)
((texts))
(texts[])


