Connexion Premium

IA générative : le RAG par l’exemple, avec 15 000 actus Next et Mistral 7B

Ça fait raguer mon Mac !

IA générative : le RAG par l’exemple, avec 15 000 actus Next et Mistral 7B

Nous avons passé à la moulinette du RAG le contenu de plus de 15 000 actus publiées sur Next ces dix dernières années. Le but ? En donner ensuite des morceaux à une IA générative pour qu’elle adapte ses réponses. Nous avons tout fait en local, sur un MacBook Pro avec Ollama et Mistral 7B.

Le Retrieval-Augmented Generation, ou génération augmentée par récupération en français, est une technique permettant à des IA génératives d’utiliser une base de connaissances pour répondre à des prompts. On utilise aussi très souvent son acronyme pour en parler : RAG.

Rag dans ma machine

Après les explications techniques et son principe de fonctionnement, nous vous proposons un exemple pratique. Nous avons récupéré le contenu de plus de 15 000 articles de Next sur une dizaine d’années pour l’associer à Mistral 7B, un LLM libre de 7,3 milliards de paramètres (sorti en 2023, désormais loin des ténors du moment qui ont au bas mot des centaines de milliards de paramètres, voire des milliers pour certains), sous licence Apache 2.0. Le RAG est agnostique du modèle d’IA générative, nous aurions évidemment pu en prendre un autre.

Dans notre cas, un traitement local était impératif. Nous avons utilisé un MacBook Pro avec un SoC M2 et 16 Go de mémoire partagée. Mistral 7B tourne dessus sans problème, avec de la marge pour exécuter d’autres applications en même temps. Côté logiciel, nous avons installé Ollama (open source, licence MIT). Nous l’avions déjà présenté dans un précédent tuto sur l’influence du GPU dans les performances des IA génératives.

Si les explications techniques ne vous intéressent pas, sautez directement à l’inter : « Concrètement, ça donne quoi d’utiliser le RAG ». Vous aurez des exemples de réponses à des prompts sur Mistral 7B avec et sans RAG (en local dans les deux cas).

Sous le capot pour la partie technique : Ollama, Mistral et Nomic

Passons rapidement (mais pas trop) sur les détails techniques, dont voici les grandes lignes : on télécharge le modèle d’IA générative avec la commande ollama pull mistral puis un autre modèle pour transformer le texte de nos actus en vecteurs (des nombres, qui sont ensuite utilisés par les algorithmes des IA génératives) avec ollama pull nomic-embed-text (on parle aussi d’embedding).

Un petit script permet de découper automatiquement le texte en plusieurs morceaux (chunks) qui sont ensuite transformés en tokens via nomic-embed-text. Cette indexation ne doit se faire qu’une seule fois. Dans notre cas, elle a pris environ trois heures (sur le MacBook Pro M2 avec plus de 15 000 articles). Pour ajouter de nouveaux articles par la suite, pas la peine de tout réindexer, il suffit de passer à la moulinette les nouveaux textes.

Passons aux choses sérieuses avec le déroulement d’un prompt. Le prompt est vectorisé, puis comparé à tous les vecteurs des morceaux des articles de notre base. Nous gardons les 10 meilleurs ; qui sont ensuite envoyés à Mistral en même temps que le prompt. Mistral va donc élaborer sa réponse en s’appuyant sur ses connaissances et les 10 morceaux des actus de Next.

On peut affiner le prompt pour lui demander de n’utiliser que les données de Next par exemple. Après, c’est un modèle statistique (comme toutes les IA génératives), donc statistiquement, il fait parfois n’importe quoi ; rien de neuf sous le Soleil.

Concrètement, ça donne quoi d’utiliser le RAG

Pour nos tests, nous utilisons donc Ollama sur notre MacBook Pro, sans aucune connexion à Internet, toutes les opérations se faisant en local.

Voici quelques prompts et les réponses de Mistral, avec ou sans RAG. Rappel important : nous n’avons pas spécialement cherché à optimiser les réponses (le prompt passé à Mistral avec le contenu des actualités jugé le plus intéressant pourrait être amélioré).

Nous vous proposons huit prompts, sur le logiciel, le droit, les réseaux sociaux, le hardware, l’informatique quantique… Les réponses sont, pour rappel, statistiques et peuvent donc par définition être totalement différentes pour un même prompt répété plusieurs fois. Nous livrons ici la première réponse proposée par l’IA générative.

Si vous avez des idées de prompts à tester, n’hésitez pas à les proposer en commentaire, suivant les cas je pourrai les lancer et donner les résultats dans une prochaine actualité

Passons aux choses sérieuses avec une première question soulevée par Vincent (il a la réponse, j’en suis certain ) ! Mais il est curieux de voir le résultat avec ou sans le contenu des actualités de Next… qu’il a pour la plupart rédigées.

Puis-je avoir une synthèse des défauts de Windows 11 ?

Réponse de Mistral avec RAG sur les actus Next :

Il reste 70% de l'article à découvrir.

Cadenas en colère - Contenu premium

Soutenez un journalisme indépendant,
libre de ton, sans pub et sans reproche.

Accédez en illimité aux articles

Profitez d'un média expert et unique

Intégrez la communauté et prenez part aux débats

Partagez des articles premium à vos contacts

Commentaires (6)

votre avatar
Que donnent ces questions ?
Quelle puissance d’émission il faut pour communiquer avec un satellite qui se trouve à plus de 300Km ?
Il n'y a pas de problème ?
Il faut je pense ajouter du contexte en précisant avant :
On parle de plus en plus de communications des smartphones avec des satellites en orbite basse.
votre avatar
Maintenant, plus qu'à remplacer la barre de recherche par un chatbot qui tourne sur la machine de Sébastien :-D
votre avatar
Il n'y a qu'à faire un coup de RAG à @Ness_01 .

En fait, je m'étais fait un peu la même réflexion en lisant le titre de l'article : chic, si les abonnés peuvent avoir accès à un outil de ce type sur Next.
votre avatar
Un tel outil aurait sans doute un intérêt sur Next puisqu'on a des archives volumineuses avec beaucoup d'articles très denses.

Maintenant, serait-il de nature à convaincre des lecteurs (nouveaux ou anciens) de franchir le pas de l'abonnement ?
votre avatar
Je fait déjà assez chaud chez moi, laissez ma machine tranquille !!! :xzombi:
votre avatar
"On dit chiffrer ou crypter ? Explique-moi pourquoi un seul des deux est correct" c'est pour troller ?? hein...
et l'IA qui ne donne pas la véritable raison: chiffrer est le faux-amis de crypter.
chiffrer vient du latin, utiliser des chiffres pour coder un message
crypter vient du grec et forme le mot "to encrypt"

La différence est simple, il est possible de décrypter un message (rendre lisible un message dont on ne connait pas la clef, cassé le chiffrement) mais il est impossible de "crypter" un message car cela revient à transformer un message lisible en message chiffré sans connaitre la clef, c'est philosophique.