始める無料で始める

トークン単位での分割

RecursiveCharacterTextSplitterCharacterTextSplitter を使った文書分割は手軽で、状況によっては高い性能を発揮しますが、1 つ弱点があります。モデルが処理する単位であるトークンではなく、文字を基準に分割してしまう点です。

この演習では、トークンベースのテキストスプリッターを使って文書を分割し、各チャンクのトークン数を確認して、モデルのコンテキストウィンドウを超えないようにします。PDF ドキュメントは document として読み込まれています。

tiktoken と必要なクラスはすでにインポート済みです。

この演習はコースの一部です

LangChain で学ぶ Retrieval Augmented Generation (RAG)

コースを見る

演習の手順

  • 各チャンクのトークン数を確認できるように、tiktoken から gpt-4o-mini のエンコーディングを取得します。
  • GPT-4o-Mini の encoding を用いて、トークン数に基づいて分割するテキストスプリッターを作成します。
  • document に保存されている PDF を、token_splitter を使ってチャンクに分割します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# 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")
コードを編集して実行