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
Instructions de l’exercice
- Récupérez l'encodage pour
gpt-4o-minià partir detiktokenafin 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'
encodingde GPT-4o-Mini. - Découpez le PDF, stocké dans
document, en segments à l'aide detoken_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")