Modèles et plateformes d’IA
Améliorer les modèles de langage augmentés de récupération : auto-raisonnement et augmentation adaptative pour les systèmes conversationnels
Deux nouvelles approches qui ont émergé dans ce domaine sont les cadres d’auto-raisonnement et l’augmentation adaptative de récupération pour les systèmes conversationnels. Dans cet article, nous allons nous plonger dans ces techniques innovantes et explorer comment elles poussent les limites de ce qui est possible avec les modèles de langage.
La promesse et les pièges des modèles de langage augmentés de récupération
Commençons par comprendre le concept de modèles de langage augmentés de récupération (RALM). L’idée de base derrière les RALM est de combiner les vastes connaissances et les capacités de compréhension du langage des modèles de langage pré-entraînés avec la capacité d’accéder et d’incorporer des informations externes à jour pendant l’inférence.
Voici une illustration simple de la façon dont un RALM de base pourrait fonctionner :
- Un utilisateur pose une question : “Quel a été le résultat des Jeux olympiques de 2024 ?”
- Le système récupère des documents pertinents à partir d’une base de connaissances externe.
- Le modèle de langage traite la question ainsi que les informations récupérées.
- Le modèle génère une réponse basée à la fois sur ses connaissances internes et sur les données externes.
Cette approche a montré un grand potentiel pour améliorer la précision et la pertinence des sorties des modèles de langage, en particulier pour les tâches qui nécessitent l’accès à des informations à jour ou à des connaissances spécifiques à un domaine. Cependant, les RALM ne sont pas sans défis. Deux problèmes clés avec lesquels les chercheurs sont aux prises sont :
- Fiabilité : Comment pouvons-nous nous assurer que les informations récupérées sont pertinentes et utiles ?
- Traçabilité : Comment pouvons-nous rendre le processus de raisonnement du modèle plus transparent et vérifiable ?
Des recherches récentes ont proposé des solutions innovantes à ces défis, que nous allons explorer en profondeur.
Auto-raisonnement : améliorer les RALM avec des trajectoires de raisonnement explicites
Ceci est l’architecture et le processus derrière les modèles de langage augmentés de récupération, en mettant l’accent sur un cadre appelé auto-raisonnement. Cette approche utilise des trajectoires pour améliorer la capacité du modèle à raisonner sur les documents récupérés.
Lorsqu’une question est posée, des documents pertinents sont récupérés et traités à travers une série d’étapes de raisonnement. Le mécanisme d’auto-raisonnement applique des processus de sélection et d’analyse de trajectoires pour filtrer et synthétiser les informations avant de générer la réponse finale. Cette méthode non seulement améliore la précision de la sortie mais également assure que le raisonnement derrière les réponses est transparent et traçable.
Dans les exemples fournis, tels que déterminer la date de sortie du film “Catch Me If You Can” ou identifier les artistes qui ont peint le plafond de la cathédrale de Florence, le modèle filtre efficacement à travers les documents récupérés pour produire des réponses précises et étayées par le contexte.
Ce tableau présente une analyse comparative de différents variants de modèles de langage, y compris les modèles LLaMA2 et d’autres modèles augmentés de récupération, sur des tâches telles que NaturalQuestions, PopQA, FEVER et ASQA. Les résultats sont divisés entre les références sans récupération et celles améliorées avec des capacités de récupération.
Cette image présente un scénario dans lequel un modèle de langage est chargé de fournir des suggestions en fonction des requêtes des utilisateurs, en montrant comment l’utilisation de connaissances externes peut influencer la qualité et la pertinence des réponses. Le diagramme met en évidence deux approches : l’une où le modèle utilise un extrait de connaissance et l’autre où il ne l’utilise pas. La comparaison souligne comment l’incorporation d’informations spécifiques peut adapter les réponses pour répondre mieux aux besoins de l’utilisateur, en fournissant une profondeur et une précision qui pourraient manquer dans un modèle purement génératif.
Une approche révolutionnaire pour améliorer les RALM est l’introduction de cadres d’auto-raisonnement. L’idée de base derrière cette méthode est d’utiliser les capacités propres du modèle de langage pour générer des trajectoires de raisonnement explicites, qui peuvent ensuite être utilisées pour améliorer la qualité et la fiabilité de ses sorties.
Commençons par décomposer les composants clés d’un cadre d’auto-raisonnement :
- Processus de conscience de la pertinence (RAP)
- Processus de sélection évidente (EAP)
- Processus d’analyse de trajectoire (TAP)
Processus de conscience de la pertinence (RAP)
Le RAP est conçu pour répondre à l’un des défis fondamentaux des RALM : déterminer si les documents récupérés sont vraiment pertinents par rapport à la question donnée. Voici comment cela fonctionne :
- Le système récupère un ensemble de documents potentiellement pertinents à l’aide d’un modèle de récupération (par exemple, DPR ou Contriever).
- Le modèle de langage est ensuite invité à juger de la pertinence de ces documents par rapport à la question.
- Le modèle génère explicitement des raisons expliquant pourquoi les documents sont considérés comme pertinents ou non pertinents.
Par exemple, étant donné la question “Quand la tour Eiffel a-t-elle été construite ?”, le RAP pourrait produire une sortie comme celle-ci :
Pertinent : Vrai
Raison de pertinence : Les documents récupérés contiennent des informations spécifiques sur les dates de construction de la tour Eiffel, y compris son début en 1887 et son achèvement en 1889.Ce processus aide à filtrer les informations non pertinentes dès le début, améliorant ainsi la qualité globale des réponses du modèle.
Processus de sélection évidente (EAP)
L’EAP va plus loin en demandant au modèle d’identifier et de citer des preuves spécifiques à partir des documents pertinents. Ce processus imite la façon dont les humains abordent une tâche de recherche, en sélectionnant des phrases clés et en expliquant leur pertinence. Voici à quoi pourrait ressembler la sortie de l’EAP :
Contenu cité : "La construction de la tour Eiffel a commencé le 28 janvier 1887 et s'est achevée le 31 mars 1889."
Raison de citation : Cette phrase fournit les dates exactes de début et de fin de la construction de la tour Eiffel, répondant directement à la question sur sa construction.En citant explicitement des sources et en expliquant la pertinence de chaque preuve, l’EAP améliore la traçabilité et l’interprétabilité des sorties du modèle.
Processus d’analyse de trajectoire (TAP)
Le TAP est l’étape finale du cadre d’auto-raisonnement, où le modèle consolide toutes les trajectoires de raisonnement générées dans les étapes précédentes. Il analyse ces trajectoires et produit un résumé concis ainsi qu’une réponse finale. La sortie du TAP pourrait ressembler à ceci :
Analyse : La tour Eiffel a été construite entre 1887 et 1889. La construction a commencé le 28 janvier 1887 et s'est achevée le 31 mars 1889. Ces informations sont étayées par plusieurs sources fiables qui fournissent des dates cohérentes pour la période de construction de la tour.
Réponse : La tour Eiffel a été construite de 1887 à 1889.
Ce processus permet au modèle de fournir à la fois une explication détaillée de son raisonnement et une réponse concise, répondant ainsi à différents besoins des utilisateurs.
Mise en œuvre de l’auto-raisonnement dans la pratique
Pour mettre en œuvre ce cadre d’auto-raisonnement, les chercheurs ont exploré diverses approches, notamment :
- L’utilisation de modèles de langage pré-entraînés avec des amorces soigneusement conçues
- L’ajustement fin des modèles de langage à l’aide de techniques efficaces en termes de paramètres comme QLoRA
- Le développement d’architectures neuronales spécialisées, telles que des modèles d’attention multi-tête
Chacune de ces approches a ses propres compromis en termes de performances, d’efficacité et de facilité de mise en œuvre. Par exemple, l’approche par amorces est la plus simple à mettre en œuvre mais peut ne pas toujours produire des résultats cohérents. L’ajustement fin offre un bon équilibre entre les performances et l’efficacité, tandis que les architectures spécialisées peuvent offrir les meilleures performances mais nécessitent plus de ressources computationnelles pour l’entraînement.
Voici un exemple simplifié de la façon dont vous pourriez mettre en œuvre le RAP en utilisant une approche par amorces avec un modèle de langage comme GPT-3 :
import openai
<p>def processus_de_conscience_de_la_pertinence(question, documents) :
prompt = f"""
Question : {question}
Documents récupérés :
{documents}
Tâche : Déterminer si les documents récupérés sont pertinents pour répondre à la question.
Format de sortie :
Pertinent : [Vrai/Faux]
Raison de pertinence : [Explication]
Votre analyse :
"""
<p>response = openai.Completion.create(
engine="text-davinci-002",
prompt=prompt,
max_tokens=150
)</p>
return response.choices[0].text.strip()
<p># Exemple d'utilisation
question = "Quand la tour Eiffel a-t-elle été construite ?"
documents = "La tour Eiffel est une tour en treillis de fer forgé sur le Champ de Mars à Paris, en France. Elle est nommée d'après l'ingénieur Gustave Eiffel, dont l'entreprise a conçu et construit la tour. Construite de 1887 à 1889 comme l'arc d'entrée de l'Exposition universelle de 1889, elle a été initialement critiquée par certains des principaux artistes et intellectuels de France pour son design, mais elle est devenue un symbole culturel mondial de la France."
<p>result = processus_de_conscience_de_la_pertinence(question, documents)
print(result)
Cet exemple démontre comment le RAP peut être mis en œuvre en utilisant une approche par amorces simple. Dans la pratique, des techniques plus sophistiquées seraient utilisées pour assurer la cohérence et gérer les cas limites.
Génération adaptative de récupération pour les systèmes conversationnels
Alors que le cadre d’auto-raisonnement se concentre sur l’amélioration de la qualité et de l’interprétabilité des réponses individuelles, une autre ligne de recherche a exploré la façon de rendre la génération de récupération plus adaptative dans le contexte des systèmes conversationnels. Cette approche, connue sous le nom de génération adaptative de récupération, vise à déterminer quand les connaissances externes doivent être utilisées dans une conversation et comment les incorporer de manière efficace.
L’idée clé derrière cette approche est que chaque tour de conversation n’a pas besoin d’une augmentation de connaissances externes. Dans certains cas, s’appuyer trop lourdement sur les informations récupérées peut conduire à des réponses peu naturelles ou trop verbales. Le défi est alors de développer un système capable de décider dynamiquement quand utiliser les connaissances externes et quand se fier aux capacités inhérentes du modèle.
Composants de la génération adaptative de récupération
Pour relever ce défi, les chercheurs ont proposé un cadre appelé RAGate, qui se compose de plusieurs composants clés :
- Un mécanisme de porte de connaissances binaire
- Un processus de conscience de la pertinence
- Un processus de sélection évidente
- Un processus d’analyse de trajectoire
Le mécanisme de porte de connaissances binaire
Le cœur du système RAGate est une porte de connaissances binaire qui décide si les connaissances externes doivent être utilisées pour un tour de conversation donné. Cette porte prend en compte le contexte de la conversation et, éventuellement, les extraits de connaissances récupérés pour prendre sa décision.
Voici une illustration simplifiée de la façon dont la porte de connaissances binaire pourrait fonctionner :
def porte_de_connaissances(contexte, connaissance_recuperee=None) : # Analyser le contexte et les connaissances récupérées # Retourner Vrai si les connaissances externes doivent être utilisées, Faux sinon pass <p>def generer_reponse(contexte, connaissance=None) : if porte_de_connaissances(contexte, connaissance) : # Utiliser la génération de récupération return generer_avec_connaissance(contexte, connaissance) else : # Utiliser la génération standard du modèle de langage return generer_sans_connaissance(contexte)
Ce mécanisme de porte de connaissances permet au système d’être plus flexible et plus conscient du contexte dans son utilisation des connaissances externes.
Mise en œuvre de RAGate
Cette image illustre le cadre RAGate, un système avancé conçu pour intégrer des connaissances externes dans les modèles de langage pour améliorer la génération de réponses. Cette architecture montre comment un modèle de langage de base peut être complété par du contexte ou des connaissances, soit par une entrée directe, soit en intégrant des bases de données externes pendant le processus de génération. Cette approche hybride, qui utilise à la fois les capacités du modèle interne et les données externes, permet au modèle de langage de fournir des réponses plus précises et plus pertinentes par rapport au contexte. Cette méthode hybride comble le fossé entre la puissance de calcul brute et l’expertise spécifique à un domaine.
Ceci présente des métriques de performance pour divers variants de modèles sous le cadre RAGate, qui se concentre sur l’intégration de la récupération avec un ajustement fin efficace en termes de paramètres (PEFT). Les résultats mettent en évidence la supériorité des modèles intégrant le contexte, en particulier ceux qui utilisent les embeddings ner-know et ner-source.
Les modèles RAGate-PEFT et RAGate-MHA démontrent des améliorations substantielles en termes de précision, de rappel et de score F1, soulignant les avantages de l’incorporation à la fois des contextes et des connaissances. Ces stratégies d’ajustement fin permettent aux modèles de performer plus efficacement sur des tâches intensives en connaissances, offrant ainsi une solution plus robuste et plus évolutive pour les applications du monde réel.
Pour mettre en œuvre RAGate, les chercheurs ont exploré plusieurs approches, notamment :
- L’utilisation de grands modèles de langage avec des amorces soigneusement conçues
- L’ajustement fin des modèles de langage à l’aide de techniques efficaces en termes de paramètres
- Le développement d’architectures neuronales spécialisées, telles que des modèles d’attention multi-tête
Chacune de ces approches a ses propres forces et faiblesses. Par exemple, l’approche par amorces est relativement simple à mettre en œuvre mais peut ne pas toujours produire des résultats cohérents. L’ajustement fin offre un bon équilibre entre les performances et l’efficacité, tandis que les architectures spécialisées peuvent offrir les meilleures performances mais nécessitent plus de ressources computationnelles pour l’entraînement.
Voici un exemple simplifié de la façon dont vous pourriez mettre en œuvre un système similaire à RAGate en utilisant un modèle de langage ajusté fin :
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
<p>class RAGate :
def __init__(self, nom_modele) :
self.tokenizer = AutoTokenizer.from_pretrained(nom_modele)
self.model = AutoModelForSequenceClassification.from_pretrained(nom_modele)</p>
<p>def doit_utiliser_connaissance(self, contexte, connaissance=None) :
inputs = self.tokenizer(contexte, connaissance or "", return_tensors="pt", truncation=True, max_length=512)
avec torch.no_grad() :
outputs = self.model(**inputs)
probabilites = torch.softmax(outputs.logits, dim=1)
return probabilites[0][1].item() > 0.5 # En supposant une classification binaire (0 : pas de connaissance, 1 : utiliser la connaissance)</p>
<p>class SystemeConversationnel :
def __init__(self, ragate, lm, retrieveur) :
self.ragate = ragate
self.lm = lm
self.retrieveur = retrieveur</p>
<p>def generer_reponse(self, contexte) :
connaissance = self.retrieveur.retrieve(contexte)
if self.ragate.doit_utiliser_connaissance(contexte, connaissance) :
return self.lm.generate_with_knowledge(contexte, connaissance)
else :
return self.lm.generate_without_knowledge(contexte)</p>
<p># Exemple d'utilisation
ragate = RAGate("chemin/vers/modele/ajuste")
lm = LanguageModel() # Votre modèle de langage préféré
retrieveur = KnowledgeRetriever() # Votre système de récupération de connaissances</p>
<p>systeme_conversationnel = SystemeConversationnel(ragate, lm, retrieveur)</p>
<p>contexte = "Utilisateur : Quel est le capital de la France ?\nSystème : Le capital de la France est Paris.\nUtilisateur : Dites-moi plus sur ses monuments célèbres."
reponse = systeme_conversationnel.generer_reponse(contexte)
print(reponse)</p>
Cet exemple démontre comment un système similaire à RAGate pourrait être mis en œuvre en pratique. La classe RAGate utilise un modèle ajusté fin pour décider si les connaissances externes doivent être utilisées, tandis que la classe SystemeConversationnel orchestre l’interaction entre la porte de connaissances, le modèle de langage et le système de récupération.
Défis et directions futures
Bien que les cadres d’auto-raisonnement et la génération adaptative de récupération montrent un grand potentiel, il existe encore plusieurs défis que les chercheurs s’efforcent de relever :
- Efficacité computationnelle : Les deux approches peuvent être intensives en termes de calcul, en particulier lorsqu’elles traitent de grandes quantités d’informations récupérées ou génèrent de longues trajectoires de raisonnement. L’optimisation de ces processus pour les applications en temps réel constitue un domaine de recherche actif.
- Robustesse : Assurer que ces systèmes fonctionnent de manière cohérente sur une large gamme de sujets et de types de questions est crucial. Cela inclut la gestion des cas limites et des entrées adverses qui pourraient tromper les mécanismes de jugement de pertinence ou de décision.
- Support multilingue et translingue : Étendre ces approches pour qu’elles fonctionnent efficacement sur plusieurs langues et gèrent la récupération et le raisonnement translingues est une direction importante pour les travaux futurs.
- Intégration avec d’autres technologies d’IA : Explorer comment ces approches peuvent être combinées avec d’autres technologies d’IA, telles que les modèles multimodaux ou l’apprentissage par renforcement, pourrait conduire à des systèmes encore plus puissants et flexibles.
Conclusion
Le développement de cadres d’auto-raisonnement et de génération adaptative de récupération représente un grand pas en avant dans le domaine du traitement automatique des langues. En permettant aux modèles de langage de raisonner explicitement sur les informations qu’ils utilisent et d’adapter dynamiquement leurs stratégies d’augmentation de connaissances, ces approches promettent de rendre les systèmes d’IA plus fiables, interprétables et conscients du contexte.
À mesure que la recherche dans ce domaine continue d’évoluer, nous pouvons nous attendre à voir ces techniques affinées et intégrées dans une large gamme d’applications, des systèmes de réponse à questions et des assistants virtuels aux outils éducatifs et aux aides de recherche. La capacité de combiner les vastes connaissances encodées dans les grands modèles de langage avec des informations récupérées dynamiquement et à jour a le potentiel de révolutionner la façon dont nous interagissons avec les systèmes d’IA et accédons à l’information.

















