Contexte long

Gemini 1.5 Flash est fourni avec une fenêtre de contexte d'un million de jetons, et Gemini 1.5 Pro est fourni avec une fenêtre de contexte de deux millions de jetons. Auparavant, les grands modèles de langage (LLM) étaient considérablement limités par la quantité de texte (ou de jetons) pouvant être transmise au modèle en même temps. La grande fenêtre de contexte de Gemini 1.5, avec une récupération presque parfaite (> 99 %), déverrouille de nombreux nouveaux cas d'utilisation et paradigmes pour les développeurs.

Le code que vous utilisez déjà pour des cas comme la génération de contenu ou les entrées multimodales fonctionnera directement avec un contexte long.

Tout au long de ce guide, vous découvrirez brièvement les principes de base de la fenêtre de contexte, comment les développeurs doivent envisager le contexte long, divers cas d'utilisation réels pour le contexte long et les moyens d'optimiser l'utilisation de ce type de contexte.

Qu'est-ce qu'une fenêtre de contexte ?

La manière de base d'utilisation des modèles Gemini 1.5 consiste à transmettre des informations (contexte) au modèle, qui générera ensuite une réponse. Une analogie pour cette fenêtre de contexte est la mémoire à court terme. Une quantité limitée d'informations peut être stockée dans la mémoire à court terme d'une personne, et il en va de même pour les modèles génératifs.

Pour en savoir plus sur le fonctionnement des modèles, consultez notre guide sur les modèles génératifs.

Premiers pas avec un contexte long

La plupart des modèles génératifs créés au cours des dernières années ne pouvaient traiter que 8 000 jetons à la fois. Les modèles plus récents ont permis d'aller plus loin en acceptant 32 000 jetons ou 128 000 jetons. Gemini 1.5 est le premier modèle capable d'accepter un million de jetons, et désormais 2 millions de jetons avec Gemini 1.5 Pro.

En pratique, 1 million de jetons ressemblerait à ceci :

  • 50 000 lignes de code (avec 80 caractères par ligne)
  • Tous les SMS que vous avez envoyés au cours des cinq dernières années
  • 8 romans anglais de longueur moyenne
  • Transcriptions de plus de 200 épisodes de podcast de durée moyenne

Même si les modèles peuvent intégrer de plus en plus de contexte, une grande partie des connaissances conventionnelles sur l'utilisation de grands modèles de langage suppose cette limitation inhérente au modèle, ce qui n'est plus le cas depuis 2024.

Voici quelques stratégies courantes permettant de gérer la limitation des petites fenêtres de contexte :

  • Supprimer arbitrairement les anciens messages/textes de la fenêtre de contexte à mesure que de nouveaux textes arrivent
  • Résumer le contenu précédent et le remplacer par le résumé lorsque la fenêtre de contexte est sur le point d'être pleine
  • Utiliser l'approche RAG avec la recherche sémantique pour transférer des données hors de la fenêtre de contexte et vers une base de données vectorielle
  • Utiliser des filtres déterministes ou génératifs pour supprimer certains textes/caractères des requêtes afin d'enregistrer des jetons

Bien que beaucoup de ces méthodes restent pertinentes dans certains cas, le point de départ par défaut consiste à placer tous les jetons dans la fenêtre de contexte. Étant donné que les modèles Gemini 1.5 ont été conçus avec une grande fenêtre de contexte, ils sont beaucoup plus capables de procéder à l'apprentissage en contexte. Par exemple, avec uniquement des documents pédagogiques (une grammaire de référence de 500 pages, un dictionnaire et environ 400 phrases parallèles supplémentaires) fournis en contexte, Gemini 1.5 Pro et Gemini 1.5 Flash sont capables d'apprendre à traduire de l'anglais vers le kalamang (une langue papoue parlée par moins de 200 personnes et donc presque sans présence en ligne) avec une qualité semblable à celle d'une personne ayant appris à partir des mêmes ressources.

Cet exemple montre comment commencer à réfléchir à ce qu'il est possible de faire avec un contexte long et les fonctionnalités d'apprentissage en contexte de Gemini 1.5.

Cas d'utilisation de contexte long

Bien que le cas d'utilisation standard pour la plupart des modèles génératifs reste l'entrée textuelle, la famille de modèles Gemini 1.5 permet un nouveau paradigme de cas d'utilisation multimodaux. Ces modèles peuvent comprendre de manière native du texte, de la vidéo, de l'audio et des images. Ils sont accompagnés de l'API Vertex AI pour Gemini qui accepte les types de fichiers multimodaux pour plus de commodité.

Texte long

Le texte s'est avéré être la couche d'intelligence qui sous-tend une grande partie de l'essor autour des LLM. Comme indiqué précédemment, la plupart des limites pratiques des LLM étaient dues à l'absence d'une fenêtre de contexte suffisamment grande pour effectuer certaines tâches. Cela a conduit à l'adoption rapide de la génération augmentée par récupération (RAG) et d'autres techniques qui fournissent au modèle des informations contextuelles pertinentes de manière dynamique. Désormais, avec des fenêtres de contexte de plus en plus grandes (jusqu'à 2 millions de jetons sur Gemini 1.5 Pro), de nouvelles techniques deviennent disponibles, ouvrant la voie à de nouveaux cas d'utilisation.

Voici quelques cas d'utilisation émergents et standards du contexte long basé sur du texte :

  • Résumer de grands corpus de texte
    • Les options de synthèse précédentes avec des modèles de contexte plus petits nécessiteraient une fenêtre glissante ou une autre technique pour conserver l'état des sections précédentes à mesure que de nouveaux jetons sont transmis au modèle.
  • Questions et réponses
    • Auparavant, cela n'était possible qu'avec l'approche RAG, en raison de la quantité limitée de contexte et du faible rappel factuel des modèles.
  • Workflows d'agents
    • Le texte est essentiel pour que les agents conservent un état de ce qu'ils ont accompli et de ce qu'ils doivent faire. Un manque d'informations sur le monde et sur les objectifs des agents limite leur fiabilité.

L'apprentissage en contexte "multi-shot" est l'une des fonctionnalités les plus remarquables offertes par les modèles de contexte longs. Les recherches ont montré que l'utilisation du paradigme commun "one-shot" ou "multi-shot", où le modèle reçoit un ou plusieurs exemples d'une tâche, et les fait évoluer jusqu'à des centaines, des milliers, voire des centaines de milliers d'exemples, peut entraîner de nouvelles capacités pour le modèle. Cette approche "multi-shot" a également montré des performances comparables à celles des modèles qui ont été affinés pour une tâche spécifique. Pour les cas d'utilisation où les performances d'un modèle Gemini ne sont pas encore suffisantes pour un déploiement en production, vous pouvez essayer l'approche "multi-shot". Comme vous pourrez le découvrir plus tard dans la section sur l'optimisation du contexte long, la mise en cache de contexte rend ce type de charge de travail à jetons d'entrée élevés beaucoup plus économique et avec une latence encore plus faible dans certains cas.

Vidéo longue

L'utilité du contenu vidéo a longtemps été limitée par le manque d'accessibilité du support lui-même. Il était difficile de parcourir le contenu, les transcriptions ne parviennent souvent pas à capturer les nuances d'une vidéo, et la plupart des outils ne traitent pas les images, le texte et l'audio simultanément. Avec Gemini 1.5, les fonctionnalités textuelles à contexte long se traduisent par la capacité à raisonner et à répondre aux questions sur les entrées multimodales avec des performances soutenues. Lors des tests effectués sur une vidéo avec du contenu difficile à trouver, Gemini 1.5 Flash a obtenu un rappel de plus de 99,8 % de la vidéo dans la fenêtre de contexte avec un million de jetons. De son côté, Gemini 1.5 Pro a atteint des performances de pointe sur le benchmark Video-MME.

Voici quelques cas d'utilisation émergents et standards du contexte long basé sur de la vidéo :

  • Questions et réponses sur la vidéo
  • Mémoire vidéo, comme illustré avec le projet Astra de Google
  • Sous-titrage vidéo
  • Systèmes de recommandation vidéo, en enrichissant les métadonnées existantes grâce à une nouvelle compréhension multimodale
  • Personnalisation des vidéos, en examinant un corpus de données et des métadonnées vidéo associées, puis en supprimant les parties des vidéos qui ne sont pas pertinentes pour le lecteur
  • Modération de contenu vidéo
  • Traitement des vidéos en temps réel

Lorsque vous travaillez avec des vidéos, il est important de tenir compte de la façon dont les vidéos sont traitées en jetons, car cela affecte la facturation et les limites d'utilisation. Pour en savoir plus sur les requêtes avec des fichiers vidéo, consultez le guide des requêtes.

Audio long

Les modèles Gemini 1.5 étaient les premiers grands modèles de langage multimodaux natifs pouvant comprendre du contenu audio. Auparavant, le workflow de développeur classique impliquait l'association de plusieurs modèles spécifiques à un domaine, tels qu'un modèle de reconnaissance vocale et un modèle texte-vers-texte, afin de traiter le contenu audio. Cela entraînait une latence supplémentaire en raison des multiples requêtes aller-retour nécessaires, et une baisse des performances, généralement attribuée aux architectures déconnectées de la configuration à plusieurs modèles.

Lors des évaluations standards d'un audio avec du contenu difficile à trouver, Gemini 1.5 Pro est capable de trouver l'audio masqué dans 100 % des tests et Gemini 1.5 Flash dans 98,7 % des tests. Gemini 1.5 Flash peut accepter jusqu'à 9,5 heures d'audio dans une seule requête, et Gemini 1.5 Pro peut accepter jusqu'à 19 heures d'audio grâce à la fenêtre de contexte de 2 millions de jetons. De plus, sur un ensemble de test d'extraits audio de 15 minutes, Gemini 1.5 Pro archive un taux d'erreur sur les mots (WER) d'environ 5,5 %, ce qui est bien inférieur à celui des modèles de reconnaissance vocale spécialisés, sans la complexité supplémentaire de la segmentation et du prétraitement des entrées.

Voici quelques cas d'utilisation émergents et standards du contexte audio :

  • Transcription et traduction en temps réel
  • Questions et réponses sur un podcast/une vidéo
  • Transcription et résumé des réunions
  • Assistants vocaux

Pour en savoir plus sur les requêtes avec des fichiers audio, consultez le guide des requêtes.

Optimisations de contexte long

L'optimisation principale lorsque vous travaillez avec un contexte long et les modèles Gemini 1.5 consiste à utiliser la mise en cache du contexte. Au-delà de l'impossibilité de traiter de nombreux jetons dans une seule requête auparavant, l'autre contrainte principale était le coût. Si vous disposez d'une application de type "discuter avec vos données" où un utilisateur importe 10 fichiers PDF, une vidéo et des documents de travail, vous auriez dû utiliser un outil/framework de génération augmentée par récupération (RAG) plus complexe afin de traiter ces requêtes et de payer un montant important pour les jetons déplacés dans la fenêtre de contexte. Vous pouvez désormais mettre en cache les fichiers importés par l'utilisateur et payer pour les stocker à l'heure. Le coût d'entrée/sortie par requête est inférieur au coût d'entrée/sortie standard. Par conséquent, si l'utilisateur discute suffisamment avec ses données, cela représente une économie considérable pour vous en tant que développeur.

Limites de contexte long

Dans différentes sections de ce guide, nous avons expliqué comment les modèles Gemini 1.5 obtiennent des performances élevées lors de différents tests de récupération de type "aiguille dans une botte de foin". Ces tests considèrent la configuration la plus élémentaire, dans laquelle vous recherchez une seule aiguille. Si vous recherchez plusieurs "aiguilles" ou informations spécifiques, le modèle ne fonctionne pas avec la même précision. Les performances peuvent varier considérablement en fonction du contexte. Il est important de prendre en compte ce point, car il existe un compromis inhérent entre la récupération des bonnes informations et le coût. Vous pouvez obtenir des performances à hauteur de 99 % sur une seule requête, mais vous devez payer le coût du jeton d'entrée chaque fois que vous envoyez cette requête. Par conséquent, pour récupérer 100 informations, si vous avez besoin de performances à 99 %, vous devrez probablement envoyer 100 requêtes. C'est un bon exemple de cas où la mise en cache du contexte peut réduire considérablement les coûts associés à l'utilisation des modèles Gemini tout en maintenant des performances élevées.

Étape suivante