Découper par tokens
Découper des documents avec RecursiveCharacterTextSplitter ou CharacterTextSplitter est pratique et peut offrir de bonnes performances dans certains cas, mais cela présente un inconvénient : ces méthodes découpent sur la base des caractères, et non des 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 tokens afin de pouvoir vérifier le nombre de tokens de chaque segment et vous assurer qu’il ne dépasse pas la fenêtre de contexte du modèle. Un document PDF a été chargé dans document.
tiktoken et toutes les classes nécessaires ont été importés pour vous.
Cet exercice fait partie du cours
Retrieval Augmented Generation (RAG) avec LangChain
Instructions
- Récupérez l’encodage de
gpt-4o-miniviatiktokenafin de pouvoir vérifier le nombre de tokens de chaque segment. - Créez un séparateur de texte pour découper selon le nombre de tokens 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 cet exemple de code.
# 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")