LES BUNKERS

L’embedding, c’est quoi? Comment ça marche? + 1 app simple qui entraîne un chatbot sur ton contenu!

Si tu as un trouble de santé, avec qui préfères-tu parler: ChatGPT... ou un médecin?

Moi en 2040, mourant sur la table d'opération parce que mon médecin a utilisé ChatGPT pour réussir l'école de médecine.

J'imagine que tu préfères discuter avec un réel être humain. Par contre, si tu dois faire ta sélection à l'aveugle, c'est-à-dire que tu ne peux pas savoir qui est qui, tout indique que tu préférerais discuter avec un robot!

Pour faire le test, des chercheurs de l’université de San Diego ont mis en compétition de réels docteurs avec ChatGPT afin d’évaluer non seulement la QUALITÉ des informations, mais également L’EMPATHIE démontrée envers les patients. (Source)

Déjà, c'est surprenant de voir ChatGPT triompher devant de réels médecins en termes de qualité des réponses. Par contre, c’est vraiment le score d’empathie qui surprend:

J’imagine que je ne devrais pas être surpris… Après tout, les robots ne sont jamais fatigués, malades ou hangover. Ils sont toujours à leur 110%, peu importe ce qu’on exige d’eux.

Par contre, un robot est, par définition, incapable d’empathie. Je ne peux donc pas m’empêcher de savourer l’ironie d’un robot qui performe mieux qu'un vrai médecin sur cette dimension!

Bref, si ChatGPT peut remplacer un médecin, j’imagine qu’il peut bien t’aider à faciliter ton support à la clientèle!

Le problème, tu vas me dire, est que ChatGPT ne connaît pas tes politiques! Il est peut-être bon pour écrire de belles phrases sans fautes, mais quand vient le temps de répondre en fonction d’un contexte précis et particulier, il risque de dire n’importe quoi.

Pour que ton AI réponde correctement, il faut trouver une façon de lui faire connaître tes politiques.

Si tu suis ce blogue, tu sais que ça fait quelques mois que je bidouille avec cette idée. Je veux créer un chatbot qui est capable d’avoir accès à l’ensemble de mes 500+ articles de blogues et ~10 000 discussions du forum.

J’ai commencé par essayer de “fine-tuner” un modèle. Tu peux suivre mon évolution ici:

J’ai fini par me rendre compte que le fine-tuning n’était pas la bonne solution. Pour qu'un robot soit capable d’agir en tant qu’employé virtuel, il faut plutôt utiliser le meilleur modèle disponible (GPT4) et le guider en lui donnant les informations pertinentes à l'intérieur du prompt (le texte que tu envoies à ChatGPT pour obtenir une réponse).

Tu peux en lire plus sur le prompting dans mon guide: 6 astuces pour doubler ta productivité avec ChatGPT!

Concrètement, ça veut dire qu’à la place de discuter directement avec un robot, il faut qu’un script fournisse le contexte au robot au fur et à mesure.

À la place de cet échange:

Olivier_Lambert :

Je viens de m’inscrire à une formation, mais j’aimerais obtenir un remboursement.

ChatGPT :

Pour obtenir un remboursement, contactez directement l'organisation qui propose la formation. Consultez leurs conditions de remboursement, généralement disponibles sur leur site web. Si vous êtes dans le délai de remboursement, expliquez votre situation et demandez le remboursement.

Il faut que l’échange ressemble à ceci:

system :

Tu es @Robolivier, un employé qui s’occupe du service à la clientèle pour l’entreprise “La Tranchée”. Il s’agit d’une communauté en ligne + forum + portail de cours qui aide les entrepreneurs. Un utilisateur vient d’initier une conversation avec toi, ton rôle est de l’aider du mieux que tu peux. N’invente rien. Si tu ne connais pas quelque chose, dis simplement que tu ne le sais pas.

Olivier_Lambert :

Je viens de m’inscrire à une formation, mais j’aimerais obtenir un remboursement.

system :

La politique de remboursement de La Tranchée est de 30 jours suivant la date d’inscription. La formation est remboursée en entièreté. Pour obtenir un remboursement, l’utilisateur doit se rendre à cet URL (www.latranchee.com/facturation), cliquer sur l’onglet vertical “formation” et effectuer la demande. Le processus est complètement automatisé, mais le remboursement prend jusqu’à 5 jours ouvrables avant d’apparaître sur le relevé de transaction.

Robolivier :

Bonjour Olivier, je suis là pour vous aider.

D'après votre message, il semble que vous voulez un remboursement pour une formation à laquelle vous vous êtes inscrit. Vous pouvez demander un remboursement directement sur notre site web. Pour ce faire, veuillez suivre ces étapes:

  1. Allez à www.latranchee.com/facturation
  2. Cliquez sur l'onglet "formation"
  3. Suivez les instructions pour demander un remboursement

Notre politique de remboursement prévoit un délai de 30 jours suivant la date d'inscription à la formation. Le processus de remboursement est entièrement automatisé, mais veuillez noter qu'il peut prendre jusqu'à 5 jours ouvrables pour que le remboursement apparaisse sur votre relevé de transaction.

Si vous rencontrez des problèmes lors de ce processus, ou si vous avez d'autres questions, n'hésitez pas à me le faire savoir. Je suis là pour vous aider!

Bien sûr, l’utilisateur ne voit pas les notes “system”, seul l’assistant y a accès. Cette façon de structurer la conversation (entre "user", "assistant" et "system") est le format demandé dans la documentation de l'API Chat d'OpenAi.

Comme tu peux voir, la conversation est parfait, c'est EXACTEMENT ce qu’il nous faut! Ça m’aurait pris plusieurs semaines de bidouillages, mais j’ai finalement découvert comment faire! 😏

Le processus est assez technique alors je vais te présenter un outil simple qui fait TOUT à ta place. La seule chose que tu dois faire, c’est de lui fournir des documents Words, fichiers PDFs ou URLs de site web pour qu’il les scans, indexe te génère ce genre d’assistant.

Par contre, si tu es sur La Tranchée, probablement que de connaître l’outil à utiliser n’est pas suffisant… Tu veux savoir COMMENT il marche. Encore plus, tu aimerais connaître les étapes à suivre pour créer ton propre outil, te partir une entreprise de AI et devenir riche.

Je vais donc commencer par expliquer le problème à régler si on veut être capable de fournir le contexte à son AI de façon à ce qu’il soit capable de répondre comme le ferait un employé (trop) bien formé. Je vais ensuite te parler de la technologie qui permet de régler ce problème avant de te présenter une solution clef en main qui applique cette solution en quelques clics!

Si tu es paresseux, tu peux sauter directement à la fin de l’article pour découvrir ce fameux outil.

Le défi technique n’est pas celui que tu penses!

Fournir le contexte en temps réel à son assistant virtuel est beaucoup plus compliqué que ce que ça en a l’air! Fondamentalement, il s’agit d’un problème d’indexation et de recherche.

Il faut être capable, en une fraction de seconde, d’interpréter la requête et de scanner des milliers de lignes de textes à la recherche de l’aiguille proverbiale qui se cache dans la botte de foin.

Faire une simple recherche de mots clefs dans une base de données ne suffit pas, il faut décoder l’intention de la requête.

Avec une recherche de mots clefs standards, si la personne n’utilise pas EXACTEMENT les mêmes mots clefs que toi, c’est très probable que ta recherche revienne vide.

Par exemple, si la personne fait des erreurs de français dans sa requête et écrit “j’aimerais avoir un ramboursement”, quand tu vas chercher “ramboursement” dans ta documentation, tu ne vas rien trouver!

Il existe sans doute une tonne de façon de régler ce problème. On pourrait, par exemple, commencer par passer la requête de la personne dans un dictionnaire pour trouver l’orthographe correcte de chaque mot. Ensuite, on pourrait générer une liste de synonymes et chercher les documents pertinents pour chacune de ces expressions. Et, puisque c’est possible qu’on soit présenté avec des milliers de documents, il faut ensuite trouver une solution pour hiérarchiser chacun de ces résultats par ordre de pertinence!

Pour que cette opération ne prenne pas toute la journée et 15 000 watts d’électricité, il faudrait probablement avoir un système d’index et de mise en cache.

Bref, ce n’est pas parce qu’une approche est évidente que c’est la meilleure. En fait, il s’agit probablement de la pire façon de s’y prendre. Il existe une façon beaucoup plus simple, rapide et efficace: l’embedding.

Qu’est-ce que l’embedding?

Comme ton cerveau, ChatGPT est un algorithme qui décode et transforme quelque chose d’abstrait (le langage) en quelque chose de concret (des signaux électriques).

Dans le cas de ton cerveau, ces signaux sont chimiques, mais le principe reste le même. Pour un neurone, les lettres que tu regardes présentement ne veulent rien dire! Ton cerveau doit commencer par 1) reconnaître les lettres, 2) les grouper en mots et 3) les décoder d’une façon à ce que ta "conscience" soit capable de les interpréter.

Pour ton inconscient, les mots ne sont pas des mots, ce sont de signaux électriques. Pour un AI, les mots ne sont pas des mots, ce sont des 0 et des 1.

Pour comprendre quand tu lui parles, ChatGPT commence par transformer tes mots en représentations numériques qu’on appelle des vecteurs.

Pour transformer le texte en vecteur, on utilise un “embedding model”. Qu'est-ce que c'est? Avant de te fournir ma propre explication de ce que c’est, voici celle de ChatGPT.

ChatGPT :

Un modèle d'embedding est un réseau de neurones entraîné pour convertir des entités discrètes (comme des mots) en vecteurs de nombres réels. L'entraînement se fait souvent avec des tâches d'apprentissage non supervisées, où le modèle apprend à prédire le contexte d'un mot (comme dans le modèle Word2Vec) ou un mot à partir de son contexte (comme dans le modèle GloVe). Le but est d'obtenir une représentation vectorielle où les distances et directions entre les vecteurs captent la similarité sémantique ou la relation entre les entités d'origine.

Bref, il s’agit d’un AI (réseau de neurones) qui capture le "sens" du texte à l’intérieur d’une série de chiffres. Pourquoi est-ce qu’on fait ça? C’est simple! Le texte représente un ensemble de coordonnées sémantiques. Si on imagine un nuage de points, ça veut dire que les points qui représentent un texte similaire vont être prêts les uns des autres alors que les coordonnées de textes dissimilaires vont être éloignées les uns des autres.

Tout ça nous simplifie énormément la vie quand vient le temps de faire une recherche! Tout ce qu’on doit faire, c’est de trouver la position de la requête de recherche dans le nuage de point et de prendre ses voisins comme réponses!

Ça veut dire qu’on doit commencer par 1) “embedder” (ou vectoriser) l’ensemble de ses données, ce qui donne un nuage de point (appelé espace vectoriel).

Ensuite, 2) on passe la requête (le prompt) dans le même algorithme, ce qui nous donne sa position dans le nuage.

Finalement, 3) on regarde ce qui se trouve autour pour déterminer quels sont les documents les plus pertinents.

Les espaces vectoriels représentent l’outil de base du développement en AI et, dans l’univers des tech startups, c’est la ruée vers l’or! À voir ça aller, c’est difficile de penser qu’on est en récession. Dans les dernières semaines seulement, Pinecone a reçu 100 millions, Weaviate 50 millions, Chroma 18 millions et Qdrant 7.5 millions. Toutes ces Startups ont une chose en commun: ils offrent un service de base de données spécialisé pour les espaces vectoriels.

Concrètement, comment ça marche?

Si je t’ai perdu dans les derniers paragraphes, ne t’inquiète pas, je vais t’arranger ça! Ça m’a pris quelque temps avant d’assimiler les implications de la vectorisation alors je ne m’attends pas à ce que tout soit clair dès le départ. On va donc revenir sur terre et je vais t’expliquer, dans un langage un peu plus simple, à quoi ressemble le processus derrière l’AI qu’on veut créer.

Avant tout, on commence par prendre toute ta documentation (site web, pdf, docx, etc) et on l’utilise pour générer un nuage de points.

Ensuite, on créer un script qui fait l’intermédiaire entre l’utilisateur, le nuage de points et OpenAI. L’utilisateur ne communique donc pas directement avec OpenAI, il passe par l’intermédiaire de ton script.

Lorsque l’utilisateur communique avec ton script (via le chatbot), ce dernier trouve la position de la question à travers le nuage de point et, si la question a des voisins, les inclut comme contexte à la requête qu’il envoie à OpenAi sous forme de contexte (comme j’ai fait plus haut).

Ça fait du sens? Je l’espère! Si c’est du charabia, laisse-moi un commentaire et je vais essayer de te donner d’autres exemples.

Je ne vais pas te montrer à quoi ressemble ce genre de script ici puisque cet article commence déjà à être long. Par contre, si je reçois assez d'intérêt de la part des lecteurs envers ce sujet, qui sait? Ce sera peut-être pour une prochaine fois. 😉

Et, si l’embedding t’intéresse, je te recommande fortement de lire cette page du site d'Open AI ainsi que cet article de blogue fascinant: “What is Similarity Between Sentences?

Une solution clef en main & simple à utiliser!

Tu aimerais être capable de profiter de cette technologie sans avoir à comprendre quoi que ce soit? Je te présente ChatBase: une plateforme de création de chatbots faciles à intégrer à son site web.

Pour l’utiliser, c’est assez simple. On insère l’URL de son site et leur robot s’occupe de l’indexer.

On peut également y coller directement son texte ou même uploader des documents PDF ou Word.

Une fois que c’est fait, on obtient un code qu’on peut facilement ajouter à son site pour faire apparaître une bulle de chat en bas à droite.

Pour les gens plus technos, l’application possède un API qui permet de l’utiliser de concert avec des outils d’automation comme Zapier.

Dans l’interface, c’est assez facile de modifier les paramètres du chatbot:

Si tu cherches une solution simple pour créer des chatbots, ChatBase est vraiment une option intéressante! Oui, ça coûte quelque chose. Mais, comme tu viens de voir, créer ce genre de chatbot n’est pas exactement simple…

Ceci étant dit, la plateforme ne possède pas toutes les options nécessaires pour que je puisse me permettre de la recommander les yeux fermer. Par exemple, il faudrait que ce soit facile pour un humain de prendre le relais lorsque l’assistant virtuel ne sait pas comment répondre!

Il faut comprendre que ChatBase est une startup très récente. On est dans une course à l’innovation et cette application est la première que j’ai vue qui permet à monsieur/madame tout le monde de se créer un chatbot qui utilise une base de données vectorielle.

Bref, si tu veux explorer la frontière de l’innovation, va te créer un compte sur ChatBase.

Le moment où tout a “cliqué”!

Pour imaginer et conceptualiser les opportunités d’affaires en AI, il faut d’abord apprendre et maîtriser le jargon qui vient avec. Puisque c’est un domaine TRÈS récent, la majorité des gens (moi y compris) partent de zéro.

Pour comprendre les différents morceaux de robots qui permettent à un AI de fonctionner, ça aide d’avoir un analogue plus tangible à quoi le comparer!

Dans mon cas, la métaphore qui m’a vraiment permis de comprendre le rôle de chacune des parties est la suivante…

  • Le modèle (GPT4, BARD, etc) représente sa cognition. C’est sa petite voix dans ton cerveau qui lui permet de réfléchir.
  • Ce modèle a été généré à partir de données d’entraînements. Ces données représentent l’intellect et les connaissances générales du robot.
  • Le contexte (le prompt) représente la mémoire à court terme. Comme toi, le AI possède une limite à ce qu’il peut prendre en compte lorsqu’il formule ses pensées. Cette limite est exprimée par le nombre de “tokens” maximum qu’il peut utiliser dans un prompt.
  • L’espace vectoriel représente son aide-mémoire. Pour permettre au modèle d’accéder à cette mémoire, on créer un script qui injecte les informations disponibles les plus pertinentes dans la mémoire à court terme du modèle à travers le prompt.

Quand on y pense, c’est très similaire à un être humain!

Ce qui est vraiment intéressant, ce sont les implications de cette approche modulaire pour les développeurs! Interchanger chacune des parties est incroyablement simple. On peut changer le script qui génère les prompts, le LLM et l'espace vectoriel en quelques lignes de codes. Quand GPT5 va sortir, faire la mise à jour va être aussi simple que de changer le 4 par un 5 dans le code!

Bon, je pourrais continuer longtemps alors je vais m'arrêter ici. Si tu as aimé l'article, assure toi de t’abonner à l’infolettre. J'ai une foule d'autres articles similaires dans mon pipeline.

Si tu as des questions ou commentaires, n'hésite pas! Ça va me faire plaisir de poursuivre la conversation dans les commentaires.

Tu as aimé cet article? Tu aimerais être informé des futures publications? Abonne-toi par courriel!

Sur le blogue