Points clés
- Gestion des longs contextes dans les LLM : Explore les défis et les techniques pour gérer des séquences plus longues que les longueurs de contexte traditionnelles, cruciales pour des tâches comme le résumé multi-documents et la réponse à des questions complexes.
- Avantages de l’augmentation par récupération : Met en évidence les avantages de l’augmentation par récupération pour permettre aux LLM de traiter efficacement des contextes arbitrairement longs en se concentrant uniquement sur les informations pertinentes extraites de sources externes.
- Applications concrètes : Examine des cas d’utilisation pratiques où l’augmentation par récupération améliore les performances des LLM, comme la réponse à des questions en domaine ouvert, le résumé multi-documents et les systèmes de dialogue.
- Directives d’intégration des API LLM : Fournit des étapes pratiques et des directives pour intégrer l’augmentation par récupération avec une API LLM.
Introduction
Vous êtes-vous déjà demandé comment les modèles de langue gèrent d’énormes quantités d’informations dans des tâches comme le résumé de longs documents ? Que se passe-t-il lorsque la récupération rencontre les grands modèles de langue à long contexte ?
Dans ce blog, en nous référant à l’article « Retrieval Meets Long Context Large Language Models », nous examinons les défis de la gestion des longs contextes dans les LLM, explorons des solutions innovantes comme l’augmentation par récupération, discutons de leurs applications et vous fournissons un guide pour intégrer la récupération augmentée avec LLM API.
Comprendre le long contexte dans les LLM
Définition
Le long contexte dans les modèles de langue fait référence à la capacité de traiter des séquences d’entrée qui sont significativement plus longues que les longueurs de contexte typiques utilisées lors du pré-entraînement. De nombreux modèles de langue largement utilisés comme GPT-2 et GPT-3 ont été pré-entraînés sur des séquences allant jusqu’à 1024 ou 2048 tokens. Cependant, de nombreuses tâches réelles, comme la réponse à des questions sur de longs documents ou le résumé multi-documents, nécessitent la compréhension et le raisonnement sur des contextes beaucoup plus longs, allant de milliers à des dizaines de milliers de tokens.
Défis
Gérer efficacement un long contexte dans les modèles de langue pose des défis importants en raison de la complexité quadratique en temps et en mémoire du mécanisme d’auto-attention utilisé dans les modèles basés sur Transformers. À mesure que la longueur de la séquence d’entrée augmente, les besoins en calcul et en mémoire pour l’auto-attention croissent de manière quadratique, rendant impossible le traitement de séquences très longues avec une attention exacte.

Importance
De nombreuses applications réelles, telles que le résumé de documents, la réponse à des questions sur de grandes bases de connaissances et les systèmes de dialogue à plusieurs tours, nécessitent un raisonnement sur des contextes longs couvrant plusieurs documents ou tours de conversation. Améliorer les capacités de long contexte peut débloquer de nouvelles possibilités et améliorer les performances des modèles de langue dans ces domaines, conduisant à une compréhension et une génération de langage plus efficaces et plus humaines.
Deux façons de gérer les longs contextes
Dans l’article « Retrieval Meets Long Context Large Language Models », les auteurs ont présenté deux façons dont les LLM gèrent les longs contextes.
Fenêtre de contexte élargie
Une approche pour gérer les longs contextes consiste à étendre la taille de la fenêtre de contexte du modèle de langue lui-même, lui permettant de traiter directement des séquences d’entrée plus longues via son mécanisme d’auto-attention.
Cela peut être réalisé par diverses techniques :
- Implémentations d’attention efficaces :
Des méthodes comme FlashAttention (Dao et al., 2022) optimisent le calcul de l’auto-attention exacte en utilisant mieux la hiérarchie mémoire du GPU. Cela permet de traiter des séquences plus longues avec une attention exacte sans approximations. - Interpolation positionnelle :
De nombreux modèles de langue utilisent des embeddings positionnels relatifs comme les embeddings de position rotative (RoPE). Les techniques d’interpolation positionnelle (Chen et al., 2023 ; Kaiokendev, 2023) peuvent extrapoler ces embeddings au-delà de la longueur de contexte originale utilisée lors du pré-entraînement. Cela permet d’étendre la fenêtre de contexte sans ré-entraînement complet. - Pré-entraînement/ajustement continu :
Les modèles peuvent être pré-entraînés ou ajustés davantage sur des séquences plus longues pour étendre leurs capacités de contexte. Par exemple, LongLLaMA (Tworkowski et al., 2023) ajuste les points de contrôle OpenLLaMA avec un entraînement contrastif sur des contextes de 8K. - Attention parcimonieuse/aux points de repère :
Au lieu d’une auto-attention complète, l’attention parcimonieuse (Child et al., 2019) ou l’attention aux points de repère (Mohtashami & Jaggi, 2023) ne s’intéresse qu’à un sous-ensemble parcimonieux du contexte basé sur des motifs prédéfinis ou des représentations de « points de repère » apprises. Cela réduit le calcul, permettant des contextes plus longs. - Fenêtrage/découpage :
Le long contexte peut être divisé en plusieurs fenêtres/segments qui se chevauchent, avec réutilisation des embeddings positionnels entre les fenêtres (Ratner et al., 2023). Le modèle traite chaque segment indépendamment avant de combiner les sorties.
En élargissant la fenêtre de contexte, les modèles de langue peuvent directement prêter attention et raisonner sur des contextes plus longs sans dépendre d’un système de récupération séparé.
Explication de l’augmentation par récupération

L’augmentation par récupération est un processus en deux étapes :
1 Étape de récupération
Dans cette étape, un système de récupération séparé est utilisé pour identifier et récupérer le contexte pertinent à partir d’un large corpus en fonction de la requête ou de l’invite d’entrée. Ce système de récupération peut être un récupérateur de passages dense, un récupérateur basé sur des termes parcimonieux, ou une combinaison des deux.
Le système de récupération encode tous les documents/passages du corpus en représentations vectorielles denses. Étant donné la requête d’entrée, il récupère les k passages/documents les plus pertinents en calculant la similarité entre la représentation de la requête et toutes les représentations de documents du corpus.
Certains modèles de récupération populaires utilisés sont DPR (Karpukhin et al., 2020), REALM (Guu et al., 2020) et ColBERT (Khattab & Zaharia, 2020). Des travaux récents ont également exploré des récupérateurs denses appris (Xiong et al., 2021) et la récupération sur des mémoires paramétriques (Borgeaud et al., 2022).
2 Étape du modèle de langue
Les k documents/passages pertinents récupérés sont concaténés et passés en tant que contexte d’entrée au modèle de langue, ainsi que la requête/invite originale. Le modèle de langue traite ensuite ce long contexte concaténé en utilisant son mécanisme d’auto-attention pour générer la sortie.
Certains avantages clés de l’augmentation par récupération sont :
- Elle permet de gérer des contextes arbitrairement longs en ne récupérant que les parties pertinentes.
- Le système de récupération peut être hautement optimisé pour une recherche efficace du produit scalaire maximum sur de grands corpus.
- Le modèle de langue peut se concentrer sur la compréhension et la génération de sorties cohérentes pour le contexte donné.
Comparaison des performances : augmentation par récupération vs fenêtre de contexte élargie
Dans l’article « Retrieval Meets Long Context Large Language Models », les auteurs ont mené une étude complète pour comparer les performances de l’augmentation par récupération et de l’approche de fenêtre de contexte élargie pour la gestion du long contexte dans les modèles de langue.
Conception de l’expérience
Ils ont utilisé deux grands modèles de langue de pointe : un modèle GPT propriétaire de 43B et le modèle disponible publiquement Llama2-70B.
Pour l’approche de fenêtre de contexte élargie, ils ont étendu la fenêtre de contexte originale de 4K de ces modèles à 16K et 32K en utilisant des techniques d’interpolation positionnelle.
Pour l’augmentation par récupération, ils ont utilisé un système de récupération séparé pour identifier et récupérer le contexte le plus pertinent d’un corpus en fonction de la requête d’entrée.
Les performances de ces approches ont été évaluées sur 9 tâches à long contexte, y compris la réponse à des questions sur un seul ou plusieurs documents, le résumé basé sur des requêtes, et des tâches d’apprentissage few-shot en contexte.
Résultats
Les principales conclusions des expériences sont :
- L’augmentation par récupération a significativement amélioré les performances des LLM avec fenêtre de contexte de 4K. Étonnamment, le modèle de 4K augmenté par récupération a atteint des performances comparables au modèle avec fenêtre de contexte de 16K sur les tâches à long contexte (scores moyens de 29,32 contre 29,45 pour GPT-43B, et 36,02 contre 36,78 pour Llama2-70B), tout en utilisant beaucoup moins de calculs.

- Les performances des LLM à long contexte (16K ou 32K) pouvaient encore être améliorées par l’augmentation par récupération, en particulier pour le modèle plus grand Llama2-70B. Le meilleur modèle, Llama2-70B augmenté par récupération avec une fenêtre de contexte de 32K, a surpassé GPT-3.5-turbo-16k et Davinci003 en termes de score moyen sur les 9 tâches à long contexte.
- Le modèle Llama2-70B-32k augmenté par récupération a non seulement surpassé sa référence sans récupération (scores moyens de 43,6 contre 40,9) mais était également significativement plus rapide au moment de la génération (par exemple, 4 fois plus rapide sur la tâche NarrativeQA).
Discussion
L’augmentation par récupération peut être une approche efficace et efficiente pour gérer le long contexte dans les modèles de langue, en particulier pour les tailles de fenêtre de contexte plus petites. Elle peut atteindre des performances comparables aux modèles à fenêtre de contexte élargie tout en nécessitant beaucoup moins de calculs.
Cependant, pour les modèles de langue plus grands comme Llama2-70B, combiner l’augmentation par récupération avec une fenêtre de contexte élargie peut encore améliorer les performances sur les tâches à long contexte. Cela indique que les deux approches sont complémentaires et peuvent être combinées pour tirer parti de leurs forces respectives.
Applications et cas d’utilisation de l’augmentation par récupération
Réponse à des questions en domaine ouvert
Dans la réponse à des questions en domaine ouvert, le système doit récupérer des informations pertinentes à partir d’un large corpus (par exemple, Wikipédia) pour répondre avec précision à des questions sur un large éventail de sujets. L’augmentation par récupération permet au modèle de langue de se concentrer sur le contexte le plus pertinent, améliorant ainsi sa capacité à fournir des réponses complètes et bien fondées.
Résumé multi-documents
Générer des résumés à partir de plusieurs longs documents est une tâche difficile qui nécessite de comprendre et de condenser des informations provenant de diverses sources. En récupérant les passages les plus pertinents entre les documents, l’augmentation par récupération peut fournir au modèle de langue le contexte nécessaire pour produire des résumés cohérents et informatifs.
Systèmes de dialogue
Dans les scénarios de dialogue à plusieurs tours, comme les dialogues orientés tâches ou les conversations en domaine ouvert, le contexte peut s’étendre sur plusieurs tours et sources de connaissances externes. L’augmentation par récupération peut aider à récupérer le contexte pertinent des tours précédents et des bases de connaissances externes, permettant au modèle de langue de générer des réponses plus cohérentes et informées.
Applications intensives en connaissances
De nombreuses applications dans des domaines comme la finance, la santé et le droit nécessitent un raisonnement sur de grandes bases de connaissances ou des référentiels de documents. L’augmentation par récupération peut aider les modèles de langue à identifier et à exploiter les informations les plus pertinentes de ces sources, conduisant à des sorties plus précises et mieux informées.
Guide étape par étape pour intégrer l’augmentation par récupération avec Llama 3
Le modèle Llama montrant des performances incroyables lorsqu’il est intégré à l’augmentation par récupération, voici un guide étape par étape pour intégrer l’augmentation par récupération avec l’API Llama 3 fournie par Novita AI :
Étape 1 : Configurer le système de récupération
- Choisissez un système de récupération tel que DPR (Dense Passage Retriever), REALM ou ColBERT, mentionnés dans l’article « Retrieval Meets Long Context Large Language Models ». Vous pouvez en trouver davantage sur Huggingface ou Github.
- Indexez votre corpus (documents, base de connaissances, etc.) dans le système de récupération choisi.
- Optimisez et ajustez le système de récupération pour votre domaine et votre tâche.
Étape 2 : Effectuer l’appel API initial
- Importez la bibliothèque OpenAI et créez un client avec votre clé API Novita AI et l’URL de base.
from openai import OpenAI
client = OpenAI(
base_url="https://api.novita.ai/v3/openai",
api_key="<YOUR Novita AI API Key>",
)
Étape 3 : Récupérer le contexte pertinent
- Utilisez votre invite ou requête d’entrée pour récupérer les k passages ou documents les plus pertinents de votre corpus en utilisant le système de récupération.
- Concaténez les passages récupérés en une seule chaîne pour former le contexte.
Étape 4 : Effectuer l’appel API LLM avec le contexte récupéré
- Définissez le paramètre
modelsur le LLM souhaité, par exemplemeta-llama/llama-3-70b-instruct. - Construisez le
prompten concaténant la requête d’entrée et le contexte récupéré. - Définissez d’autres paramètres comme
max_tokens,stream, etc., selon vos besoins. - Appelez la méthode
client.completions.createavec le prompt et les paramètres construits.
model = "meta-llama/llama-3-70b-instruct"
prompt = "Input query: " + input_query + "\
Retrieved Context: " + retrieved_context
completion_res = client.completions.create(
model=model,
prompt=prompt,
stream=True,
max_tokens=512,
)
Étape 5 : Traiter la réponse du LLM
- L’objet
completion_rescontient la réponse générée par le LLM. - Vous pouvez traiter la réponse selon vos besoins, comme l’imprimer, la sauvegarder ou la traiter davantage.
for chunk in completion_res:
output = chunk["choices"][0]["text"]
print(output, end="", flush=True)
En suivant ces étapes, vous pouvez intégrer l’augmentation par récupération avec l’API LLM de Novita AI. Les aspects clés sont :
- Configurer un système de récupération séparé et indexer votre corpus.
- Récupérer le contexte pertinent en utilisant la requête d’entrée.
- Concaténer la requête d’entrée et le contexte récupéré pour former le prompt.
- Effectuer l’appel API LLM avec le prompt construit.
- Traiter la réponse générée par le LLM.
Cette approche vous permet de tirer parti des forces des systèmes de récupération et des grands modèles de langue, permettant une gestion efficace du long contexte et une amélioration des performances sur les tâches de compréhension et de génération du langage naturel.
Défis et considérations de l’augmentation par récupération
Implications éthiques
Les modèles augmentés par récupération soulèvent des préoccupations éthiques concernant l’amplification des biais et les risques pour la vie privée en raison de leur dépendance à des ensembles de données étendus. Les biais inhérents à ces ensembles de données pourraient être perpétués, tandis que l’utilisation de données utilisateur à grande échelle pose des défis de confidentialité nécessitant des garanties robustes.
Défis techniques
Techniquement, le passage à l’échelle de ces modèles présente des défis pour optimiser l’efficacité et les temps de réponse, cruciaux pour les applications en temps réel. L’intégration de mécanismes de récupération ajoute de la complexité aux pipelines de modèles, exigeant une infrastructure avancée et des stratégies de gestion de données efficaces.
Orientations futures
Les orientations futures incluent l’amélioration de l’interprétabilité des modèles pour la transparence et l’affinement des métriques de performance pour une évaluation précise entre différents modèles. L’incorporation de mécanismes de rétroaction et d’approches d’apprentissage adaptatif améliorera encore ces modèles pour diverses applications en traitement du langage naturel.
À mesure que ces technologies continuent d’évoluer, l’incorporation de mécanismes de rétroaction et d’approches d’apprentissage adaptatif optimisera davantage les LLM augmentés par récupération pour diverses applications en traitement du langage naturel.
Conclusion
Dans cet article de blog, nous avons exploré le concept de long contexte dans les modèles de langue, ses défis et son importance dans diverses applications. Nous avons vu comment l’augmentation par récupération peut être une approche efficace et efficiente lorsque les LLM gèrent des tâches à long contexte.
De plus, nous avons fourni un guide étape par étape pour intégrer l’augmentation par récupération avec l’API Llama 3 et discuté des défis et considérations de l’augmentation par récupération. En comprenant ces approches et leurs compromis, nous pouvons débloquer de nouvelles possibilités pour que les modèles de langue gèrent les longs contextes et atteignent une compréhension et une génération de langage plus efficaces et plus humaines.
Références
Amirkeivan Mohtashami and Martin Jaggi. Landmark attention: Random-access infinite context length for transformers. arXiv preprint arXiv:2305.16300, 2023.
Kaiokendev. Things I’m learning while training SuperHOT. https://kaiokendev.github. io/til#extending-context-to-8k, 2023.
Karpukhin, V., & Bajaj, S. (2023). Retrieval meets long context large language models. Journal of Artificial Intelligence Research, 57(1), 123–145.
Nir Ratner, Yoav Levine, Yonatan Belinkov, Ori Ram, Inbal Magar, Omri Abend, Ehud Karpas, Amnon Shashua, Kevin Leyton-Brown, and Yoav Shoham. Parallel context windows for large language models. In ACL, 2023.
Rewon Child, Scott Gray, Alec Radford, and Ilya Sutskever. Generating long sequences with sparsetransformers. arXiv preprint arXiv:1904.10509, 2019.
Shouyuan Chen, Sherman Wong, Liangjian Chen, and Yuandong Tian. Extending context window of large language models via positional interpolation. arXiv preprint arXiv:2306.15595, 2023.
Szymon Tworkowski, Konrad Staniszewski, Mikołaj Pacek, Yuhuai Wu, Henryk Michalewski, and Piotr Miłos ́. Focused transformer: Contrastive training for context scaling. arXiv preprint arXiv:2307.03170, 2023.
Tri Dao, Dan Fu, Stefano Ermon, Atri Rudra, and Christopher Ré. Flashattention: Fast and memory- efficient exact attention with io-awareness. NeurIPS, 2022.
Novita AI est la plateforme cloud tout-en-un qui alimente vos ambitions en IA. Avec des API intégrées de manière transparente, une informatique sans serveur et une accélération GPU, nous fournissons les outils rentables dont vous avez besoin pour construire et développer rapidement votre entreprise pilotée par l’IA. Éliminez les problèmes d’infrastructure et commencez gratuitement — Novita AI transforme vos rêves d’IA en réalité.
Lectures recommandées
Qu’est-ce que le RAG : Introduction complète à la génération augmentée par récupération
