L'histoire de Sami : comprendre l'IA, étape par étape

Pas de jargon d'abord : une seule histoire, du début à la fin. Chaque nouveau mot technique arrive seulement quand l'histoire en a besoin.

🧑‍💼
Sami travaille à l'accueil d'un centre de formation. Toute la journée, on lui pose les mêmes questions : le prix, la durée, le programme… On va l'aider petit à petit avec l'IA.
🌐

Avant de commencer : la carte du terrain

Cinq mots vont revenir tout le long : IA, Machine Learning, Deep Learning, embedding et RAG. Voici comment ils s'emboîtent, comme des poupées russes. Cliquez sur chaque niveau — on y reviendra à chaque étape de l'histoire de Sami.

Le fil de l'histoire : Sami va gagner ces capacités une par une. Round 1, il n'a rien de tout ça. À la fin du Round 4, il aura les quatre.

Round 1 — Le robot à mots-clés (sans IA)

📖 L'histoire : Sami en a assez de répéter les mêmes réponses. Il programme un petit robot : si le message contient le mot « prix », il renvoie la phrase sur le prix. Simple, rapide… mais fragile.

🧑
C'est combien pour la formation Laravel ?
🤖
🤔 … (aucun mot ne correspond exactement à « prix »)
Pourquoi ça rate : le mot « prix » n'apparaît nulle part dans la question. Le robot compare des mots, pas des idées. Pour lui, « combien coûte » et « quel est le prix » sont deux phrases complètement différentes.
Voir le code PHP de ce robot simple
$documents = [
    "prix"  => "Le prix de la formation est de 500 DT.",
    "durée" => "La formation Laravel dure 40 heures.",
];
foreach ($documents as $motCle => $reponse) {
    if (str_contains(strtolower($question), $motCle)) {
        echo $reponse;
    }
}
🔁 Retour à la carte : ce Round 1 n'utilise aucun des 4 blocs de la carte mentale. C'est juste du PHP classique — la comparaison de mots. Il nous manque un moyen de comprendre le sens, pas seulement les mots.

Round 2 — Sami apprend à comprendre le sens

📖 L'histoire : Sami reçoit des lunettes magiques (un modèle de Deep Learning). Avec ces lunettes, chaque phrase qu'il lit se transforme en un point sur une carte invisible : les phrases qui veulent dire la même chose tombent au même endroit sur la carte, même si les mots sont différents.

1C'est quoi, concrètement, ce point sur la carte ?

C'est une liste de nombres, appelée vecteur ou embedding. Comme une adresse GPS a 2 nombres (latitude, longitude), une phrase en a des centaines. Regardez : « Le chat dort » et « Le chat se repose » tombent au même endroit ; « La voiture roule » tombe ailleurs.

« Le chat dort » « Le chat se repose » « La voiture roule »

Deux phrases proches par le sens ➜ deux points proches sur la carte.

2Comment Sami obtient ce point (le vecteur) ?
$embedding = getEmbedding("La formation Laravel dure 40 heures.");
// $embedding n'est PAS écrit à la main.
// Résultat (extrait) : [0.80, 0.18, -0.30, 0.85, ...]

Essayez : transformez une phrase en vecteur à essayer

4 valeurs fictives pour l'exemple ; un vrai modèle en donne des centaines.

Piège fréquent : ces nombres ne veulent rien dire isolément. On ne peut pas lire « 0.80 = prix ». C'est l'ensemble des nombres qui représente le sens, comme une empreinte digitale entière identifie une personne, pas un seul sillon.
🔁 Retour à la carte : les lunettes magiques, c'est le Deep Learning. Le point sur la carte, c'est l'embedding. Sami comprend maintenant le sens — mais il n'a toujours pas accès à ses documents pour répondre. C'est le Round 3.

Round 3 — Sami retrouve la bonne fiche

📖 L'histoire : Sami range chaque fiche d'information (prix, durée, programme) dans une armoire (une base de données MySQL), avec son point sur la carte du sens à côté. Quand une question arrive, il calcule le point de la question, puis cherche la fiche dont le point est le plus proche sur la carte.

❓ « C'est combien ? » 🔢 vecteur on compare aux fiches de l'armoire ➜ 📄 Durée : 40h 📄 ✅ Prix : 500 DT 📄 Programme : PHP, MVC, Eloquent La fiche la plus proche sur la carte gagne.

Cette « distance sur la carte » a un nom précis : la similarité cosinus. Un score proche de 1 = presque le même sens ; proche de 0 = aucun rapport.

Voir le code PHP de cette recherche
$vQuestion = getEmbedding($question);
foreach ($documents as $document) {
    $score = cosineSimilarity($vQuestion, $document['embedding']);
    if ($score > 0.75) {
        $meilleurPassage = $document['contenu'];
    }
}

function cosineSimilarity(array $a, array $b): float {
    $dot = $normA = $normB = 0.0;
    foreach ($a as $i => $x) {
        $dot   += $x * $b[$i];
        $normA += $x * $x;
        $normB += $b[$i] * $b[$i];
    }
    return $dot / (sqrt($normA) * sqrt($normB));
}

Essayez : comparez la question aux 3 fiches à essayer

La barre verte est la fiche la plus proche : c'est elle que Sami va utiliser.

🔁 Retour à la carte : l'armoire + la recherche, c'est PHP + MySQL, combiné aux embeddings du Round 2. Sami a maintenant retrouvé la bonne fiche. Il ne lui reste qu'à la lire à voix haute intelligemment — Round 4.

Round 4 — Sami rédige une vraie réponse (RAG complet)

📖 L'histoire : Sami donne la fiche trouvée à un collègue très doué pour écrire (un modèle génératif, un LLM). Ce collègue lit la fiche et la question, puis rédige une phrase naturelle. Il ne devine pas au hasard : il s'appuie uniquement sur la fiche qu'on lui a donnée.

$context  = "La formation Laravel dure 40 heures. Elle comprend PHP, MVC, Eloquent et API REST.";
$reponse  = generateAnswer($question, $context);
echo $reponse;
// "La formation Laravel dure 40 heures et couvre PHP, MVC, Eloquent et les API REST."
Voir le code PHP de l'appel au modèle génératif
function generateAnswer(string $question, string $context): string {
    $prompt = "Contexte :\n{$context}\n\nQuestion : {$question}\n"
            . "Réponds uniquement à partir du contexte ci-dessus.";
    $ch = curl_init('https://api.anthropic.com/v1/messages');
    curl_setopt_array($ch, [
        CURLOPT_HTTPHEADER => ['content-type: application/json',
            'x-api-key: ' . getenv('API_KEY'), 'anthropic-version: 2023-06-01'],
        CURLOPT_POSTFIELDS => json_encode(['model' => 'claude-sonnet-5',
            'max_tokens' => 300, 'messages' => [['role' => 'user', 'content' => $prompt]]]),
        CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true
    ]);
    $data = json_decode(curl_exec($ch), true);
    return $data['content'][0]['text'];
}

Ne mettez jamais la clé API dans du code visible au navigateur ; gardez-la côté serveur.

Le voyage complet, en une seule image

❓ « C'est combien pour la formation ? » 🔢Embedding 🔍Fiche trouvée 🧠LLM rédige ✅Réponse « Le prix est de 500 DT. »

Testez le Sami complet à essayer

🔁 Retour à la carte, une dernière fois : Round 4 = tous les blocs ensemble. Deep Learning (comprendre), embedding (représenter), PHP + MySQL (retrouver), LLM (rédiger). Cette combinaison complète a un nom : RAG.

Et dans la vraie vie, on croise ça où ?

Ces mots ne sont pas juste théoriques : vous les utilisez déjà, tous les jours.

✉️ Filtre anti-spam
Machine Learning
📸 Reconnaissance faciale (Face ID)
Deep Learning
🔎 Recherche Google qui comprend une question mal formulée
Embeddings
🎬 Recommandations Netflix / Spotify
Machine Learning
🗣️ Siri, Alexa, ChatGPT, Claude
LLM (IA générative)
💬 Un chatbot de site qui répond avec vos propres documents
RAG — exactement l'histoire de Sami

Glossaire visuel

🌍 IA (Intelligence artificielle) — Toute machine qui imite une capacité humaine.
🧩 Machine Learning — La machine apprend des règles à partir d'exemples, au lieu qu'on les lui dicte.
🧠 Deep Learning — Machine Learning avec des réseaux de neurones ; comprend le sens d'un texte ou d'une image.
🔢 Embedding / vecteur — Une liste de nombres qui représente le sens d'un texte ; un point sur la « carte du sens ».
📐 Similarité cosinus — Un score qui mesure si deux vecteurs sont proches (donc si deux textes ont un sens proche).
🧠💬 LLM — Un modèle entraîné à rédiger du texte naturel (ChatGPT, Claude…).
💬 RAG — Recherche dans vos documents + rédaction par un LLM = réponse fiable et naturelle.
🗄️ PHP + MySQL — Le code et la base de données qui stockent les documents et pilotent toute la mécanique.

Quiz de fin

À retenir en une phrase : le RAG, c'est donner à un rédacteur IA la bonne fiche au bon moment — trouvée grâce au sens (embeddings), pas grâce aux mots exacts.