LLM - IA générative
Intégration des LLMs (grands modèles de langage) dans la solution Dydu.
Dernière mise à jour
Intégration des LLMs (grands modèles de langage) dans la solution Dydu.
Dernière mise à jour
Tous droits réservés @ 2023 dydu.
La solution Dydu permet l'administration de bots (chatbots, callbots) en utilisant une stack totalement intégrée et propriétaire.
Le moteur sous jacent implémente une mécanique qui permet de comprendre de très nombreuses formulations d'une même intention. Celle-ci évite au maximum les erreurs de compréhension, mais nécessite un travail pointilleux sur la structure des connaissances et des groupes de formulations utilisés.
Pour maximiser le périmètre du bot en minimisant l'effort à fournir sur la base de connaissances, Dydu intègre dans sa solution de l'IA générative.
Toutes les intégrations LLM réalisées ou sur la feuille de route du produit Dydu viennent en complément et non pas en remplacement. La technologie Dydu et celle des LLMs ont des approches différentes et se complètent parfaitement.
Le NLU (Natural Language Understanding) est une partie du NLP (Natural Language Processing) qui correspond à la partie compréhension de la question de l'utilisateur.
Dans la base de connaissances Dydu, celle-ci se traduit par les bulles bleues qui définissent les intentions des utilisateurs :
Pour maximiser la compréhension, l'administrateur de la base de connaissances doit utiliser les groupes de formulation :
Pour maximiser la compréhension du bot, le moteur Dydu va s'appuyer sur un LLM avec la logique suivante :
En utilisant le NLU de Dydu et si le matching est direct -> une réponse est fournie.
En cas de matching direct via le LLM -> une réponse est donnée; sinon, une reformulation Dydu sera tentée pour obtenir une réponse du NLU Dydu, si possible.
Le bloc NLU Dydu correspond donc à l'analyse de la question de l'utilisateur sur la base du calcul de distance qui s'appuie sur les formulations et groupes de formulations. Si le score obtenu est trop faible, le LLM va être sollicité pour qu'il essaie à son tour de trouver la réponse.
Dans cette logique, le LLM s'appuie sur un index de vecteurs (embeddings) qui est regénéré régulièrement à partir des contenus de la base de connaissances Dydu.
La mécanique utilisée ici s'appelle RAG (retrieval augmented generation) qui consiste à trouver la ou les connaissances approchantes (avec leur id technique) à la question dans l'index.
Un prompt est généré à partir des questions, réponses et id ainsi qu'une série d'instructions pour que le modèle ne s'appuie que sur les données fournies dans le prompt.
Il retourne l'id de la connaissance la plus proche, ou rien si aucune connaissance ne correspond.
Ainsi, la réponse qui sera formulée par le moteur Dydu en fin de chaîne sera la réponse qui a été rédigée dans le BMS Dydu et non pas un texte généré par le LLM. L'intérêt étant de maximiser la compréhension et d'éviter toute dérive dans les réponses formulées telles que des hallucinations.
Un autre usage des IA génératives dans nos chatbots consiste à indexer des documents externes pour enrichir le périmètre des connaissances du bot.
Le principe général consiste à interroger un modèle de langage dans une situation donnée, typiquement lors d'une incompréhension du bot. Ce LLM s'appuie sur une base d'index générée à partir des documents sources.
La première étape pour la mise en place de l'indexation sémantique est la détermination des sources. Nous devons définir ensemble quels sont les documents que vous souhaitez rendre accessibles au bot.
Les sources possibles sont :
fichiers : PDF, MS Word (doc, docx), MS PowerPoint (ppt, pptx)
pages HTML : site public, site intranet, site sharepoint, ...
Selon la nature des documents, une étude préalable peut être menée pour vérifier que l'outil d'indexation fonctionnera correctement sur vos documents.
En effet, un document PDF peut contenir du texte, mais également des images (ex: un contrat scanné), des images au format svg, ...
Une analyse préliminaire doit être effectuée pour ajuster éventuellement l'outil d'extraction des contenus sur les spécificités de vos documents.
Les documents peuvent être hébergés en différents endroits :
sites publics
sites intranets
sites sharepoint
...
Selon le cas, des comptes de service peuvent être nécessaires et les autorisations nécessaires doivent éventuellement être vues avec votre équipe sécurité.
L'outil doit être en mesure d'accéder régulièrement aux documents pour mettre à jour l'index.
L'objectif de l'indexation sémantique est d'enrichir la base de connaissances du bot Dydu.
⚠️ Nous déconseillons fortement de créer un bot sans connaissances Dydu utilisant exclusivement les résultats d'indexation sémantique. En effet, les résultats seront moins maîtrisés et les coûts potentiellement plus élevés en fonction du modèle que vous utiliserez.
✅ Une utilisation "hybride" est conseillée : la base de connaissances Dydu sera moins conséquente que si elle ne s'appuie pas sur l'indexation et elle pourra prendre en charge les questions :
les plus fréquentes
les plus sensibles
nécessitant une intégration avec votre SI
nécessitant une escalade vers un agent humain
Dès lors vous pouvez choisir d'utiliser les réponses issues de l'indexation sémantique dans les cas suivants :
en complément d'information sur une réponse Dydu suite à demande explicite de l'utilisateur
questions / thématiques spécifiques
selon le profil de l'utilisateur
...
Lorsque le LLM est sollicité pour trouver la réponse dans la base documentaire, celui-ci utilise la mécanique RAG (retrieval augmented generation) pour trouver tout d'abord zéro, un ou plusieurs paragraphes (ou chunks) en lien avec la question posée.
Un prompt est généré à partir des chunks obtenus ainsi qu'une série d'instructions pour que le modèle ne s'appuie que sur les données fournies dans le prompt. La réponse sera formulée par le modèle de langage à partir de tous ces éléments.
Le schéma ci-dessous décrit la logique générale :
Le schéma d'architecture ci-dessous présente le cas où l'intégralité de la solution Dydu + LLM est hébergée par Dydu :
Le serveur solution Dydu contient toute la brique logicielle de bots Dydu. Nous pouvons fournir à la demande une documentation détaillée et technique de la manière dont est configurée un serveur de la solution Dydu.
L'objectif de cette architecture est de pouvoir proposer à nos clients une solution totalement hébergée en France et par nos soins et compatible avec la RGPD.
Pour les usages LLMs, nous avons besoin d'un autre serveur qui est en charge d'héberger plusieurs service :
Le moteur d'embeddings : c'est un modèle de langage qui se charge de vectoriser des phrases.
Le LLM (Llama2) : le modèle de langage utilisé à travers des prompts et qui génère des réponses
le Crawler : c'est un outil développé par Dydu qui permet d'aller parcourir des sites externes ou des bases de connaissances Dydu pour télécharger des données (fichiers, pages web, bases de connaissances Dydu, ...) Cet outil se paramètre avec des fichiers de configuration lui donnant les instructions des documents à télécharger et à indexer. (URLs, types de fichiers, credentials, fréquence de mise à jour de l'index, ...)
Le RAG : c'est une API ouverte uniquement au moteur Dydu qui permet de chercher dans l'index et de générer une réponse avec un appel au LLM.
L'ensemble des requêtes effectuées entre les 2 serveurs Dydu est en HTTPS.
Notre architecture n'est pas adhérente à un LLM en particulier, et il est tout à fait possible de l'utiliser avec des modèles hébergés par des tiers.
Ainsi, la même architecture que précédemment mais en utilisant le moteur d'embeddings d'OpenAI et GPT :
Cela est également possible avec Azure OpenAI, le tiers étant dans ce cas Microsoft, qui peut offrir des garanties sur la compatibilité avec la RGPD.
De nombreuses questions de sécurité doivent être adressées avant de démarrer un projet utilisant les modèles de langage sur vos bases documentaires :
le crawler doit pouvoir accéder à vos documents -> il faut ouvrir un flux entre notre serveur et vos sites hébergeant ces documents -> le crawler doit disposer d'un compte de service pour s'authentifier le cas échéant
la vectorisation des documents est stockée dans notre index -> un vecteur seul est inutlisable, mais en utilisant le moteur d'embeddings qui l'a créé on peut retrouver le texte d'origine, ceci implique que les textes de vos documents sont hébergés sur notre serveur. Il est important de s'interroger sur le niveau de confidentialité des données de ces documents et du caractère personnel des contenus.
dans le cas de l'utilisation d'un LLM hébergé par un tiers, tous les documents et toutes les questions sont transmises à ce tiers pour la vectorisation ainsi que pour l'interrogation du LLM.
incompréhension et / ou reformulation du bot Dydu