#rag — LLM et transformers
RAG : répondre en s'appuyant sur ses documents.
Ce que tu vas manipuler
- Bienvenue dans #rag. À gauche, 14 sphères grises : le règlement intérieur d'une entreprise fictive, découpé en morceaux de 40 mots (avec 25 % de recouvrement), chacun transformé en vecteur et posé dans l'espace par une projection 3D. À droite, deux cadres vides : le contexte qu'on enverra au modèle de langage, et sa réponse. Un LLM seul répond de mémoire — et invente avec assurance quand il ne sait pas : c'est l'hallucination. La génération augmentée par récupération (RAG) change la règle : on cherche d'abord les morceaux les plus proches de la question, on les met dans le contexte, et le modèle répond à partir d'eux, en citant ses sources. Ici le plongement est un jouet (sac de mots pondéré TF-IDF, pas un vrai modèle d'embedding), mais le pipeline est exactement le même.
- Posons une première question :
/exemple 1— « Combien de jours de télétravail par semaine ? ». Regarde la sphère bleue tomber dans le nuage, puis les liens verts partir vers les morceaux les plus proches. - Et si l'on ne gardait qu'un seul morceau ?
/k 1. - Élargis :
/k 4. Le système demande quatre voisins. - Assemble la réponse à partir de ce contexte :
/repondre. - Maintenant une question qui n'a rien à voir avec les documents :
/hors-sujet. - Le découpage compte autant que la recherche. Passe à des morceaux de 20 mots :
/decouper 20. - Repose une vraie question sur ces petits morceaux :
/exemple 2— « Comment déclarer une note de frais ? ». - À toi de jouer.
/documents cuisinepuis/exemple 3(rattraper une mayonnaise) ;/documents iapuis/question qu'est-ce qu'une hallucination;/seuil 0.4pour voir des morceaux repasser au gris ;/recouvrement 50pour doubler les morceaux ;/k 8pour gaver le contexte de bruit ;/reinitpour repartir. Retiens le triptyque : découper juste, retrouver peu mais bien, refuser quand rien ne colle. Prochaine étape : #alignement-rlhf, où l'on apprend au modèle à préférer les réponses honnêtes et utiles.
Commandes du canal
/documents <entreprise|cuisine|ia>— Change le corpus de documents (la question est effacée)./decouper <20..80>— Taille des morceaux, en mots./recouvrement <0..50>— Part des mots partagés entre deux morceaux consécutifs (%)./k <1..8>— Nombre maximal de morceaux mis dans le contexte./seuil <0..1>— Similarité minimale pour entrer dans le contexte./question <mot>— Pose une question (toute la ligne) et lance la recherche./repondre— Assemble la réponse à partir des morceaux retenus, avec citations./hors-sujet— Pose une question sans rapport avec les documents./exemple <1|2|3>— Pose une question prête pour le corpus courant./reinit— Revient au règlement intérieur, morceaux de 40 mots, k = 3, seuil 0,20, sans question.
Glossaire
- RAG (génération augmentée par récupération)
- Architecture où, avant de répondre, on retrouve dans une base de documents les passages les plus proches de la question, puis on les donne au modèle de langage comme contexte. La réponse s'appuie sur des sources récentes et vérifiables au lieu de la seule mémoire du modèle.
- Morceau (chunk)
- Fragment de document (quelques dizaines à quelques centaines de mots) indexé comme une unité. Trop court, il coupe les phrases et perd le sens ; trop long, il mélange les sujets et dilue le contexte. Le découpage est le premier réglage d'un système RAG.
- Plongement (embedding)
- Vecteur numérique qui représente un texte de telle sorte que deux textes proches en sens soient proches dans l'espace. Un vrai modèle d'embedding est appris ; ici, on utilise un jouet (sac de mots pondéré TF-IDF, haché en 32 dimensions) qui ne rapproche que les mots identiques.
- Base vectorielle
- Index qui stocke les plongements des morceaux et répond vite à la question « quels vecteurs sont les plus proches de celui-ci ? ». À grande échelle, elle utilise des structures approximatives (HNSW, IVF) pour éviter de comparer la question à tous les vecteurs.
- Similarité cosinus
- Cosinus de l'angle entre deux vecteurs : 1 quand ils pointent dans la même direction, 0 quand ils sont orthogonaux (rien en commun). Indépendante de la longueur des textes, c'est la mesure standard pour comparer des plongements.
- Recherche des k plus proches
- Étape de récupération : classer les morceaux par similarité avec la question et garder les
kpremiers. Petit k : contexte précis mais incomplet ; grand k : plus complet mais bruité et coûteux. En pratique on récupère large puis on reclasse (re-ranking) avec un modèle plus fin. - Recouvrement (overlap)
- Part des mots qu'un morceau partage avec le précédent. Il donne aux phrases coupées par une frontière une seconde chance d'exister entières dans le morceau suivant, au prix d'un index plus gros et de doublons dans le contexte.
- Fenêtre de contexte
- Texte que reçoit le modèle de langage pour répondre : la question plus les morceaux retrouvés. Elle est limitée en tokens et chaque token coûte ; on y met donc peu de morceaux, mais bien choisis.
- Hallucination
- Réponse fluide, assurée et fausse, produite par un modèle qui comble un trou de connaissance. Le RAG la réduit en fournissant les faits dans le contexte et en autorisant le refus quand aucun passage pertinent n'est trouvé.
- Ancrage et citation des sources (grounding)
- Fait de rattacher chaque affirmation de la réponse au passage qui la soutient, par exemple avec un numéro [1], [2]. L'utilisateur peut vérifier, et l'on détecte les phrases que rien ne soutient. Un système ancré sait aussi dire « je ne sais pas d'après les documents ».
Autres canaux du thème LLM et transformers
- #tokenisation — Tokenisation et BPE : comment un LLM découpe le texte.
- #attention — Self-attention : chaque mot regarde les autres.
- #transformer-bloc — Le bloc transformer : attention, résidus, normalisation, FFN.
- #generation-temperature — Génération : température, top-k et top-p.
- #rag — RAG : répondre en s'appuyant sur ses documents.
- #alignement-rlhf — Alignement et RLHF : apprendre ce que les humains préfèrent.