開始使用免費開始

以權杖切分

使用 RecursiveCharacterTextSplitterCharacterTextSplitter 來切分文件相當便利,在某些情況下也能有不錯的表現,但它們有一個缺點:切分時以字元為基本單位,而不是模型實際處理的權杖(token)。

在這個練習中,你會改用以權杖為基礎的文字切分器,讓你能檢查每個分塊的權杖數,確保不會超過模型的上下文視窗。已經將一個 PDF 文件載入為 document

tiktoken 和所有必要的類別都已為你匯入。

本練習屬於課程

使用 LangChain 的 Retrieval Augmented Generation(RAG)

檢視課程

練習說明

  • tiktoken 取得 gpt-4o-mini 的編碼 encoding,以便檢查每個分塊的權杖數量。
  • 使用 GPT-4o-Mini 的 encoding 建立一個以權杖數為依據的文字切分器。
  • 使用 token_splitter 將儲存在 document 的 PDF 切分成多個分塊。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Get the encoding for gpt-4o-mini
encoding = ____

# Create a token text splitter
token_splitter = ____(encoding_name=____, chunk_size=100, chunk_overlap=10)

# Split the PDF into chunks
chunks = ____

for i, chunk in enumerate(chunks[:3]):
    print(f"Chunk {i+1}:\nNo. tokens: {len(encoding.encode(chunk.page_content))}\n{chunk}\n")
編輯並執行程式碼