Le flux RAG complet
Sur cette page
Découpage, embeddings : on a les pièces. Cette leçon les assemble sur un exemple volontairement minuscule, pour suivre chaque nombre d’un bout à l’autre du pipeline, de la préparation du document jusqu’au prompt envoyé à Claude.
Étape 1 : découper le texte source
Deux sections suffisent pour l’exemple :
- Section 1, recherche médicale : « Cette année a vu des progrès importants dans notre compréhension de XDR-47, un “bug” que nous n’avions jamais rencontré. »
- Section 2, ingénierie logicielle : « Cette division a consacré un effort important à l’étude de divers vecteurs d’infection dans nos systèmes distribués. »
Les deux sections emploient un mot de l’autre domaine : « bug » côté médical, « infection » côté logiciel. C’est ce qui rend l’exemple intéressant.
Étape 2 : générer les embeddings
Imaginons un modèle d’embedding idéal qui renverrait seulement deux nombres, dont on connaîtrait le sens : le premier mesure à quel point le texte parle de médecine, le second à quel point il parle de logiciel.
- Section médicale :
[0.97, 0.34], très médicale, un peu logicielle à cause de « bug ». - Section logicielle :
[0.30, 0.97], très logicielle, un peu médicale à cause de « infection ».
L’API normalise ensuite chaque vecteur pour que sa longueur vaille 1. On obtient [0.944, 0.331] et [0.295, 0.955]. Sur un graphique, ces deux points se placent sur un cercle de rayon 1.
Étape 3 : stocker dans une base vectorielle
On range les vecteurs dans une base de données vectorielle, conçue pour stocker des listes de nombres et retrouver vite les plus proches d’un vecteur donné. Tout ce qui précède est de la préparation, faite une fois, à l’avance. Le système attend maintenant une question.
Étape 4 : vectoriser la question
L’utilisateur demande : « Je m’intéresse à l’entreprise. En particulier, qu’a fait le département d’ingénierie logicielle cette année ? ». La question passe par le même modèle d’embedding et donne [0.1, 0.89] : peu de médecine, beaucoup de logiciel. Une fois normalisée : [0.112, 0.994].
Étape 5 : chercher les vecteurs les plus proches
La base vectorielle compare le vecteur de la question à ceux qu’elle stocke, avec la similarité cosinus : le cosinus de l’angle entre deux vecteurs.
| Valeur | Signification |
|---|---|
| Proche de 1 | Les textes ont un sens très proche |
| Autour de 0 | Les vecteurs sont perpendiculaires : aucun rapport |
| Proche de -1 | Les sens sont opposés |
Pour deux vecteurs normalisés, la similarité cosinus est simplement leur produit scalaire :
| Comparaison | Calcul | Similarité | Distance cosinus |
|---|---|---|---|
| Question et section logicielle | 0,112 × 0,295 + 0,994 × 0,955 | 0,98 | 0,02 |
| Question et section médicale | 0,112 × 0,944 + 0,994 × 0,331 | 0,43 | 0,57 |
La section logicielle l’emporte nettement. Le cours officiel affiche 0,983 et 0,398 ; le calcul à partir de ses propres vecteurs donne 0,982 et 0,434 avec les valeurs non arrondies. L’écart sur la section médicale ne change pas la conclusion.
Beaucoup de bases vectorielles parlent de distance cosinus, qui vaut 1 moins la similarité. Le sens de lecture s’inverse : une distance proche de 0 signifie une forte proximité, et on trie par distance croissante.
Étape 6 : construire le prompt final
On place la question et le morceau retenu dans le prompt :
Réponds à la question de l'utilisateur sur le rapport.
<user_question>
Qu'a fait le département d'ingénierie logicielle cette année ?
</user_question>
<report>
## Section 2 : Ingénierie logicielle
Cette division a consacré un effort important à l'étude de divers vecteurs d'infection dans nos systèmes distribués.
</report>
Claude répond à partir de ce seul passage, le plus pertinent pour la question. C’est tout le flux RAG : préparer et vectoriser les morceaux une fois, puis, à chaque question, vectoriser la question, retrouver les morceaux les plus proches et les donner à Claude.
À vous de jouer
Refaire le calcul. Reprenez les vecteurs bruts de l’exemple, normalisez-les en divisant chaque nombre par la longueur du vecteur (la racine carrée de la somme des carrés), puis calculez les deux similarités. Changez ensuite la question en « Quels progrès médicaux cette année ? », choisissez son vecteur, et vérifiez que la section médicale passe en tête.
Sources officielles : The full RAG flow (Claude Academy) · Embeddings (documentation Claude : vecteurs normalisés, produit scalaire et cosinus)
Points clés à retenir
- Préparation, une fois : découper, vectoriser, stocker les vecteurs avec leurs textes.
- À chaque question : vectoriser la question avec le même modèle, chercher les plus proches, construire le prompt.
- La similarité cosinus va de -1 à 1 ; pour des vecteurs normalisés, c’est le produit scalaire.
- La distance cosinus vaut 1 moins la similarité : la plus petite distance désigne le morceau le plus proche.
- Dans l’exemple : 0,98 pour la section logicielle, 0,43 pour la section médicale.