Skip to content

Le RAG complet : assembler recherche et génération

RAG (Retrieval-Augmented Generation) sépare deux responsabilités : un composant de recherche (la leçon précédente) trouve l’information pertinente, un LLM la reformule en réponse naturelle — sans jamais compter sur sa mémoire d’entraînement pour les faits eux-mêmes.

def ask_llm(question, contexte=None):
if contexte:
prompt = (
f"Tu es un assistant support technique interne. Voici la documentation disponible :\n\n"
f"{contexte}\n\n"
f"Question : {question}\n"
f"Consigne : reponds uniquement a partir de la documentation ci-dessus. "
f"Si l'information n'y figure pas, dis explicitement que tu ne sais pas."
)
else:
prompt = question
messages = [{"role": "user", "content": prompt}]
result = generator(messages, max_new_tokens=120, do_sample=False)
return result[0]["generated_text"][-1]["content"]

Le prompt s’articule en 4 blocs : un rôle (assistant support technique), un contexte (les chunks récupérés), la question, et une consigne anti-hallucination qui autorise explicitement le modèle à répondre « je ne sais pas ».

contexte_rag = "\n\n".join(chunks[i] for i in indices_top)
reponse_rag = ask_llm(question, contexte=contexte_rag)
print(reponse_rag)
Un rollback de déploiement doit être possible à partir de 10 minutes.

Une réponse exacte, concise, directement ancrée dans le runbook réel — à comparer à la réponse évasive du LLM nu (leçon 1), qui énumérait des facteurs génériques sans jamais donner ce chiffre.

LLM nu RAG
Réponse Évasive, aucun chiffre donné « à partir de 10 minutes » (exact)
Mots de contexte envoyés 0 219
Source citée Aucune rollback.pdf, sauvegardes.pdf

Le RAG a un coût (219 mots de contexte envoyés au modèle à chaque question, contre 0), mais ce coût reste minime comparé à l’alternative « tout dans le prompt » (envoyer l’intégralité des 5 documents à chaque question) : ici, seuls les 2 chunks les plus pertinents sont transmis, sélectionnés par recherche sémantique plutôt qu’inclus en bloc.

👉 Détecter une question hors du domaine documentaire


Junior TSAFACK – 12/09/2026