以字元遞迴分割
許多開發者會使用遞迴字元分割器,依照一組特定的字元清單來分割文件。預設的字元包含段落、換行、空白與空字串:["\n\n", "\n", " ", ""]。
實際運作上,分割器會先嘗試用段落來分割,檢查是否符合 chunk_size 與 chunk_overlap 的設定;若不符合,則改以句子、接著以單字,最後到單一字元進行分割。
通常你需要嘗試不同的 chunk_size 與 chunk_overlap 組合,才能找出最適合你文件的設定。
本練習屬於課程
使用 LangChain 開發 LLM 應用
練習說明
- 從
langchain_text_splitters匯入RecursiveCharacterTextSplitter類別。 - 建立一個
RecursiveCharacterTextSplitter實例,設定separators=["\n", " ", ""]、chunk_size=24、chunk_overlap=10。 - 使用
.split_text()方法分割quote,並印出各分段與其長度。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Import the recursive character splitter
from langchain_text_splitters import ____
quote = 'Words are flowing out like endless rain into a paper cup,\nthey slither while they pass,\nthey slip away across the universe.'
chunk_size = 24
chunk_overlap = 10
# Create an instance of the splitter class
splitter = RecursiveCharacterTextSplitter(
separators=____,
chunk_size=____,
chunk_overlap=____)
# Split the document and print the chunks
docs = splitter.____(quote)
print(docs)
print([len(doc) for doc in docs])