Charger, découper et plonger des documents
PyPDFLoader, RecursiveCharacterTextSplitter, OpenAIEmbeddings, stratégies de plongement.
Charger, découper et plonger des documents est une leçon Learn AI with Python gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Learn AI with Python, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Learn AI with Python comprend 4 leçons au total.
La chaîne de préparation des données RAG
Avant qu’un LLM puisse répondre à partir de vos documents, vous devez les charger, les segmenter et les vectoriser. Cette leçon présente cette chaîne de préparation des données, à la base de tout système de génération augmentée par récupération.
pip install langchain-community pypdf langchain-openaiChargement d’un PDF
PyPDFLoader lit un PDF et renvoie une liste d’objets document, un par page. Chaque document possède page_content (le texte) et metadata (la source et le numéro de page).
from langchain_community.document_loaders import PyPDFLoader
loader = PyPDFLoader("handbook.pdf")
docs = loader.load()
print(len(docs), "pages")Pourquoi segmenter les documents ?
Les pages entières sont souvent trop volumineuses pour être vectorisées ou tenir dans une invite. La segmentation découpe le texte en segments plus petits, qui se vectorisent correctement et permettent à la recherche de renvoyer uniquement le passage pertinent, plutôt qu’une page entière.
RecursiveCharacterTextSplitter
Le segmenteur recommandé est RecursiveCharacterTextSplitter. Il essaie d’abord de découper selon les paragraphes, puis selon les phrases et enfin selon les mots, en conservant la cohérence sémantique des segments plutôt que de couper au milieu d’un mot.
from langchain_text_splitters import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200
)Taille et chevauchement des segments
chunk_size définit le nombre maximal de caractères par segment ; chunk_overlap répète une partie du texte entre les segments voisins afin de ne pas perdre le contexte aux frontières. Une segmentation 1000/200 constitue un point de départ courant.
chunks = splitter.split_documents(docs)
print(len(chunks), "chunks")
print(chunks[0].page_content[:120])Réglage de la taille des segments
Les petits segments permettent une récupération précise, mais risquent de manquer le contexte environnant. Les grands segments conservent le contexte, mais diluent la pertinence et consomment davantage de jetons. Un chevauchement représentant 10 à 20 % de la taille du segment constitue une bonne valeur par défaut pour relier les frontières.
Que sont les vectorisations ?
Une vectorisation transforme le texte en un vecteur de nombres de longueur fixe qui en capture le sens. Les textes similaires produisent des vecteurs proches. C’est ce qui permet d’effectuer une recherche par similarité sémantique plutôt que par mots-clés.
OpenAIEmbeddings
Créez des vectorisations avec OpenAIEmbeddings. Le modèle text-embedding-3-small est économique et efficace. embed_query vectorise une chaîne ; embed_documents vectorise une liste.
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
vector = embeddings.embed_query("How do I reset my password?")
print(len(vector)) # 1536Vectorisation par lots
Vectorisez tous vos segments en une seule fois. Chaque segment devient un vecteur que vous stockerez ensuite dans une base de données vectorielle pour effectuer rapidement des recherches par similarité.
texts = [c.page_content for c in chunks]
vectors = embeddings.embed_documents(texts)
print(len(vectors), "vectors of dim", len(vectors[0]))Estimation du coût de vectorisation
Les vectorisations sont facturées par jeton. Estimez le nombre total de jetons de tous les segments, puis multipliez-le par le prix pour 1 000 jetons. Compter les jetons avant la vectorisation évite les factures imprévues sur les grands corpus.
import tiktoken
enc = tiktoken.get_encoding("cl100k_base")
total = sum(len(enc.encode(c.page_content)) for c in chunks)
price_per_1k = 0.00002
print("tokens:", total, "cost $:", total / 1000 * price_per_1k)Résumé de la chaîne de traitement
Le processus de préparation consiste à charger les documents, à les segmenter en segments qui se chevauchent, à vectoriser chaque segment et, dans la prochaine leçon, à les stocker. Une bonne segmentation et une attention portée aux coûts déterminent ici la qualité et le prix de l’ensemble du système RAG.
Vérification rapide
Vérifiez vos connaissances sur la préparation des données.
Récapitulatif : chargement, segmentation et vectorisation
Vous avez utilisé PyPDFLoader pour charger des documents, RecursiveCharacterTextSplitter avec chunk_size et chunk_overlap pour les segmenter, ainsi que OpenAIEmbeddings pour transformer les segments en vecteurs. Vous avez également appris à estimer le coût de vectorisation par jeton avant de traiter un grand corpus.
Questions Fréquemment Posées
La leçon « Charger, découper et plonger des documents » est-elle gratuite ?
Oui — le texte complet de « Charger, découper et plonger des documents » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Learn AI with Python, passe à CoddyKit PRO. Le cours Learn AI with Python comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Charger, découper et plonger des documents » ?
PyPDFLoader, RecursiveCharacterTextSplitter, OpenAIEmbeddings, stratégies de plongement. Tu pratiques Learn AI with Python avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Learn AI with Python ?
Aucune expérience préalable n'est requise. Learn AI with Python sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Charger, découper et plonger des documents » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Learn AI with Python ?
Oui. Chaque leçon Learn AI with Python inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Architecture de LangChain et LCEL
- Charger, découper et plonger des documents
- Bases vectorielles : Chroma et FAISS
- Créer un système de questions-réponses RAG de bout en bout