CommencezCommencez gratuitement

Découpage par jetons

Utiliser RecursiveCharacterTextSplitter ou CharacterTextSplitter pour découper des documents est pratique et peut offrir de bonnes performances dans certains cas, mais il y a un inconvénient : ces méthodes découpent avec des caractères comme unités de base plutôt qu'avec des jetons (tokens), qui sont ceux traités par le modèle.

Dans cet exercice, vous allez découper des documents avec un séparateur basé sur les jetons, afin de pouvoir vérifier le nombre de jetons dans chaque segment et vous assurer qu'ils ne dépassent pas la fenêtre de contexte du modèle. Un document PDF a été chargé sous le nom document.

tiktoken et toutes les classes nécessaires ont été importés pour vous.

Cette activité fait partie du cours

Retrieval Augmented Generation (RAG) avec LangChain

Voir le cours

Instructions de l’exercice

  • Récupérez l'encodage pour gpt-4o-mini à partir de tiktoken afin de pouvoir vérifier le nombre de jetons dans chaque segment.
  • Créez un séparateur de texte pour découper selon le nombre de jetons en utilisant l'encoding de GPT-4o-Mini.
  • Découpez le PDF, stocké dans document, en segments à l'aide de token_splitter.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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")
Modifier et exécuter le code