Aller au contenu principal

Introduction au RAG

Qu’est-ce que le RAG ?

RAG (Retrieval-Augmented Generation) est une architecture qui combine un système de recherche d’information avec un modèle de langage (LLM). Au lieu de compter uniquement sur les connaissances internes du modèle, le RAG va d’abord chercher des informations pertinentes dans une base de données, puis injecter ces informations dans le prompt pour générer une réponse fondée sur des données réelles.

Pourquoi le RAG est-il devenu incontournable ? Parce que les LLMs ont trois limitations fondamentales :

  1. Connaissances figées : un modèle ne sait que ce qu’il a appris lors de son entraînement
  2. Hallucinations : il peut inventer des faits avec une grande assurance
  3. Données privées : il n’a pas accès à vos documents internes

Le RAG résout ces trois problèmes en ajoutant une étape de recherche avant la génération.

Architecture RAG

Le pipeline RAG se décompose en deux phases principales :

1

Indexation (offline)

Découper vos documents en chunks, les encoder en embeddings, les stocker dans un vector store. Cette étape se fait une seule fois (ou lors de mises à jour).

2

Recherche (retrieval)

Encoder la question de l'utilisateur en embedding, chercher les chunks les plus similaires dans le vector store via la similarité cosinus.

3

Augmentation (prompt enrichi)

Injecter les chunks retrouvés dans le prompt du LLM en tant que contexte. Le modèle dispose maintenant d'informations factuelles pour répondre.

4

Génération

Le LLM génère une réponse fondée sur le contexte fourni. La réponse est factuelle, sourcée et pertinente.

RAG vs Fine-tuning

Le RAG et le fine-tuning résolvent des problèmes similaires mais de manières différentes :

# Comparaison RAG vs Fine-tuning

comparaison = {
    "RAG": {
        "mise_a_jour": "Instantanée (ajouter/supprimer des documents)",
        "cout": "Faible (pas de réentraînement)",
        "tracabilite": "Excellente (on sait d'où vient l'info)",
        "hallucinations": "Réduites (réponses fondées sur des sources)",
        "cas_usage": "Documentation, FAQ, bases de connaissances",
    },
    "Fine-tuning": {
        "mise_a_jour": "Coûteuse (réentraînement nécessaire)",
        "cout": "Élevé (GPU, temps, données annotées)",
        "tracabilite": "Faible (connaissances intégrées au modèle)",
        "hallucinations": "Possibles (le modèle peut extrapoler)",
        "cas_usage": "Style d'écriture, format de sortie, tâches spécifiques",
    },
}

En pratique, le RAG est souvent la meilleure solution pour intégrer des connaissances factuelles, tandis que le fine-tuning est préférable pour modifier le comportement ou le style du modèle.

Le stack technique

Pour construire un pipeline RAG avec Mistral, vous aurez besoin de :

# Les dépendances essentielles
# pip install mistralai faiss-cpu numpy

from mistralai import Mistral  # LLM + Embeddings
import faiss                    # Vector store
import numpy as np              # Calculs vectoriels
  • mistralai : SDK pour les embeddings (mistral-embed) et la génération (mistral-large)
  • faiss-cpu : bibliothèque de Meta pour la recherche vectorielle rapide
  • numpy : manipulation de matrices de vecteurs

Dans les leçons suivantes, vous construirez chaque étape de ce pipeline pas à pas, de la préparation des données jusqu’à la génération de réponses.

Quand utiliser le RAG ?

Le RAG est particulièrement adapté quand :

  • Vous avez des documents internes (documentation technique, procédures, contrats)
  • Les informations changent fréquemment (prix, disponibilité, réglementations)
  • Vous avez besoin de traçabilité (savoir d’où vient chaque information)
  • Vous voulez réduire les hallucinations du modèle
  • Vous n’avez pas le budget ou les données pour du fine-tuning

Points clés à retenir

  • Le RAG combine recherche d’information (retrieval) et génération par LLM
  • L’architecture se décompose en : indexation, recherche, augmentation, génération
  • Le RAG est préférable au fine-tuning pour les connaissances factuelles évolutives
  • Mistral fournit les deux briques essentielles : embeddings et LLM
  • FAISS est la bibliothèque de référence pour la recherche vectorielle