Aller au contenu principal

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

  1. Decouper les documents sources
  2. Generer les embeddings pour chaque chunk
  3. Stocker les embeddings dans une base vectorielle
  4. Quand un utilisateur pose une question, generer l’embedding de sa requete
  5. Trouver les embeddings stockes les plus similaires via la similarite cosinus
  6. Ajouter les chunks pertinents au prompt avec la question de l’utilisateur
  7. Envoyer le prompt enrichi a Claude pour une reponse