Passer au contenu principal
Lorsque les chercheurs de Google ont présenté pour la première fois le concept de Transformer, il a suscité beaucoup d’attention dans la communauté NLP.
Il a constitué la base de nouveaux réseaux neuronaux pour le traitement et la compréhension du langage naturel.
Peu après, OpenAI a popularisé les modèles GPT et, avec ChatGPT, a lancé l’ère des Large Language Models (LLM).
Les performances conversationnelles de ces modèles ont conduit beaucoup de gens à croire que l’IA était sur le point d’atteindre l’intelligence humaine.
Pourtant, malgré leur comportement « humain », les LLM ne voient, n’interprètent et ne comprennent pas le monde comme les humains.
Ce ne sont pas des machines à raisonner logiquement, mais plutôt des simulateurs conversationnels probabilistes.
Leur comportement repose sur la reconnaissance de motifs et les corrélations sémantiques, et non sur la logique ou la compréhension.
INNOCHAT est propulsé par les LLM d’OpenAI et utilise la Retrieval Augmented Generation (RAG) pour adapter les réponses en fonction de vos données téléchargées.

Qu’est-ce que la Retrieval Augmented Generation (RAG) ?

Les LLM sont entraînés sur d’énormes quantités de texte.
Ils reconnaissent des motifs et génèrent de nouveaux textes en se basant sur la probabilité que certains « tokens » (mots ou parties de mots) se suivent.
C’est pourquoi OpenAI nomme beaucoup de ses endpoints Chat Completions — le modèle « complète » le prompt.
Une explication détaillée des tokens est disponible dans la documentation officielle OpenAI :
https://help.openai.com/en/articles/4936856-what-are-tokens-and-how-to-count-them
Mais : les motifs ne signifient pas la vérité.
Les LLM peuvent très facilement halluciner lorsqu’aucune donnée pertinente n’est disponible.
La RAG tente de résoudre ce problème en ajoutant au prompt un contexte supplémentaire qui influence les probabilités.

Exemple

Prompt sans contexte :
Was ist INNOCHAT?
Cette requête repose entièrement sur les motifs sémantiques présents dans les données d’entraînement de base du modèle. Il n’y a aucune garantie que la réponse soit correcte ou fiable.
Mais que se passe-t-il si le prompt devient :
Répondez à la question suivante en utilisant le contexte ci-dessous :
INNOCHAT est un puissant framework No-Code / Low-Code qui vous permet de créer des chatbots multi-agents dotés de capacités d’appel de fonctions, en utilisant vos propres données. Il est conçu pour être convivial et polyvalent, avec de nombreuses options de personnalisation et une intégration avec les plateformes courantes.
Qu’est-ce qu’INNOCHAT ?
Le modèle est alors fortement orienté vers les informations fournies.
Le contexte influence la génération des tokens et conduit à une réponse beaucoup plus précise.
C’est cela la RAG : enrichir le prompt avec des sources de connaissance pertinentes, sans modifier le modèle lui-même.

Pourquoi ne pas simplement envoyer toutes les données en même temps ?

Parce qu’il existe des limites de tokens. Un modèle OpenAI comme gpt-3.5-16k peut gérer environ 10 000 mots de contexte.
Votre base de connaissances comporte souvent des centaines de pages ou des milliers de documents — bien plus que ce qui rentre dans une seule fenêtre LLM.
C’est pourquoi :
  1. Les documents sont découpés en chunks
  2. Chaque chunk est « encodé » (embedding)
  3. Les embeddings sont stockés dans une base de données vectorielle
  4. À chaque requête utilisateur, on recherche les chunks les plus pertinents
  5. Ces chunks sont insérés dans le prompt
  6. Le LLM répond sur la base de ce prompt contextualisé
Un embedding est une représentation mathématique du sens d’un extrait de texte.
Des phrases similaires se trouvent « plus proches » dans l’espace vectoriel.
Une bonne introduction aux embeddings :
https://stackoverflow.blog/2023/11/09/an-intuitive-introduction-to-text-embeddings/

Exemple : requête « What is innoChat ? »

Le chunk le plus pertinent est :
Qu’est-ce qu’INNOCHAT ?
La partie la plus pertinente, probablement extraite de notre base de données vectorielle, est :
innoChat est un puissant framework No-Code / Low-Code qui vous permet de créer des chatbots multi-agents dotés de capacités d’appel de fonctions, en utilisant vos propres données. Il est conçu pour être convivial et polyvalent, avec de nombreuses options de personnalisation et une intégration avec les plateformes courantes.
Avec ce contexte, le LLM peut générer une réponse correcte. AWS propose une bonne vue d’ensemble visuelle du processus RAG :

Quels types de questions fonctionnent bien ?

Type de requêteDescriptionExemple
Recherche d’informationRecherche d’informations concrètes dans les documents« Quelle est la politique de congés payés de Paladin Max, Inc. ? »
Résumés thématiquesRésumé d’un domaine thématique« Résumez les derniers développements en IA générative »

Quels types de questions fonctionnent mal ?

Type de requêteDescriptionExemple
Comparaison de documentsComparaison sans critères clairs« Trouve les incohérences dans tous les arguments de mes documents. »
Comptage ou calculs mathématiquesAnalyse quantitative basée sur les données d’entraînement« Combien de fois John est-il mentionné dans tous les contrats ? »
Instructions de niveau métaRéférence à la structure / numérotation des pages« Résumez la section 3 (pages 33–37) de ce rapport. »
Requêtes statistiques sur l’ensembleQuestions statistiques sur plusieurs documents« Combien de documents mentionnent le sujet X et liste-les dans un tableau. »
Génération de texte longTextes très longs basés sur les documents fournis« Rédige une revue de littérature de 5000 mots. »
Si votre cas d’usage nécessite ces tâches plus complexes, vous pouvez utiliser :
  • une architecture multi-agents
  • le function calling
— cela nécessite toutefois une configuration avancée.
Il est possible d’améliorer les performances de votre chatbot en optimisant vos données d’entraînement.
Consultez à ce sujet :
👉 Bonnes pratiques pour la préparation des données d’entraînement