AI Agents · Leçon

Construire une chaîne RAG de bout en bout

Assemblez tous les éléments : chargeur -> découpeur -> embeddings -> stockage vectoriel -> récupérateur -> prompt -> modèle.

Leçon 4 sur 415 étapes

Construire une chaîne RAG de bout en bout est une leçon AI Agents gratuite sur CoddyKit. Ceci est la leçon 4 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 AI Agents, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Agents comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

Objectif du projet

Combinez des chargeurs, des séparateurs, des magasins de vecteurs et LCEL en une chaîne RAG complète, conçue comme pour la production.

Step 1: Load and Chunk

from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter

loader = PyPDFLoader('handbook.pdf')
docs = loader.load()
splitter = RecursiveCharacterTextSplitter(chunk_size=800, chunk_overlap=100)
chunks = splitter.split_documents(docs)
print(f'{len(chunks)} chunks loaded')

Step 2: Embed and Store

from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma

embeddings = OpenAIEmbeddings(model='text-embedding-3-small')
store = Chroma.from_documents(
    chunks,
    embeddings,
    persist_directory='./handbook_db'
)

Step 3: Set Up Retriever

retriever = store.as_retriever(
    search_type='similarity',
    search_kwargs={'k': 4}
)

Step 4: Define the Prompt

from langchain.prompts import ChatPromptTemplate

rag_prompt = ChatPromptTemplate.from_template('''
You are a helpful assistant. Use the context below to answer.
If the answer is not in the context, say you do not know.
Cite sources like [1], [2].

Context:
{context}

Question: {question}

Answer:
''')

Step 5: Format Documents Helper

def format_docs(docs):
    return '\n\n'.join(
        f'[{i+1}] (source: {d.metadata.get("source", "?")}, page {d.metadata.get("page", "?")})\n{d.page_content}'
        for i, d in enumerate(docs)
    )

from types import SimpleNamespace
docs = [
    SimpleNamespace(metadata={'source': 'handbook.pdf', 'page': 3}, page_content='Vacation policy details.'),
    SimpleNamespace(metadata={'source': 'handbook.pdf', 'page': 5}, page_content='Sick leave details.'),
]
print(format_docs(docs))

Step 6: Assemble the LCEL Chain

from langchain_core.runnables import RunnablePassthrough
from langchain.schema.output_parser import StrOutputParser
from langchain_openai import ChatOpenAI

model = ChatOpenAI(model='gpt-4o-mini', temperature=0)

rag_chain = (
    {'context': retriever | format_docs, 'question': RunnablePassthrough()}
    | rag_prompt
    | model
    | StrOutputParser()
)

Step 7: Invoke

answer = rag_chain.invoke('What is our refund policy?')
print(answer)

Step 8: Stream the Answer

for chunk in rag_chain.stream('What is our refund policy?'):
    print(chunk, end='', flush=True)

Étape 9 : renvoyer les sources séparément

Vous souhaitez parfois obtenir à la fois la réponse AND les documents récupérés dans la sortie :

from langchain_core.runnables import RunnableParallel

rag_with_sources = RunnableParallel(
    context=retriever,
    answer=rag_chain
)

result = rag_with_sources.invoke('What is our refund policy?')
print(result['answer'])
for doc in result['context']:
    print(doc.metadata)

Étape 10 : RAG conversationnel

Ajoutez une récupération tenant compte de l’historique : reformulez les questions de suivi sous forme autonome avant la récupération :

from langchain.chains import create_history_aware_retriever
# 'And what about XL sizes?' -> 'What is the refund policy for XL sizes?'

Étape 11 : évaluer la chaîne

L’intégration LangSmith capture chaque invocation de chaîne. Vous pouvez créer des jeux de données à partir de l’utilisation réelle et exécuter des évaluations.

Considérations pour la production

  • Épinglez les versions des modèles
  • Définissez max_tokens
  • Ajoutez le suivi de l’utilisation des jetons
  • Implémentez des nouvelles tentatives avec un modèle de repli
  • Mettez les représentations vectorielles en cache (elles sont déjà déterministes dans OpenAI)
  • Ajoutez Langfuse/LangSmith pour les traces

Rôle de format_docs

Pourquoi utiliser un utilitaire format_docs entre le récupérateur et l’invite ?

Récapitulatif

Vous avez construit une chaîne RAG complète avec LCEL. Cette structure de base peut évoluer vers la production grâce aux ajouts ci-dessus.

Gratuit pour commencer

Apprends AI Agents avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
60
Leçons
239

Questions Fréquemment Posées

La leçon « Construire une chaîne RAG de bout en bout » est-elle gratuite ?

Oui — le texte complet de « Construire une chaîne RAG de bout en bout » 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 AI Agents, passe à CoddyKit PRO. Le cours AI Agents comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Construire une chaîne RAG de bout en bout » ?

Assemblez tous les éléments : chargeur -> découpeur -> embeddings -> stockage vectoriel -> récupérateur -> prompt -> modèle. Tu pratiques AI Agents 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 AI Agents ?

Aucune expérience préalable n'est requise. AI Agents 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 4 sur 4.

Combien de temps prend la leçon « Construire une chaîne RAG de bout en bout » ?

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 AI Agents ?

Oui. Chaque leçon AI Agents 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

  1. Architecture de LangChain : modèles, prompts et chaînes
  2. Chargeurs, découpeurs et stockages vectoriels
  3. LCEL (langage d’expressions de LangChain)
  4. Construire une chaîne RAG de bout en bout
← Retour à AI Agents