Fabrice AI : Mise en œuvre technique actuelle

Dans le dernier article, Fabrice AI : The Technical Journey, j’ai expliqué le parcours que nous avons suivi pour construire Fabrice AI en faisant un tour complet. J’ai commencé par utiliser Chat GPT 3 et 3.5. Déçu par les résultats, j’ai essayé d’utiliser le Langchain Framework pour construire mon propre modèle d’IA, avant de revenir à Chat GPT lorsqu’ils ont commencé à utiliser des bases de données vectorielles et à améliorer massivement les résultats avec 4o.

Voici le processus actuel de formation de Fabrice AI :

  • Les données de formation (articles de blog, URL de Youtube, URL de podcasts, URL de PDF et URL d’images) sont stockées dans notre base de données WordPress.
  • Nous extrayons les données et les structurons.
  • Nous fournissons les données structurées à Open AI pour la formation à l’aide de l’API Assistants.
  • Open AI crée ensuite une base de données vectorielle et la stocke.

Voici un exemple de données structurées. Chaque élément de contenu a son propre fichier JSON. Nous veillons à ne pas dépasser la limite de 32 000 jetons.

{

« id » : « 1 »,

« date » :  » « ,

« link » : « https://fabricegrinda.com/ »,

« title » : {

« rendu » : « Qu’est-ce que Fabrice AI ? »

  },

« Catégorie » : « A propos de Fabrice »,

« featured_media » : « https://fabricegrinda.com/wp-content/uploads/2023/12/About-me.png »,

« other_media » : «  »,

« knowledge_type » : « blog »,

« contentUpdated » : « Fabrice AI est une représentation numérique des pensées de Fabrice basée sur les articles de son blog et sur une sélection de podcasts et d’interviews transcrites à l’aide de ChatGPT. Étant donné que de nombreuses transcriptions sont imparfaites et que le blog n’est qu’une représentation limitée de Fabrice en tant qu’individu, nous nous excusons des inexactitudes et des informations manquantes. Néanmoins, il s’agit d’un bon point de départ pour obtenir les pensées de Fabrice sur de nombreux sujets. »

}

Il s’agit de la mise en œuvre technique actuelle :

  • Le site web destiné aux consommateurs est hébergé sur AWS Amplify.
  • L’intégration entre le site public et Open AI se fait par l’intermédiaire d’une couche API, hébergée sur AWS en tant que serveur API Python.
  • Nous utilisons MongoDB comme journal pour stocker toutes les questions posées par le public, les réponses données par Chat GPT et les URL des sources.
  • Nous utilisons divers scripts pour structurer les données provenant du blog, de YouTube, etc. afin de les transmettre à Open AI pour la formation.
  • Nous utilisons la reconnaissance vocale React-Speech pour convertir les demandes vocales en texte.
  • Nous utilisons également Google Analytics pour suivre le trafic sur le site web.

Il est important de noter que nous utilisons deux assistants :

  • Un pour répondre aux questions.
  • L’un pour obtenir les URL des métadonnées, les URL des blogs qui ont le contenu original pour afficher les sources au bas des réponses.

Quelle est la prochaine étape ?

  1. Amélioration de la synthèse vocale

Le modèle Whisper d’Open AI pour la conversion de la parole en texte est plus précis que React. Il prend également en charge plusieurs langues dès sa sortie de l’emballage et gère bien les langues mixtes, les accents et les dialectes. C’est pourquoi il est fort probable que je l’adopte dans les mois à venir. Cela dit, il est plus complexe à mettre en place, ce qui peut prendre un certain temps. Vous devez gérer le modèle, les dépendances (par exemple, Python, les bibliothèques), et vous assurer que vous avez suffisamment de matériel pour des performances efficaces. De plus, Whisper n’est pas conçu pour une utilisation directe dans les navigateurs. Lorsque vous construisez une application web, vous devez créer un service backend pour gérer la transcription, ce qui ajoute de la complexité.

  • Fabrice AI Avatar

Je veux créer un Avatar Fabrice AI qui me ressemble et avec lequel vous pouvez avoir une conversation. J’ai évalué D-iD mais je l’ai trouvé beaucoup trop cher pour mes besoins. Eleven Labs est uniquement vocal. Synthesia est excellent mais ne permet pas de créer des vidéos en temps réel. Finalement, j’ai décidé d’utiliser HeyGen en raison de son prix et de ses fonctionnalités plus appropriés.

Je soupçonne qu’à un moment donné, Open AI publiera sa propre solution et que ce travail n’aura servi à rien. Cela ne me dérange pas et je passerai à la solution Open AI lorsqu’elle sera disponible. À ce stade, le but de cet exercice est d’apprendre ce qui est possible avec l’IA et la quantité de travail nécessaire pour m’aider à mieux comprendre l’espace.

  • Tableau de bord personnalisé

Pour l’instant, je dois exécuter une requête MongoDB pour obtenir un extrait des questions et réponses de la journée. Je suis en train de construire un tableau de bord simple où je peux obtenir des extractions et des statistiques simples sur le nombre de requêtes par langue, le nombre de demandes de synthèse vocale, etc.

  • Sources de données supplémentaires

Nous venons de télécharger le portefeuille de FJ Labs sur Fabrice AI. Vous pouvez maintenant demander si une entreprise fait partie du portefeuille. Fabrice AI vous répondra avec une courte description de la société et un lien vers son site web.

Etant donné le nombre de questions personnelles que Fabrice AI recevait et auxquelles il n’avait pas de réponse, j’ai pris le temps de taguer manuellement chaque intervenant dans ma vidéo d’anniversaire des 50 ans pour lui donner le contenu dont il avait besoin.

Conclusion

Avec tout le travail que j’ai effectué au cours des douze derniers mois sur tout ce qui concerne l’IA, il semble y avoir une conclusion universelle claire : plus vous attendez, moins c’est cher, plus c’est facile et meilleur c’est, et plus il y a de chances qu’Open AI l’offre ! En attendant, n’hésitez pas à me contacter si vous avez des questions.

Fabrice AI : Le parcours technique

Comme je l’ai mentionné dans l’article précédent, le développement de Fabrice AI s’est avéré bien plus complexe que prévu, me forçant à explorer de nombreuses approches différentes.

L’approche initiale : Index des lamas – Recherche vectorielle

Ma première incursion dans l’amélioration des capacités de recherche de Fabrice AI a consisté à utiliser l’index Llama pour la recherche vectorielle. Le concept était simple : prendre le contenu de mon blog, le convertir en documents Langchain, et ensuite les transformer en documents Llama. Ces documents Llama seraient alors stockés dans un index vectoriel, me permettant d’interroger cet index pour trouver des informations pertinentes.

Cependant, lorsque j’ai commencé à tester le système, il est devenu évident que cette approche ne produisait pas les résultats que j’espérais. Plus précisément, lorsque j’interrogeais le système avec des questions très contextuelles telles que « Quelles sont les plus grosses erreurs commises par les fondateurs de places de marché ? », l’IA ne parvenait pas à fournir des réponses pertinentes. Au lieu d’extraire le contenu nuancé que je savais intégré dans les données, elle renvoyait des réponses non pertinentes ou incomplètes.

Ce premier échec m’a amené à reconsidérer mon approche. J’ai réalisé qu’il ne suffisait pas de stocker le contenu dans un index vectoriel ; le mécanisme de recherche devait comprendre le contexte et les nuances des questions posées. Cette prise de conscience fut la première des nombreuses leçons qui allaient façonner l’évolution de Fabrice AI.

Stockage des connaissances : Stockage et récupération de documents MongoDB

En gardant à l’esprit les limites de l’approche de l’index des lamas, j’ai ensuite envisagé de stocker les documents des lamas dans MongoDB. Le schéma flexible de MongoDB et sa structure orientée vers les documents semblaient être une solution prometteuse pour gérer les divers types de contenu que j’avais accumulés au fil des ans.

L’objectif était de créer une expérience de recherche plus dynamique et réactive. Toutefois, cette approche s’est rapidement heurtée à des problèmes. La fonctionnalité de recherche, que j’avais prévue plus robuste, n’a pas fonctionné comme prévu. Les requêtes qui auraient dû renvoyer des documents pertinents n’ont produit aucun résultat ou un contenu non pertinent.

Ce revers était frustrant, mais il soulignait également une leçon essentielle : la méthode de stockage est tout aussi importante que la stratégie d’extraction. J’ai commencé à envisager d’autres options, comme l’utilisation de MongoDB Atlas pour les recherches vectorielles, qui pourrait potentiellement fournir la précision et l’évolutivité dont j’avais besoin. Toutefois, avant de m’engager dans cette voie, j’ai voulu explorer d’autres approches pour déterminer s’il existait une solution plus efficace.

Récupérateur de métadonnées et magasin de vecteurs : A la recherche de la spécificité

L’une des prochaines pistes que j’ai explorées était l’utilisation d’un récupérateur de métadonnées combiné à un magasin de vecteurs. L’idée derrière cette approche était de catégoriser la vaste gamme d’informations au sein de Fabrice AI et ensuite de récupérer des réponses basées sur ces catégories. En structurant les données avec des métadonnées, j’espérais améliorer la capacité de l’IA à fournir des réponses spécifiques et ciblées.

Mais cette méthode a aussi ses limites. Alors qu’elle semblait prometteuse à première vue, l’IA a eu du mal à fournir des réponses précises à tous les types de questions. Par exemple, lorsque j’ai demandé « L’auteur est-il optimiste ? », le système n’a pas interprété la question dans le contexte du contenu pertinent. le système n’a pas interprété la question dans le contexte du contenu pertinent. Au lieu de fournir une analyse perspicace basée sur les métadonnées, il a renvoyé des réponses vagues ou n’en a donné aucune.

Cette approche m’a appris une leçon précieuse sur l’importance du contexte dans l’IA. Il ne suffit pas de catégoriser l’information ; l’IA doit également comprendre comment ces catégories interagissent et se chevauchent pour former une compréhension cohérente du contenu. Sans cette compréhension approfondie, même les méthodes de recherche les plus sophistiquées peuvent s’avérer insuffisantes.

Structurer la connaissance : L’index de l’arbre de synthèse

Alors que je continuais à affiner Fabrice AI, j’ai expérimenté la création d’un SummaryTreeIndex. Cette approche visait à résumer tous les documents sous forme d’arbre, permettant à l’IA de naviguer à travers ces résumés et de retrouver des informations pertinentes basées sur la structure du contenu.

L’idée était qu’en résumant les documents, l’IA pourrait rapidement identifier les points clés et répondre aux requêtes avec des informations concises et précises. Toutefois, cette méthode s’est heurtée à des difficultés importantes. L’IA a eu du mal à fournir des réponses pertinentes à des questions complexes, telles que « Comment prendre des décisions importantes dans la vie ? ». Au lieu de puiser dans le contenu riche et nuancé des résumés, les réponses de l’IA étaient souvent superficielles ou incomplètes.

Cette expérience a mis en évidence la difficulté d’équilibrer l’étendue et la profondeur de l’IA. Si les résumés peuvent fournir une vue d’ensemble de haut niveau, ils manquent souvent du contexte détaillé nécessaire pour répondre à des questions plus complexes. J’ai réalisé que toute solution efficace devrait intégrer à la fois un contenu détaillé et des résumés de haut niveau, permettant à l’IA de puiser dans les deux en fonction des besoins.

C’est pourquoi dans la version de Fabrice AI qui est actuellement en ligne, je fais en sorte que l’IA donne d’abord un résumé de la réponse, avant d’entrer dans les détails.

Élargir les horizons : Index du graphique des connaissances

Reconnaissant les limites des méthodes précédentes, je me suis tourné vers une approche plus sophistiquée : l’index du graphe de connaissances. Cette approche implique la construction d’un graphe de connaissances à partir d’un texte non structuré, permettant à l’IA de s’engager dans des requêtes basées sur des entités. Le but était de créer une compréhension plus dynamique et interconnectée du contenu, permettant à Fabrice AI de répondre plus efficacement à des questions complexes et contextuelles.

Malgré ses promesses, l’index du Knowledge Graph s’est heurté à d’importants obstacles. L’IA a eu du mal à produire des résultats précis, en particulier pour les requêtes qui nécessitaient une compréhension approfondie du contexte. Par exemple, à la question « Quelles sont les justes valorisations de la phase d’amorçage et de la phase A ? », l’IA n’a pas réussi à fournir une réponse pertinente, soulignant ainsi la difficulté d’intégrer un texte non structuré dans un graphe de connaissances cohérent.

Cette approche, bien qu’elle ait finalement échoué, a fourni des informations importantes sur les défis posés par l’utilisation des graphes de connaissances dans l’IA. La complexité des données et la nécessité d’un contexte précis signifient que même un graphe de connaissances bien construit peut avoir du mal à fournir les résultats souhaités. Un autre inconvénient de l’index des graphes de connaissance est sa lenteur. Le temps de réponse pour obtenir des documents connexes était très élevé par rapport à un index vectoriel.

Réévaluation des données : Gémeaux

Après plusieurs échecs, j’ai décidé d’adopter une approche différente en tirant parti de l’IA de Google, Gemini. L’idée était de créer des ensembles de données à partir de fichiers JSON-CSV, puis d’entraîner un modèle LLM personnalisé à l’aide de ces données. J’espérais qu’en utilisant des données structurées et un modèle d’entraînement robuste, je pourrais surmonter certains des défis qui avaient entravé les tentatives précédentes.

Cependant, cette approche a également rencontré des difficultés. Le processus de formation a été interrompu en raison d’un formatage incorrect des données, ce qui a empêché la formation efficace du modèle. Cet échec a mis en évidence l’importance de l’intégrité des données dans la formation à l’IA. Sans données correctement formatées et structurées, même les modèles les plus avancés peuvent ne pas donner les résultats escomptés.

Cette expérience m’a amené à considérer le potentiel de l’utilisation de BigQuery pour stocker des données JSON, fournissant une plateforme plus évolutive et plus fiable pour gérer les grands ensembles de données nécessaires pour entraîner efficacement Fabrice AI.

Combiner les forces : Les documents Langchain avec Pinecone

Malgré les défis rencontrés jusqu’à présent, j’étais déterminé à trouver une solution qui permettrait à Fabrice AI de stocker et de récupérer efficacement les connaissances. Cette détermination m’a conduit à expérimenter les documents Langchain et Pinecone. L’approche consistait à créer un entrepôt de vecteurs Pinecone en utilisant des documents Langchain et des embeddings OpenAI, puis à récupérer les documents les plus similaires en fonction de la requête.

Cette méthode s’est révélée prometteuse, en particulier lorsque la requête comprenait le titre du document. Par exemple, à la question « Quelle est la clé du bonheur ? », l’IA a été en mesure de retrouver et de résumer le contenu pertinent avec précision. Toutefois, des limites subsistent, notamment lorsque la requête ne comporte pas de mots-clés ou de titres spécifiques.

Cette approche a démontré le potentiel de la combinaison de différentes technologies pour améliorer les performances de l’IA. En intégrant les documents Langchain au magasin de vecteurs de Pinecone, j’ai pu améliorer la pertinence et la précision des réponses de l’IA, bien qu’avec certaines limites.

La cohérence au rendez-vous : Bâtisseur GPT OpenAI

Après avoir exploré différentes méthodes et technologies, je me suis tourné vers le GPT Builder d’Open AI pour consolider et affiner les connaissances stockées dans Fabrice AI. En téléchargeant tout le contenu dans une base de connaissances GPT, j’ai cherché à créer une plateforme plus cohérente et plus fiable pour récupérer et interagir avec mes connaissances.

Cette approche s’est avérée l’une des plus fructueuses, l’IA étant en mesure de fournir de meilleurs résultats pour toute une série de requêtes. La clé de ce succès a été l’intégration de toutes les connaissances dans un système unique et cohérent, permettant à l’IA de s’appuyer sur l’ensemble du contenu pour répondre aux questions.

Comme je l’ai mentionné dans mon précédent article, je n’arrivais pas à le faire fonctionner sur mon site web et il n’était disponible que pour les abonnés payants du Chat GPT, ce qui me semblait trop restrictif. De plus, même si c’était mieux, je n’aimais toujours pas la qualité des réponses et je n’étais pas à l’aise pour les rendre publiques.

Raffinement final : Assistants GPT utilisant le modèle 4o

La dernière pièce du puzzle dans le développement de Fabrice AI est venue avec l’introduction des assistants GPT utilisant le modèle 4o. Cette approche représentait l’aboutissement de tout ce que j’avais appris tout au long du projet. En utilisant une base de données vectorielle et en affinant les messages-guides, j’ai cherché à atteindre le plus haut niveau possible de précision et de compréhension contextuelle dans les réponses de l’IA.

Cette méthode a consisté à télécharger toutes les connaissances que j’avais accumulées dans une base de données vectorielle, qui a ensuite été utilisée comme base pour les interactions de l’IA. La base de données vectorielle a permis à l’IA d’effectuer des recherches plus sophistiquées, en récupérant des informations sur la base de la signification sémantique des requêtes plutôt qu’en s’appuyant uniquement sur la correspondance des mots-clés. Il s’agit d’une avancée significative par rapport aux approches précédentes, qui permet à l’IA de mieux comprendre les questions complexes et nuancées et d’y répondre.

L’une des principales innovations de cette approche a consisté à affiner soigneusement les messages-guides. En élaborant et en testant méticuleusement différentes questions, j’ai pu guider l’IA pour qu’elle fournisse des réponses plus précises et plus pertinentes. Il s’agissait non seulement de modifier la formulation des questions, mais aussi d’expérimenter différentes façons de structurer les requêtes pour obtenir les meilleures réponses possibles.

Les résultats ont été impressionnants. L’IA était désormais capable de traiter un large éventail de requêtes avec une grande précision, même lorsque les questions étaient ouvertes ou nécessitaient une compréhension approfondie du contexte. Par exemple, à la question « Comment prendre les décisions les plus importantes de votre vie ? », l’IA a fourni une réponse complète et perspicace. l’IA a fourni une réponse complète et perspicace, en s’appuyant sur une variété de sources et de perspectives pour fournir une réponse bien équilibrée.

Ce succès est l’aboutissement de centaines d’heures de travail et d’innombrables expériences. Il a démontré qu’avec la bonne combinaison de technologie et de raffinement, il était possible de créer une IA capable non seulement de stocker et de récupérer des informations de manière efficace, mais aussi d’interagir avec elles de manière significative. Le développement des assistants GPT à l’aide du modèle 4o a marqué le moment où l’IA de Fabrice s’est vraiment imposée, atteignant le niveau de sophistication et de précision que j’avais envisagé dès le départ. L’API GPT Assistants a ensuite été intégrée à mon blog pour permettre aux utilisateurs finaux d’interagir avec Fabrice AI de la manière dont vous le voyez sur le blog en ce moment.

Réflexion sur le voyage

Le processus de développement de Fabrice AI a mis en évidence la complexité du travail avec l’IA, en particulier lorsqu’il s’agit de comprendre et de contextualiser l’information. Cela m’a appris qu’il n’y a pas de raccourcis dans le développement de l’IA – chaque étape, chaque itération et chaque expérience est une partie nécessaire du voyage vers la création de quelque chose de vraiment efficace.

Pour l’avenir, je suis enthousiaste à l’idée de continuer à affiner et à développer Fabrice AI. Comme mentionné dans le dernier billet, je vais revoir les questions posées pour compléter la base de connaissances là où il y a des lacunes. J’espère aussi sortir une version interactive qui me ressemble et à qui vous pouvez parler.

>
This site is registered on wpml.org as a development site. Switch to a production site key to remove this banner.