
一、Text Splitters 文本分割器
文本分割器的基本工作原理:
-
将文本分成小而有意义的块(通常是句子)。 -
开始将这些小块组合成较大的块,直到达到某个大小(通过某个函数进行测量)。 -
一旦达到该大小,使该块成为独立的一部分,并开始创建一个具有一定重叠(以保持上下文关系)的新文本块。
定制文本分割器的两个主要轴向:
-
如何拆分文字 -
如何测量块大小
二、使用文本分割器RecursiveCharacterTextSplitter
主要参数和功能:
-
length_function:用于计算切块长度的方法。默认只计算字符数,但通常可以传递一个令牌计数器。 -
chunk_size:切块的最大大小(由长度函数测量)。 -
chunk_overlap:切块之间的最大重叠部分。保持一定程度的重叠可以使得各个切块之间保持连贯性(例如滑动窗口)。 -
add_start_index:是否在元数据中包含每个切块在原始文档中的起始位置。 -
def transformer_doc():# 加载待分割长文本 with open('sys_boss.txt',encoding='UTF-8') as f:state_of_the_union = f.read()text_splitter = RecursiveCharacterTextSplitter(chunk_size = 100,chunk_overlap= 20,length_function = len,add_start_index = True,)docs = text_splitter.create_documents([state_of_the_union])print(docs[0])print(docs[1])metadatas = [{"document": 1}, {"document": 2}]documents = text_splitter.create_documents([state_of_the_union, state_of_the_union], metadatas=metadatas)print(documents[0])
三、代码分隔器
def spit_code():print([e.value for e in Language])html_text = """<!DOCTYPE html><html><head><title>?️? LangChain</title><style>body {font-family: Arial, sans-serif;}h1 {color: darkblue;}</style></head><body><div><h1>?️? LangChain</h1><p>⚡ Building applications with LLMs through composability ⚡</p></div><div>As an open source project in a rapidly developing field, we are extremely open to contributions.</div></body></html>"""html_splitter = RecursiveCharacterTextSplitter.from_language(language=Language.HTML, chunk_size=60, chunk_overlap=0)html_docs = html_splitter.create_documents([html_text])print(html_docs)


