Exercices IA & Data Science Créer des Documents LangChain
🎉

Bravo!

Débutant 🧠 Fondamentaux 15 XP 0 personnes ont réussi

Créer des Documents LangChain

Dans LangChain, toute donnée textuelle est représentee par un objet Document. C'est la brique de base de tout pipeline RAG. Un Document contient deux choses : le texte lui-meme (page_content) et des informations supplémentaires sur ce texte (metadata), comme sa source, son auteur, sa date, etc.

Pour créer un Document, tu importes la classe depuis langchain_core :

from langchain_core.documents import Document

doc = Document(
page_content="Le texte de mon document",
metadata={"source": "mon_fichier.pdf", "page": 1}
)

Tu accedes ensuite au contenu avec doc.page_content et aux metadonnées avec doc.metadata.

Écris une fonction create_documents(texts, source) qui prend une liste de textes et un nom de source, et renvoie une liste de Documents LangChain. Chaque document doit avoir comme metadata la source et son numéro d'ordre (cle "index", en partant de 0).

Exemple :

docs = create_documents(["Bonjour", "Salut"], "cours.pdf")
docs[0].page_content vaut "Bonjour"
docs[0].metadata vaut {"source": "cours.pdf", "index": 0}
docs[1].metadata vaut {"source": "cours.pdf", "index": 1}

Tests (1/1)

Tests
from langchain_core.documents import Document
docs = create_documents(['Bonjour', 'Salut'], 'cours.pdf')
assert len(docs) == 2, 'Doit renvoyer 2 documents'
assert isinstance(docs[0], Document), 'Chaque élément doit etre un Document LangChain'
assert docs[0].page_content == 'Bonjour', 'Le contenu du premier document est incorrect'
assert docs[1].page_content == 'Salut', 'Le contenu du second document est incorrect'
assert docs[0].metadata == {'source': 'cours.pdf', 'index': 0}, 'Les metadata du premier doc sont incorrectes'
assert docs[1].metadata == {'source': 'cours.pdf', 'index': 1}, 'Les metadata du second doc sont incorrectes'
# Cas liste vide
assert create_documents([], 'vide.txt') == [], 'Une liste vide doit renvoyer une liste vide'
# Cas un seul doc
single = create_documents(['Unique'], 'test.md')
assert len(single) == 1 and single[0].metadata['index'] == 0

Indices (3 disponibles)

solution.py