Intelligence Artificielle
Améliorer les modèles de langage augmentés de récupération : auto-raisonnement et augmentation adaptative pour les systèmes conversationnels

By
Ayush Mittal mital
Les grands modèles de langage ont souvent du mal à fournir des informations précises et actuelles, en particulier dans les tâches complexes basées sur les connaissances. Pour surmonter ces obstacles, les chercheurs étudient des méthodes permettant d'améliorer ces modèles en les intégrant à des sources de données externes.
Deux nouvelles approches apparues dans ce domaine sont cadres d'auto-raisonnement génération augmentée par récupération adaptative pour les systèmes conversationnelsDans cet article, nous allons approfondir ces techniques innovantes et explorer comment elles repoussent les limites de ce qui est possible avec les modèles linguistiques.
La promesse et les pièges des modèles de langage augmentés par récupération
Examinons le concept des modèles linguistiques augmentés par la recherche (RALM). L'idée principale des RALM est de combiner les vastes connaissances et capacités de compréhension du langage des modèles linguistiques pré-entraînés avec la possibilité d'accéder à des informations externes et actualisées et de les intégrer lors de l'inférence.
Voici une illustration simple de la façon dont un RALM de base pourrait fonctionner :
- Un internaute pose une question : « Quel a été le bilan des Jeux Olympiques de 2024 ? »
- Le système récupère les documents pertinents à partir d'une base de connaissances externe.
- Le LLM traite la question avec 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 s'est révélée très prometteuse pour améliorer l'exactitude et la pertinence des résultats du LLM, en particulier pour les tâches qui nécessitent un accès à des informations actuelles ou à des connaissances spécifiques à un domaine. Cependant, les RALM ne sont pas sans défis. Deux problèmes clés auxquels les chercheurs sont confrontés sont les suivants :
- Fiabilité: Comment pouvons-nous garantir 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
Il s'agit de l'architecture et du processus des LLM à récupération augmentée, axés 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, les documents pertinents sont récupérés et traités via une série d'étapes de raisonnement. Le mécanisme d'auto-raisonnement applique des processus d'analyse de trajectoire et de connaissance des preuves pour filtrer et synthétiser les informations avant de générer la réponse finale. Cette méthode améliore non seulement la précision des résultats, mais garantit également que le raisonnement derrière les réponses est transparent et traçable.
Dans les exemples ci-dessus fournis, tels que la détermination de la date de sortie du film « Arrête-moi si tu peux » ou l'identification des artistes qui ont peint le plafond de la cathédrale de Florence, le modèle filtre efficacement les documents récupérés pour produire des réponses précises et contextuellement étayées.
Ce tableau présente une analyse comparative de différentes variantes de LLM, y compris les modèles LLaMA2 et d'autres modèles augmentés par récupération pour des tâches telles que NaturalQuestions, PopQA, FEVER et ASQA. Les résultats sont répartis entre les lignes de base 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 LLM est chargé de fournir des suggestions basées sur les requêtes des utilisateurs, démontrant ainsi 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 fragment de connaissances, l'autre où il ne le fait pas. La comparaison souligne comment l'intégration d'informations spécifiques peut adapter les réponses aux besoins de l'utilisateur, offrant ainsi une profondeur et une précision qui pourraient manquer à un modèle purement génératif.
Une approche innovante pour améliorer les modèles de langage automatique (RALM) consiste à introduire des cadres d'auto-raisonnement. L'idée principale de cette méthode est d'exploiter les capacités 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 résultats.
Décomposons les éléments clés d’un cadre d’auto-raisonnement :
- Processus sensible à la pertinence (MUSIQUE RAP)
- Processus sélectif fondé sur des données probantes (PAE)
- Processus d'analyse de trajectoire (TAP)
Processus axé sur 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 réellement pertinents pour la question posée. Voici son fonctionnement :
- 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 linguistique est ensuite chargé de 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.
Par exemple, étant donné la question « Quand la Tour Eiffel a-t-elle été construite ? », le RAP pourrait produire un résultat comme celui-ci :
Relevant: True
Relevant Reason: The retrieved documents contain specific information about the construction dates of the Eiffel Tower, including its commencement in 1887 and completion in 1889.Ce processus permet de filtrer les informations non pertinentes dès le début du pipeline, améliorant ainsi la qualité globale des réponses du modèle.
Processus sélectif fondé sur des données probantes (EAP)
Le PAE va plus loin dans l'évaluation de la pertinence en demandant au modèle d'identifier et de citer des éléments de preuve spécifiques issus des documents pertinents. Ce processus imite la manière dont un humain pourrait aborder une tâche de recherche, en sélectionnant des phrases clés et en expliquant leur pertinence. Voici à quoi pourrait ressembler le résultat du PAE :
Cite content: "Construction of the Eiffel Tower began on January 28, 1887, and was completed on March 31, 1889."
Reason to cite: This sentence provides the exact start and end dates for the construction of the Eiffel Tower, directly answering the question about when it was built.En citant explicitement les sources et en expliquant la pertinence de chaque élément de preuve, l’EAP améliore la traçabilité et l’interprétabilité des résultats 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 au cours des étapes précédentes. Il analyse ces trajectoires et produit une synthèse concise accompagnée d'une réponse finale. Le résultat du TAP pourrait ressembler à ceci :
Analysis: The Eiffel Tower was built between 1887 and 1889. Construction began on January 28, 1887, and was completed on March 31, 1889. This information is supported by multiple reliable sources that provide consistent dates for the tower's construction period.
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 aux différents besoins des utilisateurs.
Mettre en œuvre l’auto-raisonnement dans la pratique
Pour mettre en œuvre ce cadre d’auto-raisonnement, les chercheurs ont exploré diverses approches, notamment :
- Inviter des modèles de langage pré-entraînés
- Affiner les modèles de langage avec des techniques efficaces en termes de paramètres comme QLoRA
- Développer des architectures neuronales spécialisées, telles que des modèles d'attention multi-têtes
Chacune de ces approches présente ses propres compromis en termes de performances, d’efficacité et de facilité de mise en œuvre. Par exemple, l’approche incitative est la plus simple à mettre en œuvre, mais elle ne produit pas toujours des résultats cohérents. Le réglage fin avec QLoRA offre un bon équilibre entre performances et efficacité, tandis que les architectures spécialisées peuvent fournir les meilleures performances mais nécessitent plus de ressources informatiques pour s'entraîner.
Voici un exemple simplifié de la manière dont vous pourriez mettre en œuvre le RAP en utilisant une approche d'invite avec un modèle de langage comme GPT-3 :
import openai
def relevance_aware_process(question, documents):
prompt = f"""
Question: {question}
Retrieved documents:
{documents}
Task: Determine if the retrieved documents are relevant to answering the question.
Output format:
Relevant: [True/False]
Relevant Reason: [Explanation]
Your analysis:
"""
response = openai.Completion.create(
engine="text-davinci-002",
prompt=prompt,
max_tokens=150
)
return response.choices[0].text.strip()
# Example usage
question = "When was the Eiffel Tower built?"
documents = "The Eiffel Tower is a wrought-iron lattice tower on the Champ de Mars in Paris, France. It is named after the engineer Gustave Eiffel, whose company designed and built the tower. Constructed from 1887 to 1889 as the entrance arch to the 1889 World's Fair, it was initially criticized by some of France's leading artists and intellectuals for its design, but it has become a global cultural icon of France."
result = relevance_aware_process(question, documents)
print(result)
Cet exemple montre comment le PAR peut être mis en œuvre en utilisant une approche simple d'incitation. En pratique, des techniques plus sophistiquées seraient utilisées pour garantir la cohérence et gérer les cas extrêmes.
Génération augmentée par récupération adaptative 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, un autre axe de recherche a exploré comment rendre la génération augmentée par récupération plus adaptative dans le contexte des systèmes conversationnels. Cette approche, connue sous le nom de génération augmentée par récupération adaptative, vise à déterminer quand les connaissances externes doivent être utilisées dans une conversation et comment les intégrer efficacement.
L'idée clé de cette approche est que chaque tour de conversation ne nécessite pas forcément une augmentation de connaissances externes. Dans certains cas, s'appuyer trop sur les informations récupérées peut conduire à des réponses artificielles ou trop verbeuses. Le défi consiste donc à développer un système capable de décider dynamiquement quand utiliser des connaissances externes et quand s'appuyer sur les capacités intrinsèques du modèle.
Composants de la génération augmentée par récupération adaptative
Pour relever ce défi, les chercheurs ont proposé un cadre appelé RAGate, qui se compose de plusieurs éléments clés :
- Un mécanisme binaire de porte de connaissances
- Un processus soucieux de la pertinence
- Un processus sélectif fondé sur des données probantes
- Un processus d’analyse de trajectoire
Le mécanisme de porte de connaissance binaire
Le cœur du système RAGate est une porte de connaissances binaire qui décide d'utiliser ou non des connaissances externes 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 binaires pourrait fonctionner :
def knowledge_gate(context, retrieved_knowledge=None):
# Analyze the context and retrieved knowledge
# Return True if external knowledge should be used, False otherwise
pass
def generate_response(context, knowledge=None):
if knowledge_gate(context, knowledge):
# Use retrieval-augmented generation
return generate_with_knowledge(context, knowledge)
else:
# Use standard language model generation
return generate_without_knowledge(context)
Ce mécanisme de contrôle permet au système d'être plus flexible et plus sensible au contexte dans son utilisation des connaissances externes.
Implémentation de RAGate
Cette image illustre le framework RAGate, un système avancé conçu pour intégrer des connaissances externes dans les LLM afin d'améliorer la génération de réponses. Cette architecture montre comment un LLM de base peut être complété par du contexte ou des connaissances, soit par saisie directe, soit en intégrant des bases de données externes lors du processus de génération. Cette double approche, utilisant à la fois les capacités du modèle interne et les données externes, permet au LLM de fournir des réponses plus précises et contextuellement pertinentes. Cette méthode hybride comble le fossé entre la puissance de calcul brute et l’expertise spécifique au domaine.
Celui-ci présente les mesures de performances pour diverses variantes de modèle dans le cadre RAGate, qui se concentre sur l'intégration de la récupération avec un réglage fin efficace des paramètres (PEFT). Les résultats mettent en évidence la supériorité des modèles intégrés au contexte, en particulier ceux qui utilisent des intégrations 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 scores F1, soulignant les avantages de l'intégration des apports de contexte et de connaissances. Ces stratégies de réglage précis permettent aux modèles d'exécuter plus efficacement des tâches à forte intensité de connaissances, offrant ainsi une solution plus robuste et évolutive pour les applications du monde réel.
Pour mettre en œuvre RAGate, les chercheurs ont exploré plusieurs approches, notamment :
- Utiliser de grands modèles de langage avec des invites soigneusement conçues
- Affiner les modèles de langage à l’aide de techniques efficaces en termes de paramètres
- Développer des architectures neuronales spécialisées, telles que des modèles d'attention multi-têtes
Chacune de ces approches possède ses propres forces et faiblesses. Par exemple, l’approche d’incitation est relativement simple à mettre en œuvre mais ne produit pas toujours des résultats cohérents. Le réglage fin offre un bon équilibre entre performances et efficacité, tandis que les architectures spécialisées peuvent fournir les meilleures performances mais nécessitent plus de ressources informatiques pour s'entraîner.
Voici un exemple simplifié de la manière dont vous pourriez implémenter un système de type RAGate à l'aide d'un modèle de langage affiné :
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
class RAGate:
def __init__(self, model_name):
self.tokenizer = AutoTokenizer.from_pretrained(model_name)
self.model = AutoModelForSequenceClassification.from_pretrained(model_name)
def should_use_knowledge(self, context, knowledge=None):
inputs = self.tokenizer(context, knowledge or "", return_tensors="pt", truncation=True, max_length=512)
with torch.no_grad():
outputs = self.model(**inputs)
probabilities = torch.softmax(outputs.logits, dim=1)
return probabilities[0][1].item() > 0.5 # Assuming binary classification (0: no knowledge, 1: use knowledge)
class ConversationSystem:
def __init__(self, ragate, lm, retriever):
self.ragate = ragate
self.lm = lm
self.retriever = retriever
def generate_response(self, context):
knowledge = self.retriever.retrieve(context)
if self.ragate.should_use_knowledge(context, knowledge):
return self.lm.generate_with_knowledge(context, knowledge)
else:
return self.lm.generate_without_knowledge(context)
# Example usage
ragate = RAGate("path/to/fine-tuned/model")
lm = LanguageModel() # Your preferred language model
retriever = KnowledgeRetriever() # Your knowledge retrieval system
conversation_system = ConversationSystem(ragate, lm, retriever)
context = "User: What's the capital of France?\nSystem: The capital of France is Paris.\nUser: Tell me more about its famous landmarks."
response = conversation_system.generate_response(context)
print(response)
Cet exemple montre comment un système de type RAGate pourrait être mis en œuvre dans la pratique. Le RAGate La classe utilise un modèle affiné pour décider d'utiliser ou non des connaissances externes, tandis que la classe ConversationSystem La classe orchestre l'interaction entre la porte, le modèle de langage et le récupérateur.
Défis et orientations futures
Bien que les cadres d’auto-raisonnement et la génération augmentée par récupération adaptative soient très prometteurs, les chercheurs s’efforcent encore de relever plusieurs défis :
- Efficacité de calcul: Les deux approches peuvent nécessiter beaucoup de calculs, en particulier lorsqu'il s'agit de grandes quantités d'informations récupérées ou de génération de longues trajectoires de raisonnement. L'optimisation de ces processus pour des applications en temps réel reste un domaine de recherche actif.
- La solidité des mécanismes :: Il est crucial de garantir que ces systèmes fonctionnent de manière cohérente sur un large éventail de sujets et de types de questions. Cela inclut la gestion des cas extrêmes et des entrées contradictoires qui pourraient perturber le jugement de pertinence ou les mécanismes de contrôle.
- Prise en charge multilingue et multilingue: Étendre ces approches pour travailler efficacement dans plusieurs langues et gérer la recherche d'informations et le raisonnement multilingues 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 augmentée par récupération adaptative représente une avancée significative dans le domaine du traitement du langage naturel. En permettant aux modèles linguistiques de raisonner explicitement sur les informations qu’ils utilisent et d’adapter dynamiquement leurs stratégies d’augmentation des connaissances, ces approches promettent de rendre les systèmes d’IA plus fiables, interprétables et sensibles au contexte.
À mesure que la recherche dans ce domaine continue d'évoluer, nous pouvons nous attendre à voir ces techniques raffinées et intégrées dans un large éventail d'applications, depuis les systèmes de questions-réponses et les assistants virtuels jusqu'aux outils pédagogiques et aux aides à la recherche. La capacité de combiner les vastes connaissances codées dans de grands modèles de langage avec des informations actualisées et récupérées dynamiquement a le potentiel de révolutionner la façon dont nous interagissons avec les systèmes d’IA et accédons à l’information.
J'ai passé les cinq dernières années à m'immerger dans le monde fascinant du Machine Learning et du Deep Learning. Ma passion et mon expertise m'ont amené à contribuer à plus de 50 projets de génie logiciel divers, avec un accent particulier sur l'IA/ML. Ma curiosité continue m'a également attiré vers le traitement automatique du langage naturel, un domaine que j'ai hâte d'explorer davantage.
Tu peux aimer
-


Le dilemme du contrôle de l'IA : risques et solutions
-


Génération augmentée par récupération : la solution des PME pour utiliser l'IA de manière efficace et efficiente
-
Évolution post-RAG : le parcours de l'IA de la recherche d'informations au raisonnement en temps réel
-
L'émergence de l'autoréflexion dans l'IA : comment les grands modèles linguistiques utilisent les informations personnelles pour évoluer
-
Maintenir la pertinence des LLM : comparaison des RAG et CAG pour l'efficacité et la précision de l'IA
-


De nouvelles recherches révèlent seize problèmes majeurs avec les systèmes RAG, notamment la perplexité




