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 :
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).
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 officielle
from langchain_core.documents import Document
def create_documents(texts: list[str], source: str) -> list[Document]:
return [
Document(
page_content=text,
metadata={"source": source, "index": i}
)
for i, text in enumerate(texts)
]