
Développer des projets IA - Comprendre les RAG
Durée: 65m10s
Date de sortie: 07/04/2025
Dans ce deuxième épisode de notre série IA, nous allons parler des RAG (Retrieval Augmented Generation). En effet, avec la puissance des LLM combinée aux bases vectorielles, nous pouvons contrôler le contexte du LLM et ainsi avoir un meilleur contrôle des réponses. Pas d'obligation de fine-tuning et nous pouvons spécialiser un modèle dans un domaine ultra-spécifique. C'est le retour des chatbots, mais des chatbots qui fournissent des réponses pertinentes. Mais attention, si cela semble simple sur le papier, l'exécution est parfois compliquée pour obtenir des résultats acceptables. Retrouvez toutes les notes et les liens de l'épisode sur cette page : https://double-slash.dev/podcasts/ia-rag/
Bonjour à tous, bienvenue sur ce nouvel épisode de Double Slash.
Bonjour les devs.
Alors pour cette fois, c'est pas un épisode de news, on va faire un épisode spécial.
Donc dans la lignée de...
On avait déjà fait un épisode en janvier, si je ne me trompe pas, sur les l'IA.
Et donc voilà, deuxième épisode de l'année sur l'IA, on va parler des rags.
Et puis, bah comme d'habitude, nous sommes avec Alex.
Salut Alex !
Salut Patrick, salut tout le monde !
Super enthousiasme à l'idée de parler de rags.
Oui, parce que je pense qu'il y a...
Alors au-delà de la dimension technologique, je pense qu'il y a un vrai besoin métier
et ça peut apporter beaucoup de valeur au client final et donc au final.
Client final et je pense qu'il y a un petit bilier à se faire.
Et donc c'est une techno qui me paraît super intéressante à utiliser, à maîtriser pour,
bah, en potentiellement en fait, faire du business avec ça.
Ouais, ouais, ouais, c'est clair.
C'est clair, il y a de...
On est au début et c'est vrai que...
Bon, même si le rag existe depuis quelques temps quand même, il y a encore les entreprises,
ils ne sont pas vraiment dedans, donc il regarde de loin tout ça, mais à un moment
donné ça va se déclencher.
Et c'est vrai qu'il faudrait être un petit peu prêt pour répondre à la demande, même
si actuellement on parle du MCP, qui est quand même un petit peu différent parce que c'est
pas assez moins bordé que le rag, on va en parler, mais voilà.
Le rag, c'est un business qui va sourire dans quelques temps avec toutes les sociétés
qui vont voir un peu l'intérêt du truc et qui vont peut-être faire des demandes pour
développer des rags.
Parfait.
Donc, on dit le mot rag depuis tout à l'heure, ok?
Ouais.
On dit que c'est super bien.
Nous, on est complètement hype par ça technologiquement parlant, mais businessement parlant aussi.
On commence à rentrer dans le vice du sujet.
Clairement, un rag, c'est un acronyme, mais qu'est-ce que ça veut dire?
Alors, rag, c'est Retrival Augmented Generation.
Alors, j'avais entendu un canadien, on le joueur dire, c'était un gêné.
J'ai oublié comment il l'avait présenté, c'était pas mal.
C'est juste une génération LLM avec du contexte et par rapport à un contexte qu'on a retrouvé
dans une base de données documentaire.
Et puis, on lui donne au LLM et il va digérer tout ça et sortir une réponse qui concerne
en fait le contexte qu'on lui a redonné.
Donc, les différentes phases.
Et ce qu'on pourrait dire, que c'est une augmentation de contexte et que le LLM
n'est juste là uniquement pour verbaliser, utiliser en fait son savoir-faire grammaticale,
on va dire de construire un texte, construire, générer des phrases.
Par contre, la véracité des informations, elles sont issues de notre base de données
avec nos propres documents.
Et donc, potentiellement, ça peut être fermé, ça peut aussi être, quand je dis fermé,
ça veut dire qu'on peut éviter d'envoyer nos informations à JPD.
Parce que, potentiellement, on ne sait pas si on peut avoir des liens ou pas.
Voilà, mais potentiellement, en fait, tout reste chez nous.
Donc, toute notre savoir-faire, toutes nos documents, les documents,
peut-être top secret ou je ne sais pas quoi, on pourrait les mettre là-dedans
et ça ne sort pas de chez nous, mais on utilise en fait le LLM juste pour verbaliser.
Est-ce que c'est un peu près sale concept ?
Oui, c'est ça.
Le LLM, en fait, là, dans ce schéma, il va servir uniquement à générer les réponses.
On va juste donner des trucs et il va générer des réponses.
C'est un générateur de réponses, en fait.
Donc, en fait, on va, de suite, passer aux avantages du RAG, en fait, comme ça, c'est fait.
Première avantage, c'est le contrôle du contexte, parce que, comme tu le dis,
c'est des données qui nous appartiennent.
Donc, on garde le contrôle dessus et on va juste donner ce qui est nécessaire pour générer la réponse.
Donc voilà, qui correspond à la requête de l'utilisateur.
Le deuxième super avantage, en fait, c'est par rapport à l'utilisation classique d'un LLM,
en fait, l'utilisation du RAG, c'est que ça limite totalement les hallucinations.
C'est-à-dire que, vous savez, on connaissait tous les problèmes d'allustination,
de... il va générer des réponses un peu qui n'ont rien à voir,
juste pour pas dire qu'il sait pas ou un truc.
Voilà, c'est le principe du LLM, parce que voilà, il est là pour générer des réponses et assembler des mots.
Bah ça, on le limite complètement, parce qu'on lui dit,
si tu trouves pas la réponse dans ce que je te donne en contexte,
bah tu dis, je sais pas, voilà.
Tu dis, je peux pas vous répondre.
Et généralement, ça marche bien et donc, il n'invente pas des réponses.
Et bah ouais, parce que, pour le coup, d'autant plus,
si on a des questions hyper spécifiques et comme on le sait,
le LLM, c'est large, large modèle language, OK ?
Donc, c'est pas très spécifique, comme par exemple,
si on avait des documents hyper techniques, je sais pas,
sous la soudure à l'argon, sous l'eau, par exemple, c'est ultra spécifique.
Évidemment, que les LLM classiques ont été entraînés sur des jeux de données,
on va dire, génériques et standards, ne va pas avoir sa réponse là.
Donc, sur des documents qui sont ultra spécifiques, ultra techniques,
là, pour le coup, les possibilités d'alucination sont faibles, quoi.
Parce qu'on les a alimentés avec des bonnes...
C'est ça.
Des bonnes infos.
Excellente transition, puisque le troisième point,
le troisième avantage, c'est qu'on spécialise un modèle, en fait,
dans un secteur, donc tu dis, soudure à l'argon, par exemple,
vraiment hyper spécialisé.
Et bien, on le spécialise là-dedans sans avoir besoin d'entraîner,
ou quoi que ce soit.
Donc, on a un LLM qui est capable de répondre avec question très pointue,
sur un domaine précis, sans qu'on ait besoin de l'entraîner.
Et du coup, ça peut coûter aussi beaucoup, beaucoup, beaucoup moins cher
qu'à entraîner son propre modèle de soudure à l'argon, quoi.
Ouais, parce que c'est l'entraînement qui coûte le plus cher de toute façon,
donc, jusque l'inférence.
Donc, évidemment, oui, ça coûte beaucoup, beaucoup moins cher d'avoir.
Donc, c'est très utile.
C'est pour ça qu'il y a déjà des choses qui existent dans tout ce qui est juridique, etc.
Donc, voilà, qui est très spécialisé dans certains domaines.
Et ça, l'intérêt vraiment du RAC, c'est de spécialiser dans un domaine spécifique.
Donc, c'est pour ça que les sociétés, potentiellement, seront intéressées,
puisque, voilà, des sociétés qui sont spécialisées dans certains domaines
vont vouloir avoir, mais même après, des fois, c'est même pour l'utilisation interne de la société,
voilà, d'avoir un chat bot qui est capable de répondre à des questions techniques sur le métier, etc.
Je pense aussi au RH ou, par exemple, les politiques de vacances,
par exemple, ou les politiques de journée congé, des enfants malades ou des choses comme ça.
On rentre toutes les données, en fait, dans cette base de données
qu'on va voir, qu'on va décrire, et potentiellement, en fait, tous les utilisateurs
pourraient avoir une espèce de chat bot pour poser les questions.
Voilà, j'ai un enfant malade, qu'est-ce que je pourrais avoir ?
Pim bam ! Là, on sort la politique spécifique de l'entreprise grâce à un RAG.
C'est des choses qui peuvent être facilement, pas si facile, mais en tout cas,
qui peuvent être mis en place et qui peuvent amener beaucoup de valeur pour les employés, clairement.
C'est ça.
Et du coup, en appartez, le RAG, on dit souvent chat bot,
mais le chat bot, ça n'applique pas uniquement un site web ou une interface web.
Ça peut être aussi dans un team, dans tous ces trucs de chats qu'on a en interne, etc.
Voilà, on range le système et après, les gens posent la question
comme si c'était une personne de l'entreprise.
Toutes les outils de messagerie interne, bien sûr.
Carrément.
Carrément.
À la limite, ce qu'on peut faire, vu qu'on a présenté un petit peu le RAG,
ce qu'on peut faire, c'est essayer de comprendre le mécanisme de
qu'est-ce qui se passe techniquement, quels sont les étapes
du requête quand on va prendre l'exemple d'un chat bot.
Le chat bot, il a besoin de répondre à des questions.
Qu'est-ce qui se passe ?
Et à la limite, on a un petit schéma qui vient, en fait,
quand même assez bien expliquer les choses.
À la limite, ce que je te propose, on prend vraiment toutes les étapes,
une par une.
Et comme ça, on comprend, en fait, étape par étape,
et surtout, quel est l'impact technologique pour nous ?
Qu'est-ce qu'on va être obligé de mettre en place ?
Ouais, c'est ça.
Donc, après, on va détailler le long de l'épisode.
Mais là, pour résumer simplement, on a une base de documents.
Ça peut être des PDF, ça peut être un site web,
ça peut être des pages web, ça peut être différentes choses.
Ces documents, on va les passer, on va les chunker.
On va les chunker, ça veut dire qu'on va les découper un morceau.
Tac, tac, tac, parce que, évidemment, les documents sont beaucoup trop gros.
Et pour avoir plus de précision par rapport au vecteur,
en fait, on va les réduire et on va passer
avec tous ces morceaux de texte dans un modèle d'embedding.
Donc, il y en a plein.
Lui, il va s'occuper de transformer ce texte en vecteur.
Donc, c'est des suites de numéros, voilà.
C'est des trucs invisibles.
Et ça, on va le mettre dans une base de données vectorielles.
Voilà.
Tous ces morceaux.
Et ensuite, ça nous permettra, en fait, de rechercher dans cette base de données vectorielles.
Et ce qui est des bases de données vectorielles,
sont assez efficaces pour retrouver des mots, tout ça, etc.
Des, comment dire, des similarités entre les textes, etc.
C'est ce qu'on appelle, en fait, la...
C'est toute la recherche qu'on appelle sémantique, c'est-à-dire pédale de vélo.
On va utiliser le mot braquet, le mot vélo, le mot sel de vélo, le mot guidon.
Tout ça, ça fait partie du champ sémantique.
Et donc, potentiellement, quand je dis des chaussettes thermiques
ou des bottillons ou des chaussures néoprènes,
potentiellement, en fait, le modèle, en fait,
va être en capacité de faire le rapprochement entre tous ces mots-là.
Alors que si on utilise un moteur de recherche classique sur des mots clés,
si le mot clé n'apparaît pas, on ne va pas pouvoir le faire sortir.
Que, avec, justement, cette recherche sémantique,
et on va pouvoir faire des agrégations.
Donc, c'est bien plus intelligent.
Ok.
C'est ça. On y reviendra juste après,
spiquer un peu plus le vecteur comment ça fonctionne.
Mais, ouais, c'est ça.
Et ensuite, une fois, alors, ça, c'est tout ce qu'on fait en amont.
On va préparer la base de données, tout ça.
C'est vraiment un travail qu'on fait au début.
Et ensuite, on va brancher ça sur un LLM.
Et donc, une personne va poser une question dans un chat.
Oui, je cherche une route de vélo.
On va aller chercher dans la base vectorielle tout ce qui est un rapport avec la route de vélo.
Par contre, attends, Patrick,
c'est... Non, non, non, non.
Mais, je veux juste être super clair là-dessus pour être sûr que j'ai bien compris.
C'est la requête, en fait.
Elle va passer, en fait, dans le modèle de n-bending.
Ça veut dire que la question que la personne a posée,
elle va être transformée aussi en vecteur.
Et après, ça va dans, justement,
faire la recherche pour aller chercher, en fait,
tous les éléments qui sont propres à cette requête-là.
Mais la requête, elle est transformée en embedding.
Ce qui fait que toutes les requêtes, en fait,
ne sont qu'une agglomération de vecteurs, en fait.
C'est ça ?
Oui, c'est ça.
C'est ça.
Donc, on fait ça.
Une fois qu'on a donc retrouvé les éléments qui correspondent le texte qui va...
Donc, il va nous envoyer du vecteur, du texte.
On va tout simplement construire une requête
au LLM, donc n'importe quelle.
Ça peut être OpenAI, gpt, n'importe quoi.
gpt4 ou autre.
On va construire le modèle en lui posant...
Donc, on va faire un prompt avec différentes choses, en lui disant,
voici le contexte, répond par rapport à ce contexte,
à la question de l'utilisateur.
Et voilà.
Et donc, en général, il prend tout ce qu'il a dans le prompt, avec le contexte, etc.
Et il génère une réponse, il la renvoie.
Mais généralement, c'est assez satisfaisant.
Et si vous avez bien fait votre travail,
la réponse devrait plaire et être en adéquation avec la question.
OK. Mais quand tu dis, il faut bien faire le travail.
Ouais.
Clairement, là, ce qu'on fait, on vient juste de câbler différentes techno.
Donc, en quoi le câblage va changer quelque chose ?
Alors, moi, je pensais...
Au début, je pensais que c'était plutôt simple.
Parce que finalement, c'est vrai que sur le papier comme ça, tu dis,
bon, OK, chunker du texte.
En bedding model, je mets dans la vector, je vais chercher le truc.
Ouais, c'est pas compliqué.
C'est les trucs qu'on fait, chercher dans une base de données, afficher des textes.
Et bien, en fait, non, c'est beaucoup plus compliqué que ça.
C'est assez technique, finalement.
Et la première partie, on va parler d'une première partie, tout ce qui est chunk,
tout ça, c'est quasiment la partie la plus importante, en fait, du rag.
Le chunkage.
Ouais, de cette partie-là, va dépendre les résultats de recherche dans la base vectorielle.
Et ensuite, si le contenu de recherche correspond vraiment à la requête,
c'est là où la réponse du LLM va être encore plus en adéquation.
Donc, la partie du chunk, tout ce qui est découpage du document,
est vraiment primordiale dans le rag, en fait.
Vraiment, vraiment.
OK.
Et est-ce qu'on pourrait prendre, par exemple,
l'exemple, on doit prendre un livre, on doit l'intégrer, en fait,
dans notre base de données vectorielle.
Est-ce qu'on va prendre des chapitres,
est-ce qu'on va prendre des pages, est-ce qu'on va prendre des paragraphs,
est-ce qu'on va prendre petit 1, petit 2, petit 3,
est-ce qu'à l'intérieur de ces paragraphs, on va découper en petite phrase,
tout ça, en fait, va avoir vachement d'importance, quoi.
C'est ça ?
Ouais, ça a beaucoup d'importance.
Et il faut savoir qu'en fait, il n'y a pas de règles universelles.
En fait, à chaque fois, il faut s'adapter au contenu.
OK.
Le truc, c'est de ne pas perdre, justement,
le sens des phrases, des textes, en fait.
En fait, en fonction de comment tu vas le découper,
tu perds le sens et donc le modèle d'embaiding va faire l'embaiding,
mais il va perdre vraiment le sens de tes data.
Donc, en fait, c'est vraiment une adaptation à chaque fois,
aux fichiers, aux documents, etc.
Donc, il n'y a pas de règles universelles.
En tout cas, pour l'instant, moi, j'en ai testé plein et voilà.
À chaque fois, il faut s'adapter au contenu.
Et on ne peut pas dire à chaque fois, je vais découper en 200 tokens, etc.
Et puis, c'est réglé.
Non, en fait, à chaque fois, tu vas changer.
OK.
Il y a énormément de techniques, en fait.
Et il n'y a pas...
En tout cas, pour l'instant, on n'a pas trouvé la technique
qui marche partout, tout le temps, dans tous les contextes, quoi.
Non.
Non, en tout cas, après, je ne suis pas un expert, expert-expert,
mais j'ai pas mal fait de recherche, etc.
J'ai pas mal fait de tests aussi et c'est vrai que...
Non, il n'y a pas...
Pour l'instant, il n'y a pas de technique universelle.
Moi, il y a une technique dernièrement...
Alors, j'avance un peu, mais une technique que j'aime bien,
c'est de découper un document en plusieurs morceaux,
mais de garder le document par an.
Et donc, tu vas chercher dans la base vectorielle
les éléments enfants.
Et après, tu récupères par rapport à ces éléments enfants
qui correspondent à la requête.
Tu vais récupérer l'élément par an.
Voilà.
Et donc, je retrouve le document.
Alors ça, ça marche bien.
Par exemple, j'ai fait des tests sur des fiches de formation.
Ça marche bien parce que les fiches de formation
ne sont pas énormes au niveau du contenu.
Donc, ça colle, tu vois.
Donc, je peux quand même mettre dans le contenu
les fiches de formation qui ne sont pas...
Il n'y a pas énormément de textes.
Mais par contre, quand on fait la recherche dans la base vectorielle,
ça match plus facilement, tu vois.
Mais voilà, il y a énormément, énormément de techniques.
Et si tu vas sur le web chercher des techniques de Cheung et tout ça,
tu vas tourner des tonnes d'articles.
Et là, c'est le Rhabith Hall dans Aliceau Merveille,
Aliceau Merveille où là, tu tombes dans la tannière.
Et c'est infini, quoi.
Ok.
Et donc, ce système-là, c'est ce que tu appelles le chunkage,
les chunkers.
On vient de découper, en fait, le texte.
Et pour ça, en fait, on a différents outils
qui nous permettent, en fait, de choisir la longueur,
le pli, en fait, c'est-à-dire entre ton premier paragraph
et ton deuxième paragraph.
Est-ce que tu vas faire une rupture nette
ou tu vas avoir un espèce de tuillage entre les paragraphes ?
Et là, ce qu'on voit à l'écran, c'est justement
où tu viens rentrer tous ces paramètres-là
pour avoir plus ou moins de granulométrie, quoi.
C'est ça ?
Ouais, ouais.
Alors, le chunk, c'est basique où tu vas régler la longueur de caractère,
où tu peux supplieter par paragraphe des choses comme ça.
Et comme tu dis, il y a l'overlap qui permet, en fait,
de garder un petit morceau du paragraphe précédent
et un petit morceau du paragraph suivant
pour ne pas perdre le contexte, en fait, des textes entre eux.
Donc ça, c'est vraiment le truc classique chunk, basique,
bête et méchant, par paragraph, etc.
Tu peux, ou pas, retour à la ligne,
ou tu peux prendre un titre et un paragraph.
Voilà, vraiment, tu peux, voilà, tu miques ton truc comme tu veux,
mais c'est vraiment le truc basique.
Là, il n'y a pas de réflexion particulière,
c'est juste, on découpe un morceau, quoi, pour le coup.
T'as ça ?
T'as le...
Voilà, tu as le texte spliter.
Alors là, c'est un truc pour tester différentes techniques, en fait,
voilà, en fonction de la taille, etc.
T'as le sémantique aussi, qui est capable de détecter, en fait,
un peu plus de sémantique.
Et ensuite, il y a des techniques aussi,
où tu peux utiliser un modèle.
Tu vas lui demander, tu vas lui envoyer le texte,
et tu lui dis, bah, découpe-moi un morceau chunk logique, ce texte, par exemple.
Ok, donc en fait, tu vas...
On utilise un peu.
Et ce que là, on n'est pas rentrés dans le mode
un peu inception, où en fait, tu vas utiliser un modèle
pour chunker des informations que tu vas envoyer à un autre modèle.
C'est ça ?
Ouais, mais c'est ça, mais c'est hyper important, en fait,
que ce soit vraiment chunker d'une façon logique.
Tu peux avoir aussi la technique.
Il y a une technique aussi, tu vas lui faire...
Par exemple, c'est un contenu de...
Alors, j'ai déjà eu du contenu de mauvaise qualité.
Ça arrive sur des sites un peu anciens, voilà.
Bah, tu lui fais réécrire le contenu.
Tu veux dire, fais-moi un résume-moi ce texte,
ou clean le mois.
On ne comprend pas ce que l'auteur voulait dire.
Est-ce que tu peux expliquer en français ?
Voilà, optimise-le pour la...
Voilà, pour toute la recherche vectoriale.
Donc, voilà, tu peux utiliser des modèles.
Il y a des modèles qui existent que tu peux faire tourner en local
quand tu utilises du piton,
qui sont capables de faire en local.
Ou sinon, tu peux utiliser des modèles en...
Voilà, les tokens, ça ne coûte pas une fortune non plus
quand tu utilises des API OpenAI, tout ça, tu peux le faire.
Donc, il y a vraiment énormément de techniques de chunk.
Il y a aussi des services qui te permettent de chunker les PDFs, par exemple.
Les PDFs, c'est assez complexe parce que tu sais,
il y a beaucoup d'éléments de décoration.
Tu vois, les numéros de pages, etc.
Donc, ça, c'est très compliqué à chunker.
Donc, il y a aussi des services qui te permettent de découper les PDFs
d'une façon assez propre, qui vont le nettoyer, etc.
C'est très, très, très vaste.
Mais c'est parti là, j'ai pris mordial.
Ouais.
Et pour le coup, toi, tu penses qu'il faut vraiment passer un peu de temps là-dessus
parce que c'est ce qui va amener la plus grosse valeur ajoutée
à tout le système ?
C'est vraiment la qualité de tes chunks, quoi.
La qualité du traitement du contenu.
C'est ce qui va faire découler, en fait, la qualité de ton ag.
En fait, si tu as une bonne qualité de contenu, un bon découpage, etc.
Et une bonne insertion de la DB, tu auras des bons résultats au niveau de la DB.
Tu auras du bon contexte.
Et tu veux, voilà.
Et le LM, quand tu les filles du contexte correct, qui est OK,
il est capable de formuler des bonnes réponses.
D'accord. OK.
Donc, premier point clé, la qualité du chunk.
Est-ce qu'on pourrait dire que le deuxième point clé aussi,
ça va être ton modèle d'embedding, c'est-à-dire le modèle qui va te permettre
de prendre de la donnée et de le transformer en vecteur ?
Ouais, ça, c'est très important.
C'est le tasque numéro 2.
Puisque le modèle d'embedding, en fait, il va comprendre le sens de la phrase,
tout ça, donc il va découper en fonction de ce qui comprend, etc.
Donc, le modèle d'embedding est super important.
Alors, on n'a pas parlé des dimensions encore.
Il y a beaucoup de dimensions.
Alors, parlons de suite de ce que c'est, les vecteurs,
comme ça, on va mieux comprendre.
Alors, les vecteurs, en fait, c'est des...
Il faut le voir comme une grille avec XY, en fait, vraiment horizontal, vertical.
Et pour chaque mot, en fait, il va mettre un point sur cette grille.
Non, par exemple, une chaussure, tu as un point.
Et je ne sais pas, un pied, imaginons, un pied, il va mettre un point.
Et forcément, le point pied-chaussure, ça n'aura peut-être pas trop éloigné,
puisque ça a un lien entre les deux.
Par contre, si tu mets un arrosoir, l'arrosoir, le point, se voit beaucoup plus loin.
Et en fait, les vecteurs, c'est ça, en fait.
C'est des positions dans une grille.
Et s'ils sont plus ou moins loin, en fait, ça veut dire qu'ils sont liés ou ils ne sont pas liés, etc.
Voilà, en gros, ce que c'est le vecteur.
Donc, c'est une représentation comme ça, vectorielle, des éléments dans une grille.
Et qui... Voilà.
Donc, c'est important parce que le modèle d'embedding, il va comprendre les mots, etc.
C'est là où il va bien les placer ou mal les placer.
Et ensuite, il y a un nombre de dimensions.
Donc, il y a des modèles d'embedding qui font peu de dimensions.
C'est 256 dimensions, je crois.
Et ensuite, on monte sur les modèles Open IE, par exemple, le texte d'embedding 3 small par défaut.
Il fait 1536 dimensions.
Donc, là, c'est déjà beaucoup plus.
Donc, plus de points vectoriels pour des mots.
Donc, plus de précision.
Et est-ce qu'après, le fait d'avoir plus de dimensions,
est-ce que c'est plus précis ou pas spécialement ?
Normalement, c'est plus précis.
Par contre, ça prend beaucoup plus de place dans la base de nez.
Donc, on en prendra après, mais plus... Voilà.
Et ça consomme plus de ressources aussi pour faire une recherche.
Mais voilà, c'est...
Donc, il y avait... Voilà.
C'est... Après, c'est un coup.
Mais par exemple, l'Open IE, le moins de vectors, c'est 1536.
Et après, le...
Le embedding 3 large, je crois, c'est 2000...
Je ne sais plus comment il y en a, mais ça n'a beaucoup plus.
On peut peut-être montrer, en fait,
le leadboard qu'on a sur Huggingface.
Pour le coup, si on ne vous le savait pas ce que c'est Huggingface,
on vous rappelle d'écouter l'épisode précédent où on parle d'IA.
Et justement, c'est un acteur majeur dans tout l'écosystème de machine learning
et d'IA, de modèle, de dataset et de tout ça.
Pour le coup, ils ont une page dédiée, en fait, sur...
Où ils présentent, en fait, tous les modèles d'embedding
et avec plus ou moins une classification, même si je pense que c'est un peu difficile
de se retrouver au milieu de tous ces paramètres-là
et de savoir quel est le meilleur pour moi.
Alors, ouais, tu vois, tu fais bien de monter le tableau
parce que j'ai oublié un truc dans les modèles d'embedding
parce que nous, on parle français.
Enfin, en tout cas, notre contenu est souvent français.
Et évidemment, c'est très important de prendre un modèle d'embedding multilinguel.
Ceci, donc, ça range pas bien.
Et oui, carrément.
Et est-ce que celui de Mistral est optimisé français ou pas du tout ?
Pas sûr, tu vois, parce que généralement, c'est marqué dans le nom de la mythérie.
Donc là, c'est pas marqué, donc je pense que non.
OK. Et texte multilinguel.
Après, on va voir le détail.
Mais, ouais. OK.
Faut regarder dans les détails.
Mais non, non, après, ils sont plus ou moins bons.
La plupart, après, ça déteste automatiquement tout ça.
Mais voilà, après, c'est intéressant ce tableau parce que tu as l'utilisation de mémoire, tout ça.
Nombre de paramètres et la dimension surtout qui est super importante.
Donc tu vois, on monte à 4000, 8000, 8000 diman...
Enfin, c'est énorme après, c'est comment ça faire des trucs assez énormes.
Très, très gros, très, très gros.
Et pour le coup, ça, c'est un petit peu la même chose sur tous les modèles.
On va retrouver des modèles open source, on va retrouver des modèles privés,
des modèles qui sont accessibles que via leur cloud, via leur propre instance,
ou des modèles qu'on peut installer sur des machines chez les gros opérateurs
ou chez notre bar métal ou notre GPU de Maboul.
OK.
Ouais, après, honnêtement, les modèles open AI sont pas très coûteux, honnêtement.
Tu peux embaider pas mal de textes de tokens et tout ça.
Ça coûte pas cher.
Non, ça coûte pas cher.
Et attention, parce qu'en local, ça peut être assez consommateur de ressources.
Suivance que tu veux.
Après, j'ai déjà fait planter mon Mac une fois grâce à un modèle d'envédic.
Ouais, mais t'as une charrette.
Mais il a...
Non, c'est la première fois, j'avais jamais eu ça.
Il s'est complètement arrêté le truc.
Après, c'est peut-être pas débile aussi,
si on a, pour le coup, si on a une bonne mécanne, de générer, en fait,
je pense, par exemple, une base de données ou des produits d'articles commerces.
On veut donner, en fait, une représentation vectorielle de tout notre catalogue.
Potentiellement, on vient générer ces embeddings en local.
Puis après, on les stocke sur l'ADB.
Mais cette création, en fait, on l'a fait une seule fois.
Donc, voilà, ce par rapport au coût, par rapport à la rapidité d'exécution,
ça peut peut-être amener une valeur pour faire en local.
Sous couvert que le modèle puisse tourner en local.
Ça, c'est un autre sujet.
Mais...
Et après, on...
Des fois, franchement, le coût est vraiment minimum.
Et des fois, ça ne vaut pas le coup de s'embêter.
OK.
Ça marche.
Ça marche.
OK.
Je ne suis pas représentant au Penaï, mais...
Je n'ai pas de...
T'es payé par Sam.
T'es payé par Sam.
Voilà.
Sam, il a voulu sponsoriser le podcast, je crois.
Non, un truc comme ça, non ?
Ouais, il nous a appelé.
Il nous a refusé.
Non, je veux dire qu'à un moment donné, des fois, vraiment, ce n'est pas un coût énorme
et parfois économisé.
Alors, si tu es un serveur, tu as un peu d'argent, tout ça, tu es une société, c'est différent.
Tu peux éventuellement acheter un serveur, tout ça.
Encore qu'en ce moment, c'est que tu es difficile de trouver des GPU.
Mais...
Enfin, faire tourner sur son Mac aussi, c'est quand même un coût.
Parce que ton Mac, tu le fais, tu le fatigues un peu plus et tout ça.
Peut-être qu'il durera moins vite, enfin moins longtemps en tout cas.
Donc, est-ce que ça vaut le coup d'économiser ?
Quelques poignées de dollars et c'est fait en 30 minutes, alors que sur ta bedding,
tu en as pour 4 heures ou 5 heures ou 6 heures.
La qualité est vraiment bonne sur le modèle d'un bedding.
Après, il y en a d'autres, il y a Coheir, je ne sais pas comment on dit Coheir.
Il y a plein de modèles qui sont super excellent.
Yes.
Ok, donc maintenant qu'on a chunké le document, on les a envoyés à notre modèle.
Là, on a récupéré le vecteur, donc cette espèce de fichier avec plein de chiffres à l'intérieur.
Sauf que maintenant, il va falloir qu'on stock ces données-là dans une base de données qui a la capacité de stocker ce type de fichier.
Donc, on a les strings, les numbers, des JSONs.
Et là, en fait, on a du vecteur.
Du vecteur, oui, c'est ça.
Et donc, il y a des...
Oui, c'est ça.
Capable de stocker du vecteur, en fait, c'est une base de données qui est capable de stocker du vecteur,
de représentations vectorielles, et surtout de faire de la recherche.
Ok, après, la stocker est surtout de faire des appels.
C'est ça qui est assez coûteux en ressources, en fait, c'est la recherche.
Donc, c'est la recherche par similarité.
Comparer les points et comparer ceux qui sont les plus proches, tout ça.
Qui va donner une sorte de distance entre chaque point.
Et ok.
Prêt.
Ok.
Oui, vas-y.
Et donc, il y a plusieurs types de bases de données qui existent.
Il y a des bases de données qui sont dédiées et qui ne font que du vecteuriel.
Mais il y a aussi des bases de données qui ont évolué,
ou sur laquelle on peut mettre des extensions.
Je pense, par exemple, à Postgre, qui a son extension qui s'appelle PG Search,
ou non, PG Vector.
PG Vector.
Et donc, ce qui nous permet de stocker et de faire des calculs sur l'ADB
directement avec l'instance Postgre.
Peut-être que, par contre, on va peut-être avoir des limitations,
si on veut les comparer à des bases de données qui, elles, sont totalement dédiées
et ne font que ça.
Oui, maintenant, t'acquaisiment toutes les bases de données qui prennent en charge le vecteuriel.
Comme tu dis, Postgre, Redis.
Le type de fichier avec t'envoi.
Tu en as sur Cloudflare, maintenant aussi,
il y a des bases de données vectorielles.
Enfin, il y a vraiment...
Et des bases de données vectorielles, il y en a des tonnes.
Mais alors, des tonnes.
C'est un difficile de se retrouver, tellement il y en a.
Il y en a beaucoup d'open source.
Donc, ça, c'est bien.
Mais des vrais open source que tu prends, que tu cèles au statoïm.
Et puis, voilà, ChromaDB, tout ça, c'est du CELF-ST, QDRAND, je crois.
Pincon, ce n'est pas de l'open source, c'est payant.
Voilà, il y a un choix incroyable.
Alors après, il y a des différences.
Il y a...
Alors après, c'est assez technique pour avoir les différences.
Tout ça, c'est pour ça qu'il y a des tableaux de comparaison.
Mais après, ça dépend le besoin, tout ça.
Mais déjà, voilà, PG Vector, tout ça fait déjà le taf de base.
Tu as déjà des résultats concluants.
Oui.
Mysearch aussi, on parlait encore dans le dernier épisode,
qui peut être intéressant sur des recherches.
Quand tu n'as pas une grosse base de données, de documents, tout ça,
ça peut être des résultats assez pertinents, d'autant que maintenant,
ils prennent en charge leur charge vectorielle, tout ça.
Et on peut régler le curseur, plus ou moins du texte ou du lecteur.
Donc, c'est mon petit...
C'est mon petit, tout le texte.
Hybrid.
Ça, hybrid et rapidité surtout, elle est super rapide.
Donc, ça peut être une solution intéressante.
En tout cas, moi, je l'ai déjà inclus dans des tests et c'est assez concluant.
OK.
Et des recherches.
OK, top.
De toute façon, je pense que sur W Slash, on est pro Mysearch.
Là-dessus, on est d'accord.
C'est pour ça que vous nous offrez une base de données d'un pas longtemps.
Et pour le coup,
on en a en parlé et là, tu nous mets un article,
justement, où la base de données spécifique,
là, en fait, il y a beaucoup de documentation sur les rags,
pardon, et sur justement comment utiliser toutes ces bases de données,
comment optimiser tout ce process-là.
Mais derrière, sur la base de données purement,
on vient enregistrer, on vient faire une recherche.
C'est assez basique.
Il n'y a pas une sémantique à réapprendre,
comme je pense au SQL, quand on veut faire du SQL.
Voilà, il faut apprendre quand même à construire ta query.
Sauf que maintenant, souvent, en fait, il y a des ORM.
En fait, est-ce que là, sur ces bases de données, on va dire, vectorielles,
est-ce qu'on va avoir des API REST
où on va lui donner un élément,
une query ou un vector.
On va lui donner un vector et il va te renvoyer tous les vecteurs qui sont similaires.
Comment ça se passe ?
C'est quoi le...
Différent.
Elles marchent toutes un peu différemment,
mais après, la plupart du temps, elles ont des librairies disponibles,
que ce soit en Python, en JS ou même parfois en PHP.
Tu as des librairies qui permettent de communiquer avec ta base de données.
Donc, la plupart du temps, tous les écosystèmes sont là pour se brancher facilement.
Tu vas filer des vecteurs ou une query.
Celle que tu as sous les yeux, la Viviat, elle est pas mal.
D'ailleurs, c'est des mecs du payback qui font ça.
Elle est intéressante parce qu'elle intègre pas mal de choses.
Elle est capable de...
En fait, il y a des choses qui sont...
Elle va embêter automatiquement, c'est-à-dire que tu ne vas pas le faire toi-même.
Tu vas envoyer le texte, un peu comme militiaire, pour le coup.
Ok.
Tu vas lui envoyer les chunks et elle-même embêter et stocker.
Tu n'auras pas besoin de faire de passage par l'embêtting avant.
Tu lui envoies directement le texte, elle est capable de l'embêter.
Et pareil, pour les requêtes, tu mets juste une query en texte
et elle va le transformer et faire la recherche.
Donc, c'est déjà tout compris, intégrer.
Donc, en fait, ça vient faciliter le boulot de ma boule du dev
parce qu'il a uniquement à implémenter cette base de données.
Et toute la logique de chunker les documents, de créer l'embêtting, de le stocker,
tout ça, c'est fait automatiquement par l'ADB.
Donc, c'est bien au-delà d'une simple base de données.
C'est quasiment un écosystème, un service clé en main, on pourrait dire.
Oui, oui. C'est là, les parents, pas mal.
Et puis, t'apparaît, t'as Libreach Search.
Alors beaucoup, on recherche Libreach, où tu vas régler
au tel curseur entre un peu plus de texte ou un peu plus de vecteurs.
Donc, là, il le propose de plus en plus.
Parce que, des fois, suivant les documents,
c'est peut-être des fois un peu plus pertinent sur ce que tu es un peu plus de texte.
Voilà, ça dépend en fait, ce que tu recherches.
Et c'est...
Mais voilà, il n'y a pas de base de données mieux qu'une autre ou moins bien.
C'est, voilà, chacune à ses avantages, ses inconvénients.
Et après, voilà, c'est...
Faut tester.
Et une fois de plus, trop de choix.
Et le choix est toujours difficile à faire, quoi.
C'est...
Faut bien comprendre, mais comme toutes les techno,
comme tous les langages, comme tous les frameworks, les librairies,
le choix de...
Mais là, en plus, c'est hyper primarial.
Enfin, c'est hyper important dans la mesure où c'est la base de données.
Donc, c'est le coeur central du business souvent, c'est ça.
Donc, il ne faut pas se tromper, quoi.
Il ne faut pas trop se tromper.
D'où l'intérêt de faire des tests en amont, quoi.
Ouais, la plupart du temps, c'est assez simple.
Tu fais un index, en fait, tu crées un index.
Donc, il va correspondre à tes données.
Et puis, tu vas rentrer tes données dedans.
Juste un truc, généralement, quand tu crées un index avec une dimension,
par exemple, tu crées un index en 512 dimensions.
Donc, après, tu utilises un modèle qui va te générer des 512 dimensions
pour stocker dedans.
Il faut que ça corresponde, tu vois, forcément.
Et là, du coup, tu ne peux plus, par exemple, changer de modèle dans le building
pour passer à 1 500 ou tout comme ça, parce que ça ne va pas correspondre.
Donc, ça ne marche pas.
Ça ne va pas matcher.
Donc, tu vois, il y a des petits trucs comme ça à savoir.
Mais au début, tu joues...
Le choix de ton modèle, en fait, il est crucial,
parce que tu vas tout baser là-dessus.
Et derrière, tu vas être obligé de dérouler toute la suite.
Ou sinon, tu es obligé de tout recommencer.
Tout réindexer.
Tout réindexer, de tout stocker différemment.
Voilà, si tu as beaucoup de données, ça peut coûter vite cher
si tu commences à changer tout le temps.
En généralement, tu sais pas...
Moi, je te dis, généralement, je parle sur le modèle...
Voilà, le truc de OpenAI, et je ne me fais pas chier.
Oui, bien sûr.
Vite fait, pour les recherches par similarité,
en fait, il y a deux...
Enfin, il y a les deux principales, c'est Euclidean et Cocinus.
Ça, on est dans les maths.
C'est pas mon point fort, mais...
Donc, Euclidean, c'est la mesure physique entre deux points,
le vectoriel.
Voilà.
Et la similarité Cocinus,
donc, généralement, c'est celle qu'il peut utiliser.
On est souvent réglé en Cozine.
C'est l'angle entre deux vecteurs.
Donc, si l'angle est proche de zéro, c'est similaire.
Et si il est proche de 90 degrés, c'est différent.
Donc, généralement, souvent, les bases de données,
tout ça, sont réglées en Cozine.
C'est la plus utilité.
OK.
Voilà.
Parfait.
C'est ultra...
Alors, là, pour le coup,
est-ce que nous, en tant que simple dev,
et d'utilisateur,
est-ce qu'on a besoin de comprendre ça ou pas tellement ?
Bah si, il faut comprendre quand même quand ça fonctionne,
même si on est toujours sur du Cocinus.
Mais après, il y a aussi des systèmes d'index différents.
Alors, c'est ça aussi, les bases de données vectorielles.
Il y a des systèmes d'indexation qui sont un petit peu différents,
avec des acronymes, tout ça.
Alors, là, ça devient hyper complexe.
Je ne suis pas encore qu'y allé là-dessus.
Là, c'est des pure maths, quoi.
Ouais, c'est une question de performance aussi,
parce que c'est quand même assez gourmand.
Les bases de données qui...
Alors, déjà, ça stocke beaucoup de vecteurs.
Donc, c'est beaucoup de poids,
enfin, beaucoup de gigas,
suivant ce que tu vas stocke,
et suivant le nombre de dimensions.
Et puis, derrière, quand tu recherches la base de données,
et recherches dedans, c'est consommateur de ressources.
Ça mouline.
Ouais, ça mouline.
Donc, voilà.
C'est important quand même de savoir sur quoi tu te règles,
tout ça, pour avoir un hardware qui est correspondant, tout ça.
Bien sûr.
OK.
Donc, ça, c'était pour la base de données.
Est-ce que, maintenant, on n'a pas un espèce...
Alors, on l'a déjà vu avec des services qui font base de données,
mais qui font aussi tout l'écosystème.
Néanmoins, moi, j'ai déjà implémenté quelque chose.
Est-ce qu'il n'y a pas, en fait, des espèces de frameworks,
ou un processus des librairies qui essaie de faciliter
en fait cette mise en place de tout cet écosystème,
de tout ce qu'on a vu d'un RAG, par rapport...
Si je fais du PHP, sur du GGS, du Python,
est-ce qu'il n'y a pas des frameworks qui existent
pour justement cette mise en place de RAG ?
Ouais, il y a des frameworks et ça, c'est cool.
Alors, généralement, c'est beaucoup de Python.
C'est énormément de Python.
Alors, si tu fais du Python,
tu es le roi du monde pour tout ce qui est RAG, tout ça,
parce que là, tu as une tonne de librairies disponibles
de frameworks et tout ce que tu veux.
Mais nous, on est des développeurs web.
On aime le GGS, on aime le TS et on aime le PHP.
Donc, il y a pas un peu plus moins le PHP.
Ouais, on est d'accord.
Mais il existe du...
Donc, il y a des frameworks, ouais.
Et il existe le LLM FANT,
qui est un framework dédié à l'IA en PHP.
C'est ça ?
Ouais, là, c'est un framework qui est plutôt...
Alors, il n'est pas complet,
c'est pas un truc pour faire.
Alors, ce qu'on parle souvent de pipeline pour les RAG,
tout ça, c'est-à-dire une chaîne de...
Voilà, une chaîne de...
Comment dire ?
Un peu à peu ça.
Une chaîne de séquences,
où c'est séquencé en étape, voilà.
Aller chercher dans un bâtonner, récupérer des trucs,
faire le prompt, envoyer, récupérer la réponse, etc.
Donc, on part souvent en pipeline.
Donc, après, là, on va parler de framework.
Donc, celui en PHP, il permet de faire pas mal de choses.
Mais c'est pas aussi complet
qu'un framework vraiment, où on peut faire de pipeline,
tout ça, mais on peut faire déjà des choses.
Donc, si vous êtes plutôt PHP, c'est plutôt intéressant.
Et là, je vois sur le repo qu'il y a un tutoriel complet
de comment faire un RAG avec SINFO, OpenIA, OpenIA.
Et c'est un tutoriel en français, en plus.
Donc, pour les amateurs de PHP qui veulent tester ça,
il y a peut-être moyen de faire un truc sympa.
Cool !
Oui, parce que de façon, c'est du script assez simple.
Tu prends la requête, tu vas chercher dans un bâtonner,
tu récupères le résultat, tu fais ton prompt, t'envoies l'LM,
tu récupères la réponse et tu la renvoies.
Voilà, c'est juste un script assez basique.
Donc, tu peux le faire.
Yes.
Cool.
Et autre pipeline ou séquenceur,
ou en tout cas, je ne sais pas comment on pourrait appeler ça.
Alors, pour le coup, tout le monde connaît quasiment Versel.
Il a sorti un AI tout le kit qui, pour le coup, était en type script.
Par contre, est-ce qu'on va retrouver les mêmes outils qu'on a vus tout à l'heure,
ou là, c'est plutôt vraiment plus séquencé,
ou est-ce qu'on va pouvoir faire la même chose,
ou c'est justement beaucoup plus généraliste,
il va falloir creuser étape par étape.
Non, alors l'outil, il y a bien le SDK Versel,
parce qu'il unifie l'appel à différents modèles, différents providers.
Pour ça, il est vraiment cool, tout le kit.
En fait, c'est à peu près toujours la même chose.
Tu as des fonctions et tu vas appeler des modèles,
tu vas appeler Anthropique, ou tu vas appeler OpenAI, ou n'importe quoi.
Et puis, tu as juste à changer le nom du modèle.
Et tu utilises toujours les mêmes fonctions.
Donc, c'est vraiment très pratique à savoir que d'ailleurs,
on en parlera juste après,
mais Mastra, une partie du code de Mastra est basée sur le AI SDK de Versel.
Donc, c'est une librairie qui est bien foutue,
qui donne accès facilement avec du code très simple, ou LLM, tout ça.
Donc, pareil, comme le système PHP,
ça te permet de faire avec très peu de code,
tu peux faire un rag ou n'importe quoi, ou un agent, ou n'importe quoi.
Et pour le coup, le SDK est facile à utiliser,
et on peut switcher d'un modèle à l'autre, facile.
Et pour ceux qui sont un petit peu plus vénères,
on va dire, et qui veulent tout faire à la main,
il existe un framework qui est dédié à ça
pour justement créer tout ce pipeline, comme tu disais.
Ça s'appelle Langchain.
Et là, pour le coup, il y a deux versions,
il y a la version Python et la version JavaScript.
C'est ça, il y a Langchain, c'est un des plus anciens avec Lama Index.
Donc là, on est vraiment sur des toolkits
qui permettent de faire vraiment des chaînes,
d'événements, et c'est plutôt bien fait.
La doc est super pourrie, mais il faut le dire.
Voilà, la doc n'est vraiment pas terrible.
Et il y a très peu de ressources sur le web.
Quand tu cherches vraiment des infos,
c'est pas évident à trouver.
Donc moi, j'ai été jusqu'à aller dans les repo-geetups
pour trouver des exemples et tout,
qui avaient fait des...
Ouais, vraiment difficile à trouver.
Par contre, c'est assez puissant,
parce que c'est capable de gérer pas mal de choses.
Et c'est vraiment bien fait.
Tu peux loguer, etc.
Alors, il y a un truc qui est super intéressant,
c'est que j'ai découvert ça il y a pas très longtemps,
mais à force de faire des rags, tout ça.
C'est à un moment donné,
tu vas faire ton truc,
tu vas faire ta recherche dans ta base de données,
tu vas envoyer au LNM, et tu vas faire la réponse.
Et après, la personne va reposer une autre question,
et à un moment de là,
tu as une sorte d'étable dans ton process,
où tu vas décider,
est-ce que tu refais une requête ou pas,
ou est-ce que tu fais...
Avec ce contexte que tu as déjà,
est-ce que tu es capable de répondre à la question ?
Tu vois ?
Et voilà, ça te permet de faire des trucs comme ça,
où tu définis en fait,
est-ce que je refais un appel ou pas ?
Est-ce que voilà...
Et tu as un concept qui est pas mal,
où j'ai vu une conflate là-dessus sur Redis, justement,
où il parlait de cémantique caching,
où justement, en fait, il va mettre en cache,
en fait, cette réponse,
et avant de faire appel au LNM,
ou en tout cas, ou rags, ou n'importe quoi,
en fait, il va déjà regarder
s'il y a une similitude avec ce que j'ai déjà mis en cache,
et en fait, ils vont économiser beaucoup,
beaucoup d'argent et beaucoup de ressources,
et beaucoup de rapidité aussi.
Et donc, c'est un concept de cémantique caching,
qui est super intéressant.
C'est ce que j'ai découvert,
il n'y a pas très longtemps,
à force de creuser, de creuser,
et justement, en long chaine, tout ça,
tu as le permis de faire ça,
parce que tu as un système de gestion de mémoire.
Il va, à un moment donné,
avoir stocké des différentes réponses
pour garder un contexte de conversation, en fait.
Et c'est là où tu vas avec ces frameworks
comme Longchain ou Mastra,
tu vas pouvoir rajouter de la mémoire,
donc ça va être soit mémoire du serveur,
soit tu vas mettre une petite base de données SQL
ou des posts green, n'importe quoi,
et ça va stocker, ça va récupérer.
Et c'est là où, en stockant cette conversation,
à un moment donné,
tu vas gérer ce truc où tu vas dire,
est-ce que je réponds ou ce que je...
Voilà.
Et ça, c'est important parce que je te donne juste un exemple.
Par exemple, tu es quelqu'un qui dit,
oui, alors je suis beaucoup sur les formations,
c'est un étant,
mais imaginons, oui,
je cherche une formation pour être peintre,
et donc le LLM, je vais faire la recherche ou ça,
je vais répondre,
je vais dire, voilà, il y a telle formation,
telle formation, telle formation,
trois formations, par exemple.
Et là, tu vas lui dire,
ah oui, la deuxième m'intéresse.
Mais là, la deuxième m'intéresse,
c'est pas une requête à la base de données, tu vois.
Et c'est là où il faut décider
de répondre par rapport au contexte d'avant,
et donc le LLM,
il va prendre le deuxième,
et répondre à la question,
sans faire de requêtes à la base de données, etc.
Voilà, il faut prendre des décisions,
donc c'est un arbre de décision,
et c'est grâce à ces frameworks que tu arrives à le faire.
Excellent, excellent.
Pour le coup, on est obligé de parler de Mastra,
en tout cas de...
Ouais.
...reux en parler, on va dire.
Parce que...
Je suis totalement fan.
Ouais.
Alors moi, je n'ai pas eu le temps de m'y mettre,
mais il y a un truc qui est sûr,
c'est que le site Internet, il est boite.
Il est trop joli.
Ouais.
Il est super bien fait.
Et tu valides le fait que la doc est aussi super bien fait.
Alors la doc est bien, il y a beaucoup d'exemples.
Et pourtant, c'est récent, c'est hyper restant, Mastra.
Ils ouvrent à peine en beta le cloud,
parce qu'ils ont un système de cloud
qui vont ouvrir où on pourra stocker,
déployer des agents.
Donc c'est cool.
J'ai un email il y a deux jours là pour avoir accès.
C'est vraiment tout neuf,
mais le site, il est bien.
Le système est vraiment bien pensé.
Il y a un système où tu vas brancher des tools dessus,
etc.
Donc c'est vraiment...
Voilà, c'est des workflows.
C'est ça le mot que je cherchais depuis tout à l'heure,
workflows.
Et donc, il y a plein d'exemples et tout.
Donc pour l'instant, ils sont motivés,
ils font des choses bien.
Et je trouve que c'est cool.
Et c'est du type script.
Donc c'est du langage qu'on connaît, qu'on maîtrise.
Donc là, il y a vraiment un framework qui est complet,
qui va permettre de faire des agents super avancés.
Nice.
Et c'est pas celui-là où on disait qu'on ne voyait pas le tarif
et pour l'instant...
Non, il n'y a pas de tarif.
Bon, de toute façon, le framework, lui-même,
il est open source.
Donc on pourra l'utiliser dans tous les cas.
Et c'est la version...
C'est le cloud qui va être payant, le déploiement.
Donc c'est un peu le même modèle que...
Alors c'est les fondateurs de Gazby.
C'est quelques fondateurs de Gazby,
puisque d'autres électriques SQL,
qu'on a parlé dans la dernière news,
c'est un des fondateurs de Gazby aussi.
Ok, en fait, ils ont pris le pognon
et ils repartent sur un autre projet.
Oui, ils sont partis sur d'autres projets.
Donc il y a ceux qui font des électriques SQL.
Et puis là, Mastra.
Ils ont un peu le même modèle.
Tu vois, ils vont faire du cloud payant
et puis le framework ou tout.
Alors j'espère qu'ils vont continuer pas comme...
Pas comme Gazby.
Pas comme Gazby.
Ouais.
Ouais, ça, ça.
Non, le truc est cool.
Et moi, je suis totalement fan.
Et d'ailleurs, je vais remplacer certainement l'angchain par Mastra.
Ok, ça y est, c'est fait.
Ah oui, non mais c'est clair.
Et pour le coup, quand tu auras bouclé
et tu l'auras utilisé sur de la prod avec les clients,
tu nous freins un retour parce que c'est super intéressant.
Cool.
Trop bien.
Trop, trop bien.
Et...
Bah, est-ce qu'on est pas obligé aussi
de mettre en place des sortes d'évaluation,
de savoir si en fait,
on est dans le juste ou on est juste à côté de la plaque ?
Bah c'est ça, il faut évaluer ton modèle,
tout ça, tes réponses en fait.
Donc il y a des outils d'évaluation maintenant qui existent.
Donc c'est un des points forts de...
Alors là, on est sur l'angchain.
Ça s'appelle Langsmith.
Langsmith, c'est un écosystème autour de l'angchain.
Donc c'est là où ils vont gagner de l'argent
et ils vont faire payer.
Pour l'instant, c'est gratuit.
Donc c'est en beta, machin.
Donc c'est cool.
Donc l'angchain est capable de...
Le système, quand tu utilises l'angchain en J.S.
Il est capable, tu vas te brancher à Langsmith
et il va loguer en fait toutes les réponses, etc.
Donc ensuite, tu as un dashboard et tu vas dessus
et tu as les conversations en fait qu'il a eu, etc.
Et ensuite, tu as un système d'évaluation.
Donc tu vas lui...
Voilà, il y a du code des frameworks de tests.
Enfin, il y a un système de tests dans le framework
qui permet de lui lancer des évaluations.
Ça va stocker des évaluations
et après tu vas regarder est-ce que la réponse est correcte,
etc.
Et tu vas ajuster.
Donc l'évaluation est super importante.
Tu as deux évaluations.
Tu as l'évaluation déjà de la recherche de ta base de données.
Déjà, tu vas essayer de voir quand tu tapes des queries
que ça correspond à ce que tu as...
À ce que tu as...
Enfin, la réponse correspond à la query.
Et ensuite, tu as la réponse qui est super importante,
voilà, où tu vas regarder que le LLM répond correctement.
Donc tout ça, c'est hyper important
parce que c'est la qualité de ton RAC qui...
Donc il y a des outils pour ça, il y en a plein.
Ok.
Et qui sont bien faits.
Les généralises sont plutôt bien faits.
Donc Longchain, il y en a peut-être un autre, non,
qui s'appelle DeepEval.
C'est la même chose.
C'est ce que ça correspond à la même utilité
de venir en fait évaluer la performance
en fait de tout ton écosystème RAG.
Ouais, c'est pareil.
C'est pareil, tu vas lancer des commandes
et ça va évaluer.
En fait, ça va faire des appels au LLM.
Il va prendre des réponses, il va les loguer
et ensuite, tu évalues en fonction des réponses.
Par contre, est-ce que tu viens loguer
les questions et les réponses en production
ou tu es dans un contexte un petit peu à part...
Parce que là, je me pose la question
de tout ce qui est RGPD,
mais tu vois, s'il pose des questions,
là tu vois en fait les questions
que les utilisateurs finaux ont posées
ou tu vois pas...
Ou c'est dans un modèle à part.
Tu vois, est-ce que tu es dans un contexte à part
ou pas du tout ?
Tu vois vraiment...
Tu as l'évaluation qui est stockée en évaluation
dans un contexte à part des conversations en production.
Ok.
Après, tu as un log aussi des conversations en production.
D'accord.
Donc oui, tu as accès aux conversations.
Après, c'est des stockées en sécurité, tout ça.
Ok.
Mais après, c'est aussi super intéressant
pour faire de l'analytique, justement,
de voir en fait qu'est-ce qui est posé
et pour potentiellement aussi
faire du cache de la sémantique
parce que entre des...
Je sais pas si je pose 50 fois...
Ou en tout cas, 50 utilisateurs posent 50 fois la même question.
Clairement, je vais faire tourner ma machine
pour pas grand-chose, quoi.
Alors que si je l'ai déjà caché une fois,
les autres vont pouvoir en profiter, quoi.
Donc d'où l'intérêt de loguer
pour faire de l'optimisation, quoi, clairement.
Ouais, de toute façon, ouais.
Après, enfin, entre les conversations,
tu ne caches pas vraiment, mais par contre,
le fait de vérifier, tout ça, les réponses,
tout ça, c'est vachement important pour dire...
Là, il a complètement répondu à côté de la plaque.
Il faut que j'ajuste un peu le truc ou le prompt.
Peut-être il faut que je revoie un peu le prompt,
tout des trucs comme ça.
Et des fois, même, moi, je regardais des logs de conversation,
je dis, putain, il a réussi à répondre à ça,
j'alluis signe, en fait.
Je sais pas comment il a fait,
mais moi, je n'étais pas au courant, en fait.
Donc des fois, il est capable de répondre à des questions.
Et c'est là où tu te rends compte,
là, ouais, c'est pas mauvais.
Les réponses sont bonnes et tout.
Ouais, top.
Top.
Ouais.
Cool, ça.
Ça, c'est important quand même.
OK.
Et tout ça, c'est des outils qui sont quand même assez tech.
On voit aussi l'émergence, en fait, d'outils un peu low-code.
Et est-ce qu'il n'y a pas possibilité de brancher
tous ces outils, en fait, pour créer des rags,
sans pour autant être vraiment pure dev et pure tech ?
Alors, ouais, il y a des outils low-code.
Et moi, j'ai commencé par ça.
Et ça m'a fait pas mal progresser.
Donc il y a deux outils que je connais et que j'ai utilisés,
qui sont pas mal.
Et après, il y en a certainement d'autres.
Mais voilà, il y a deux outils qui te permettent de faire du LM.
Alors maintenant, je sais que si tu peux aussi faire des choses
avec les outils d'automatisation, tu peux réussir à faire des choses.
Ouais, N18N, tout ça, là.
Zappieur, tout ça.
Quand tu arrives à faire des trucs, mais sinon,
il y a Flowwise et Diffy, qui sont deux outils low-code,
entre guillemets, qui te permettent de faire du rag ou des agents.
Alors le mieux, c'est Diffy.
Le Diffy, il est vraiment complet.
Tu peux le brancher à différentes bases de données.
Tu peux faire des agents, tu peux faire des rags, etc.
Tu peux faire plein de choses.
Le Flowwise, ce qu'on a sous les yeux, il est un peu plus complexe,
un peu plus technique.
Donc c'est plus orienté de développeur.
Mais les deux outils permettent vraiment de faire des choses concluant,
vraiment avec un outil graphique.
C'est pas mal, franchement.
Et ça permet de progresser.
Personnellement, j'ai appris beaucoup de choses avec ça.
Le fonctionnement, etc.
Ça te permet de faire plein de tests rapidement, sans coder, etc.
Et pour le coup, on n'a jamais fait un sujet typiquement sur le low-code,
mais je reste intimement convaincu que les meilleurs low-codeurs,
ça reste quand même les développeurs.
Parce qu'ils vont pouvoir hacker ou en tout cas,
ça va être hyper facile à mettre en place.
Et potentiellement, ça peut aller beaucoup plus vite.
Et toi, tu vois l'intérêt, même en termes pédagogiquement parlant,
c'est super intéressant.
C'est hyper intéressant.
Oui, c'est hyper intéressant parce que c'est visuel.
Donc tu comprends le process.
Oui, c'est vraiment bien.
Et puis comme tu te fais vu au niveau des réglages,
donc des fois, tu découvres des choses que tu ne connais pas,
tu vois qu'il y a des réglages.
Voilà, il y a vraiment plein de trucs.
Et Diffy, pour le coup, c'est chinois, Diffy.
Tu peux l'auto-héberger.
Ce n'est pas très compliqué en docleur de l'auto-héberger.
Alors lui, il est capable de...
Tu vas rentrer les documents, il va les vectoriser,
il va les stocker.
Ensuite, tu vas faire ton outil pour aller rechercher.
Enfin, il fait un chat bot déjà tout près à l'emploi, etc.
Donc c'est vraiment, vraiment, vraiment intéressant
pour tester, apprendre et tout.
Et même l'utiliser.
Moi, je sais que je vais en prod là,
pour faire un chat bot pas trop cher en tarif.
Diffy.
C'est...
Ouais, Diffy, c'est vraiment pas mal.
Par contre, on est bien d'accord que Diffy,
c'est une solution clé en main.
C'est tout l'écosystème.
Il y a...
C'est l'outil qui va te permettre de faire un rag de A à Z,
sans, pourtant, en fait, avoir tout ce pipeline.
Voilà, c'est un peu la solution clé en main.
Ouais, ouais.
Ouais, ouais, tu fais le pipeline, mais dedans.
Et tu peux faire plein de trucs.
Tu peux même faire des agents que tu vas utiliser
dans ta boîte ou toi-même
sur une base documentaire,
pour faire des recherches sur un domaine de pécifiques, etc.
Donc vraiment, super outil.
Enfin, j'encourage vraiment à tester,
parce que ça permet de déjà mettre un pied dedans,
de voir comment ça fonctionne,
de comprendre le process d'un rag,
tout ça, des bases de données, tout ça.
Et puis après, si on a envie,
bah, pourquoi pas passer sur du code,
pour aller dans un truc un peu plus spécifique
et customisé, etc.
Mais déjà, avec ça, j'ai pas mal de choses.
Excellent.
Et après, ouais, Flowwise est beaucoup plus...
Alors, défié et accessible,
en tant que DF, tout ça, on s'y retrouve très facilement.
Voilà, plein de bases de données qu'on peut mettre, tout ça.
Flowwise est plus complexe.
On demande déjà...
Alors, il est mieux commencer par celui pour commencer.
Derek.
Top.
Parfait, tout ça.
Je crois qu'on a un peu fait le tour
de tout l'écosystème rag,
parce que c'est très, très, très vaste.
Mais en tout cas,
je pense qu'on a brossé tous les aspects du rag.
Toi, c'est des choses que tu as déjà vendues ou pas encore ?
Ouais, j'ai deux trucs vendus déjà.
Ouais, j'en ai deux vendus.
Et peut-être d'autres derrière.
Et surtout, maintenant,
moi, je me suis mis sur le code complètement.
Alors, au début, je disais des outils,
le code là qu'on vient de voir.
Diffyé.
Pour commencer.
Voilà, c'est assez récent.
Moi, ça fait quelques mois.
Et je me suis mis au code il y a pareil.
Peut-être deux mois, enfin début d'année.
Et pareil, pour expérimenter tout ça.
J'ai essayé avec LangChain.
Et puis, c'est pas simple.
Mais quand on parle sur du GST, du TS,
avec notre background de développeur,
on arrive à s'en sortir.
Donc, c'est intéressant.
Voilà, là, il y a plein d'outils qui sortent,
comme Mastra, tout ça.
Donc, ça va être de plus en plus facile,
je pense, pour nous, développeurs web, tout ça.
Ou on n'est pas forcément à l'esac du piton.
Donc, il y a de plus en plus d'outils.
Et puis, ça va faire que continuer.
Et puis là, en plus avec les nouveaux serveurs MCP qui arrivent.
Alors, c'est un peu différent.
Mais voilà, il y a tout le monde ici, mais aussi.
Donc, voilà, il y a plein de possibilités qui arrivent
pour développer des outils.
Yes.
Et pour le coup, les clients sont plutôt friands de ça.
Ils sont en attente.
Où il y a encore cette phase de pédagogie
à apporter, d'expliquer les choses,
et surtout d'expliquer, de montrer le bénéfice,
de mettre ça en place.
Alors, les clients qui vendent du marketing,
ils adorent le vendre, ça.
Ça, ça les fait kiffer.
Ils adorent mettre IA et vendre des chatbots et tout ça.
Donc, après, les boîtes en elles-mêmes
sont plutôt frileuses pour l'instant.
Ils attendent de voir un peu,
surtout, ils sont un peu frileux par rapport au coup,
en fait, parce que d'ailleurs, l'Etat avait sorti un géant.
J'avais été chargé un document PDF sur développer son RAG,
tout ça, un truc officiel de l'Etat,
voilà combien, et ils annonçaient les tarifs
entre 50 et 100 000 euros pour développer son RAG, etc.
Donc, quand il y a une boîte,
oui, oui, parce que, après, ça dépend de la base documentaire,
tout ça, mais quand il y a une boîte,
ça reprend vite un coup.
Je connais une boîte aussi où une société
est venue les voir pour leur vendre un RAG
spécialisé dans le legal, ou un truc comme ça.
C'est pareil, c'était un coût de 30 000 euros, à peu près.
Du coup, on est vraiment sur des tarifs pour l'instant assez élevés.
Donc, pour les sociétés, elles attendent un peu de voir
avant d'investir des sommes comme ça,
parce que voilà, est-ce que c'est un vraiment besoin nécessaire,
est-ce que ça va bien marcher, etc.
Voilà, elles sont pleines questions,
donc il va falloir un petit peu se spécialiser
pour répondre aux questions.
Moi, je vois, j'ai deux types de clients
qui sont radicalement tous différents,
mais vraiment diamétralement opposés.
C'est ceux qui sont hyper friands,
et ils sont en attente de, vas-y,
mais moi, de l'IA partout, TLLM, la machin,
moi, je veux l'implémenter dans ma boîte.
Donc, ils sont hyper demandeurs.
Et voir même parfois, en fait, too much, quoi.
C'est-à-dire, OK, tu veux un chatbot, tu peux faire ça.
Non, non, non, mais je veux de l'IA dans ma boîte,
mais en fait, ils ne savent pas clairement
où est-ce qu'ils peuvent mettre de l'IA.
Mais ils sont plutôt en attente de solutions basées sur l'IA,
pour souvent optimiser les coûts,
pour augmenter la productivité,
pour faciliter le boulot des opérateurs,
du personnel de manière générale.
Et à l'inverse,
autres spectres de clients qui ne veulent pas du tout
en entendant parler, souvent parce qu'incompréhension totale,
et ils ont peur de l'IA, et donc, ils ne veulent pas
en entendant parler, ils font un peu la politique de l'autruche,
en mode non, je ne veux pas utiliser ça,
je ne veux pas manger de ce pain-là,
mais c'est plus sous-couvert, un peu idéologique.
Oui, je comprends.
En tout cas, la plupart du temps, c'est noir ou blanc,
c'est assez radical sur le position.
Moi, je pense que, à titre perso,
je pense qu'il y a vraiment de la pédagogie à faire,
et je pense que tu fais bien de monter en compétences
sur des solutions que tu maîtrises,
et surtout, venir avec des exemples,
je pense que c'est la meilleure façon de convaincre un client,
c'est de lui montrer quelque chose de concret,
parce que déjà, dans notre métier, l'informatique,
c'est déjà hyper abstrait, ils ne comprennent pas tout.
Là, en plus, si on met le mot «IA» à l'intérieur,
c'est encore plus mystique,
venir avec une solution concrète qui répond à un problème concret,
mais la solution utilise «IA».
Là, il y a peut-être sans doute beaucoup plus facile de le convaincre,
et qu'à la fin, il signe, il fait le check,
pour qu'on vienne développer ça.
Tu vois, j'avais vu un meet-up en vidéo sur le bon coin,
où ils utilisaient ça pour répondre aux questions de l'instance,
donc ils avaient développé un truc qui répondait aux emails,
parce qu'ils se rendaient compte que la plupart des questions étaient dans les FAQ.
Mais bien sûr.
Le RAG, les chercheurs général des FAQ pour répondre aux questions.
Mais bon, malgré tout, ils se croient qu'ils disaient 10% des réponses
s'est générée par le RAG, donc ce n'est pas énorme,
mais ça fait gagner du temps.
Après, j'avais un autre projet,
finalement, il ne va pas se faire,
mais l'exemple, par exemple, c'était des vendeurs,
donc remplir sa fiche vendeur, etc.
Et à un moment donné, le texte, l'idée, c'était de,
quand il remplisse le texte,
de le faire corriger par l'IA, automatiquement, etc.
Donc ça peut être des idées pas mal,
qui ne sont pas compliquées à mettre en place.
Et puis, il y a un truc super important,
c'est que si jamais on fait des chatbots dans des boîtes,
j'avais coûté un podcast là-dessus,
justement pour les gens qui avaient fait un truc de documentation
en interme dans l'entreprise qu'il avait mis sur le chat de Ante Tim,
cela, tout ça.
Ils avaient retardé le lancement,
parce qu'en fait, ils voulaient que le truc soit vraiment à boutique
et que les réponses soient bonnes, en fait.
Parce qu'en fait, à priori,
quand tu lances un chatbot, un rag,
si jamais au début, les réponses sont un petit peu à côté de la plaque,
tout ça, le risque, c'est que les gens arrêtent de l'utiliser assez rapidement
et que l'on truque dans l'entreprise et t'en réinvestit pour rien.
Ça fait un flop total, quoi.
Là, pour le coup,
tu n'as pas la deuxième possibilité de faire une première bonne impression.
Il faut vraiment faire une bonne impression pour que les gens l'adoptent
et travaillent avec.
Si le truc est pourri dès le début, ils vont vite le laisser tomber
et t'auront investi 30 000 balles pour rien.
A nous, on a pris notre cheque, mais bon.
Ouais.
Mare de déconne, c'est pas...
Il ne faut pas dire ça, parce que c'est une vision très très court-termiste.
Après, ça va, ça va donner une mauvaise image.
Ce n'est pas bon du tout.
Donc, il faut que ce soit cali.
Top.
Patrick, on en reste là pour cet épisode.
Yes.
Ça marche.
Dites-nous dans les commentaires si vous êtes restés jusqu'au bout de l'épisode.
Déjà, on vous remercie grandement.
Merci.
Et dites-nous dans les commentaires si vous êtes plutôt hypé par cette tendance-là.
Si vous êtes prêt à y passer du temps,
si vous voyez le potentiel technique, si ça vous intéresse,
si vous voyez un potentiel commercial, on est hyper curieux de vous retour.
Et en tout cas, nous, on est plutôt à fond là-dedans.
Et ce qui est sûr, c'est que dès qu'on les mettra ça en place,
on vous fera un retour, évidemment.
Un grand merci pour tous ceux qui sont restés jusqu'au bout de l'épisode.
Un petit pouce, un petit commentaire.
Ça fait toujours plaisir et on vous dit à bientôt.
Ciao, ciao.
Ciao.
Episode suivant:
Les infos glanées
DoubleSlashPodcast
Double Slash, un podcast sur le développement web. Retrouvez-nous régulièrement pour parler de sujets variés tels que la JAMStack, l’accessibilité, l’écoconception, React.js, Vue.js, Next.js, Nuxt.js, le CSS et des retours d’expériences sur des implémentations.
Tags
Card title
[{'term': 'Technology', 'label': None, 'scheme': None}, {'term': 'Technology', 'label': None, 'scheme': 'http://www.itunes.com/'}]
Go somewhere
Les news web dev pour avril 2025