Le flux RAG complet
Sur cette page
Découpage, embeddings : il est temps de parcourir le pipeline complet, sur un exemple miniature qui rend chaque étape tangible. Six étapes : les trois premières forment le prétraitement, fait une fois ; les trois suivantes se répètent à chaque question.
Étape 1 : découper le texte
Un rapport d’entreprise à deux sections :
- Recherche médicale : « Cette année, nous avons fait de grands progrès dans la compréhension de XDR-47, un “bug” jamais observé auparavant. »
- Ingénierie logicielle : « Cette division a beaucoup étudié les vecteurs d’infection de nos systèmes distribués. »
Étape 2 : vectoriser chaque morceau
Imaginons un modèle d’embedding parfait qui ne renvoie que deux nombres, et dont on connaît le sens : le premier mesure à quel point le texte parle de médecine, le second à quel point il parle de logiciel.
- La section médicale obtient
[0.97, 0.34]: très médicale, un peu logicielle à cause du mot « bug ». - La section logicielle obtient
[0.30, 0.97]: très logicielle, avec une touche médicale due aux « vecteurs d’infection ».
Les scores ne sont jamais purs : un embedding capte tout ce qu’un texte évoque, pas une étiquette unique.
La normalisation. Avant le stockage, chaque vecteur est ramené à une longueur de 1. L’API le fait souvent d’elle-même : c’est le normalize=True de Titan. Nos vecteurs deviennent [0.944, 0.331] et [0.295, 0.955], deux points sur le cercle de rayon 1. Seule leur direction les distingue désormais.
Étape 3 : stocker
Les vecteurs normalisés vont dans une base vectorielle, une base optimisée pour stocker et comparer de longues listes de nombres. Le prétraitement s’arrête là : on attend une question.
Étape 4 : vectoriser la question
L’utilisateur demande : « Qu’a fait le département d’ingénierie logicielle cette année ? » La question passe par le même modèle : [0.1, 0.89], normalisé en [0.112, 0.994].
Étape 5 : trouver les vecteurs les plus proches
La base cherche le vecteur stocké le plus proche de celui de la question, avec la similarité cosinus : le cosinus de l’angle entre deux vecteurs, entre -1 et 1. Proche de 1, les textes se ressemblent ; proche de 0, ils n’ont rien à voir ; proche de -1, ils s’opposent. La formule est cos(θ) = (A · B) / (‖A‖ × ‖B‖) ; avec des vecteurs normalisés, elle se réduit au produit scalaire :
| Paire | Produit scalaire | Similarité | Distance |
|---|---|---|---|
| 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. L’écart ne change pas la conclusion.
La distance cosinus, que l’on croise souvent dans la documentation des bases vectorielles, vaut 1 moins la similarité : proche de 0, les textes se ressemblent.
Étape 6 : construire le prompt
On assemble la question et le morceau retrouvé dans un prompt pour Claude :
Réponds à la question de l'utilisateur à partir du rapport ci-dessous.
<question>
Qu'a fait le département d'ingénierie logicielle cette année ?
</question>
<rapport>
Cette division a beaucoup étudié les vecteurs d'infection de nos systèmes distribués.
</rapport>
Claude répond à partir du passage pertinent, et seulement de lui.
À vous de jouer
Refaire le calcul. Normalisez à la main le vecteur [0.5, 0.5] d’une question ambiguë, puis calculez sa similarité avec les deux sections. Laquelle gagne ? Que conclure pour une question qui mélange les deux sujets ?
Sources officielles : The full RAG flow (Claude Academy) · Amazon Titan Embeddings Text (documentation AWS : normalisation)
Points clés à retenir
- Six étapes : découper, vectoriser, stocker, puis vectoriser la question, chercher, construire le prompt.
- Les trois premières se font une fois ; les trois dernières à chaque question.
- Des vecteurs normalisés se comparent par leur produit scalaire, qui est leur similarité cosinus.
- Distance cosinus = 1 moins la similarité : plus elle est petite, plus les textes sont proches.
- Dans l’exemple : 0,98 pour la section logicielle, 0,43 pour la section médicale.