LLM et apprentissage en temps réel

LLM et apprentissage en temps réel

Utilisateur : « ChatGPT, qui a gagné la coupe du monde en 2022 ? »
ChatGPT : « Je suis désolé, mais ma dernière mise à jour de connaissances date de septembre 2021, ce qui signifie que je n’ai pas d’informations sur les événements survenus après cette date. »

On a tous été confrontés un jour ou l’autre à ce problème. Heureusement Claire Nouet, co-fondatrice de Pathway, a la solution. Et c’est le sujet de cet article.

A propos de Pathway

Pathway développe une technologie d’intelligence artificielle en temps réel. L’apprentissage en temps réel est rendu possible par un moteur de traitement de données, qui alimente les larges modèles de langage et les modèles d’apprentissage automatique.

Ces modèles sont automatiquement mis à jour. L’équipe, dirigée par Zuzanna Stamirowska, est composée d’experts de premier plan dans le domaine de l’intelligence artificielle. Parmi eux figurent le CTO Jan Chorowski, co-auteur de Geoff Hinton et Yoshua Bengio, ainsi que le Business Angel Lukasz Kaiser (OpenAI), co-auteur de Tensor Flow et également connu comme le « T » dans ChatGPT.

Les larges modèles de langage (LLM) sont la première technologie ayant abouti commercialement qui soit capable de transformer des volumes importants de données d’apprentissage, permettant à une machine d’agir en imitant ce qu’elle a vu dans les données.

Les LLMs sont entraînés sur des données statiques, ce qui rend l’utilisation d’un contexte obligatoire pour pouvoir prendre en compte des informations nouvelles ou corrigées.

La taille du contexte étant limitée, il est important de n’inclure que les informations les plus pertinentes lors d’une requête, ce qui rend l’utilisation des bases de données vectorielles intéressante.

Dans cet article, on explique les notions de contexte et on présente une approche vectorielle permettant de contourner ces effets et améliorer les sorties proposées.

Les LLMs et la délicate gestion des mises à jour

Les modèles d’apprentissage automatique qui ont été entrainés sur des bases statiques ne peuvent pas s’adapter à des changements arrivant en temps réel.

En effet, en raison de la complexité de la gestion des données temps réel, les modèles d’apprentissage automatique sont généralement entraînés sur des données statiques, y compris les LLMs tels que GPT-4 (un des modèles utilisés par ChatGPT).

Cela signifie que leur connaissance est limitée à un moment donné dans le passé.

Contrairement aux humains, les machines ne sont pas dans un état d’apprentissage continu et ne peuvent donc pas « oublier » de manière itérative les informations qui leur ont été enseignées précédemment lorsqu’elles ne sont plus à jour ou si elles s’avèrent inexactes.

Il est extrêmement difficile de concevoir des systèmes efficaces qui combinent à la fois les flux de données historiques et ceux des données en continu.

L’exercice est devenu encore plus complexe depuis l’entrée en scène de l’intelligence artificielle générative qui nécessite un apprentissage rapide et sécurisé du contexte afin d’apporter de la valeur et de garantir la confiance des utilisateurs. 

Le fine-tuning ne suffit pas

Le fine-tuning est la spécialisation d’un modèle pré-entraîné grâce à un entraînement superficiel sur des données additionnelles et spécifiques à un problème donné.

Le fine-tuning permet de personnaliser un modèle et de lui faire prendre en compte des mises à jour dont le modèle initial n’avait pas connaissance.

Néanmoins cette technique d’apprentissage souffre du même souci que l’entraînement standard d’un modèle : elle se base sur un ensemble de données statiques, ce qui rend difficile une mise à jour en temps réel, et elle ne permet pas d’oublier des informations.

Une “fake news” qui serait retirée de l’ensemble des documents d’entraînement ne serait pas oubliée par le modèle pour autant. Il faudrait refaire le fine-tuning depuis le modèle d’origine à chaque requête, ce qui est coûteux.

Le contexte : un facteur clé

Les LLM sont entraînés sur des données statiques. Lorsqu’il est nécessaire d’inclure de nouvelles connaissances qui n’ont pas été “vues” par un LLM au cours de son entraînement, la solution consiste à introduire des connaissances nouvelles dans le contexte du LLM.

Cela signifie intégrer ces informations nouvelles dans la question (le “prompt”). Le LLM utilise ensuite ces connaissances dans leur contexte.

Les LLM apprennent bien avec des connaissances “In-context » et l’étendue des choses qu’ils peuvent analyser de cette manière est étonnamment grande.

Les défis liés à l’apport de nouvelles connaissances à un LLM 

Un LLM n’a aucun moyen de transférer les connaissances de son contexte dans sa « mémoire à long terme ». Ce que vous montrez au LLM est donc perdu à la fin de votre échange.

Par ailleurs, le contexte doit rester assez court, sous peine de voir le LLM se comporter de manière étrange.

Alors qu’un modèle LLM pré-entraîné pèse des dizaines de gigaoctets, son contexte est limité à quelques milliers de tokens qui peuvent être introduits pendant la discussion. Cela correspond au mieux à quelques pages de texte. 

De fait, déterminer les informations les plus récentes et les plus exactes à présenter à un LLM dans son contexte est devenu l’un des véritables défis de la création d’applications d’intelligence artificielle en entreprise.

Gérer le contexte en temps réel

L’un des principaux problèmes à résoudre pour certains besoins métier est de construire des systèmes capables de traiter l’information de manière intelligente et en temps réel, par exemple pour assembler, traiter et enrichir les données.

Cela inclut la recherche de documents, pour retrouver des bribes d’informations pertinentes parmi des milliards de documents qui traînent dans les entrepôts de données : textes, PDF, wikis internes, courriels, messages sur Teams ou flux de données circulant dans les systèmes de l’entreprise.

Une gestion du contexte en temps réel ouvre la porte à de nombreux cas d’usage :

  • Pouvoir poser des questions à un LLM en utilisant une base de connaissances (privée ou non) fréquemment mise à jour.
  • Obtenir des données structurées en direct à partir de flux temps réel de documents.
  • Surveiller les flux d’informations en temps réel à l’aide d’un LLM : actualités et réseaux sociaux, détection de fake news, perturbations des transports…

Supposons que vous récupériez des mails dans un fil de discussion, ainsi que des courriels sémantiquement liés à celui-ci. Par exemple, si quelqu’un écrit « Comment avez-vous pu gâcher cela ? », vous ne voulez pas d’exemples sémantiquement liés à « gâcher », vous voulez des documents sémantiquement liés au gâchis (« cela »). Vous devez donc combiner différents types de raisonnement, ce qu’il est difficile de faire dans une base de données vectorielle.

Les base de données vectorielles – une nécessité ?

Malgré son entraînement poussé, GPT-4 peut ne pas reconnaître certains éléments spécifiques au contexte. Pour y parvenir, la solution consiste donc à ajouter des documents pertinents au contexte : lorsqu’un utilisateur envoie une requête, les documents qui lui sont les plus similaires sont récupérés et ajoutés au contexte du LLM.

C’est là que le rôle d’une base de données vectorielle devient crucial.

Les bases de données vectorielles permettent une recherche rapide des similarités dans de très grands ensembles de données.

Une base de données vectorielle repose sur un index vectoriel pour organiser et rechercher rapidement les documents.

En plus de l’index, la base de données fournit toutes les fonctionnalités d’une base de données classique. Ces fonctionnalités ont un coût, et il peut être judicieux de se contenter d’utiliser l’index au lieu de la base de données complète. 

Pour les applications LLM, recourir à des index vectoriels peut simplifier l’architecture par rapport aux bases de données vectorielles complètes en attachant les vecteurs au stockage déjà existant. Le choix entre index et bases de données dépend des besoins spécifiques, de l’infrastructure existante et des exigences plus larges de l’entreprise.

Utiliser une base de données vectorielles complète ou uniquement des index vectoriels ? 

Les bases de données vectorielles sont utiles lorsque l’on a besoin de toutes les fonctionnalités d’une base de données complète, et quand une ou plusieurs des conditions suivantes sont réunies :

  • Vous avez un besoin spécifique de travailler avec des données vectorielles à grande échelle. 
  • Vous créez une application autonome spécialement conçue pour les vecteurs
  • Vous ne prévoyez pas d’utiliser vos données stockées dans d’autres types d’applications.

Les index vectoriels sont utiles lorsqu’on a besoin uniquement d’un index auquel on va pouvoir rajouter les opérations spécifiques au cas d’usage envisagé (ce qui donnera une solution plus rapide d’exécution), et que l’une ou plusieurs des conditions suivantes sont réunies : 

  • Vous ne voulez pas faire confiance à une nouvelle technologie pour le stockage de vos données
  • Votre stockage existant est facile d’accès depuis Python.
  • Votre recherche de similarité n’est qu’une capacité parmi d’autres besoins de BI et de bases de données plus vastes. 
  • Vous avez besoin de la possibilité d’attacher des vecteurs (utilisés pour indexer) aux documents existants.
  • Vous avez besoin d’une façon unifiée de traiter les pipelines pour votre équipe d’ingénierie des données.
  • Vous avez besoin de structures d’index et de graphes sur les données pour vous aider dans vos applications LLM et avoir des pipelines pour vos LLM en production. 
  • Vous avez besoin d’une sortie augmentée ou d’un contexte augmenté provenant d’autres sources
  • Vous voulez créer des règles à partir de votre corpus qui peuvent s’appliquer à vos données transactionnelles.
Zoom sur les bases de données vectorielles

Une base de données vectorielle stocke les données sous forme de vecteurs numériques dans un espace de coordonnées. C’est avec ces coordonnées que seront calculées les similarités entre les documents. 

Les vecteurs les plus proches représentent les points de données les plus similaires. Le choix de la similarité (cosinus, Jaccard, etc.) est donc important car c’est la similarité qui déterminera les documents retournés lors d’une recherche.

Contrairement aux bases de données relationnelles, les bases de données vectorielles sont optimisées pour les recherches de similarités plutôt que pour les requêtes ou transactions complexes. L’extraction de vecteurs similaires prend quelques millisecondes au lieu de quelques minutes, même pour des milliards de points de données.

Les bases de données vectorielles construisent des index pour interroger efficacement les vecteurs en fonction de leur proximité. Cette méthode est quelque peu analogue à celle utilisée par les moteurs de recherche textuelle pour indexer les documents en vue d’une recherche rapide.

Simplifier l’architecture tout en améliorant le contexte

Une solution comme Pathway s’adapte automatiquement aux changements et constitue ainsi un outil efficace et performant pour l’indexation de documents en temps réel et la réponse aux requêtes.

Une fois que le corpus est pré-traité et l’index créé, Pathway détecte automatiquement tout changement dans le répertoire des documents et met à jour l’index vectoriel en conséquence.

Cette réactivité en temps réel garantit que les réponses de l’application sont toujours basées sur les informations les plus récentes et les plus pertinentes disponibles. 

L’architecture de l’application LLM App de Pathway repose sur le stockage de documents existant dans l’entreprise – aucune base de données vectorielle n’est nécessaire, grâce à son index vectoriel intégré en mémoire, qui s’adapte automatiquement aux volumes de requêtes, et peut-être persistant en cas de besoin.

Elle réduit également la complexité et les coûts de l’infrastructure, tout en garantissant la synchronisation avec le corpus de documents.

Conclusion

La recherche vectorielle offre aux développeurs de nouvelles possibilités. Au fur et à mesure que les modèles et les techniques s’améliorent, il faudra désormais s’attendre à ce que les bases de données vectorielles ou les index vectoriels fassent partie intégrante de la stack d’applications.