Le flux RAG complet
Maintenant que nous avons couvert les bases du RAG, le decoupage de texte et les embeddings, parcourons le pipeline RAG complet etape par etape.
Etape 1 : Decouper le texte source
Prenez votre document source et decoupez-le en chunks gerables (Recherche medicale, Ingenierie logicielle, etc.).
Etape 2 : Generer les embeddings
Convertissez chaque chunk en embeddings numeriques. Pour illustrer le concept avec un modele imaginaire a deux nombres :
- Section recherche medicale :
[0.97, 0.34]— tres medical, un peu logiciel a cause du mot “bug” - Section ingenierie logicielle :
[0.30, 0.97]— tres logiciel, mais “vecteurs d’infection” a des connotations medicales
Normalisation
Avant le stockage, les embeddings sont normalises pour avoir une magnitude de 1.0. C’est generalement fait automatiquement par l’API. Apres normalisation : [0.944, 0.331] et [0.295, 0.955].
Etape 3 : Stocker dans une base vectorielle
Les embeddings normalises sont stockes dans une base de donnees vectorielle, specialisee pour stocker, comparer et rechercher des listes de nombres. A ce stade, le pretraitement est termine. On attend qu’un utilisateur soumette une requete.
Etape 4 : Traiter la requete utilisateur
Quand un utilisateur pose une question, passez-la dans le meme modele d’embedding. Par exemple, “Qu’a fait le departement d’ingenierie logicielle cette annee ?” produit [0.1, 0.89] (score medical bas, score logiciel haut).
Etape 5 : Trouver les embeddings similaires
La base vectorielle utilise la similarite cosinus pour determiner quels embeddings sont les plus proches.
Points cles sur la similarite cosinus :
- Resultats entre -1 et 1
- Proche de 1 = tres similaire
- Proche de 0 = sans rapport
- Proche de -1 = completement oppose
La formule utilise le produit scalaire : cos(a) = (A . B) / (||A|| x ||B||)
La distance cosinus (1 - similarite cosinus) est souvent utilisee dans les bases vectorielles : les valeurs proches de 0 indiquent une forte similarite.
Etape 6 : Construire le prompt final
Prenez la question de l’utilisateur et le chunk le plus pertinent, combinez-les dans un prompt pour Claude.
Resume du pipeline complet
- Decouper les documents sources
- Generer les embeddings pour chaque chunk
- Stocker les embeddings dans une base vectorielle
- Quand un utilisateur pose une question, generer l’embedding de sa requete
- Trouver les embeddings stockes les plus similaires via la similarite cosinus
- Ajouter les chunks pertinents au prompt avec la question de l’utilisateur
- Envoyer le prompt enrichi a Claude pour une reponse