Créer des systèmes avancés de génération augmentée par récupération
Cet article explore en profondeur la génération augmentée par récupération (RAG). Nous décrivons le travail et les considérations nécessaires aux développeurs pour créer une solution RAG prête pour la production.
Pour en savoir plus sur deux options de création d’une application de « conversation sur vos données », l’un des principaux cas d’usage de l’IA générative dans les entreprises, consultez Renforcer les LLM avec RAG ou un réglage fin.
Le diagramme suivant illustre les étapes ou les phases de RAG :
Cette représentation est appelée RAG naïf. Il s’agit d’un moyen utile de comprendre initialement les mécanismes, les rôles et les responsabilités nécessaires pour implémenter un système de conversation basé sur RAG.
Toutefois, une implémentation réelle comporte de nombreuses étapes de prétraitement et de post-traitement pour préparer les articles, les requêtes et les réponses à utiliser. Le diagramme suivant est une représentation plus réaliste d’un RAG, parfois appelé RAG avancé :
Cet article fournit un framework conceptuel permettant de comprendre les phases de prétraitement et de post-traitement dans un système de conversation basé sur RAG réel :
- Phase d’ingestion
- Phase de pipeline d’inférence
- Phase d’évaluation
Ingestion
L’ingestion consiste principalement à stocker les documents de votre organisation afin qu’ils puissent être facilement récupérés pour répondre à la question d’un utilisateur. Le défi est de s’assurer que les parties des documents qui correspondent le mieux à la requête de l’utilisateur sont situées et utilisées pendant l’inférence. La correspondance est effectuée principalement par le biais d’incorporations vectorisées et d’une recherche de similarité cosinus. Toutefois, la correspondance est facilitée par la compréhension de la nature du contenu (par exemple, des modèles et des formulaires) et de la stratégie de l’organisation des données (structure des données lorsqu’elles sont stockées dans la base de données vectorielle).
Pour l’ingestion, les développeurs doivent prendre en compte les étapes suivantes :
- Prétraitement et extraction du contenu
- Stratégie de segmentation
- Organisation de segmentation
- Stratégie de mise à jour
Prétraitement et extraction du contenu
Le contenu propre et précis est l’une des meilleures façons d’améliorer la qualité globale d’un système de conversation basé sur RAG. Pour obtenir du contenu propre et précis, commencez par analyser la forme et la forme des documents à indexer. Les documents sont-ils conformes aux modèles de contenu spécifiés comme la documentation ? Si ce n’est pas le cas, quels types de questions les documents peuvent-ils répondre ?
Au minimum, créez des étapes dans le pipeline d’ingestion pour :
- Normaliser les formats de texte
- Gérer des caractères spéciaux
- Supprimer du contenu non lié et obsolète
- Compte du contenu versionné
- Compte de l’expérience de contenu (onglets, images, tables)
- Extraire les métadonnées
Certaines de ces informations (telles que les métadonnées, par exemple) peuvent être utiles si elles sont conservées avec le document de la base de données vectorielle à utiliser pendant le processus d’extraction et d’évaluation dans le pipeline d’inférence. Elle peut également être combinée avec le fragment de texte pour renforcer l’incorporation vectorielle du fragment.
Stratégie de segmentation
En tant que développeur, vous devez décider comment décomposer un document plus volumineux en blocs plus petits. La segmentation peut améliorer la pertinence du contenu supplémentaire envoyé au LLM afin de répondre précisément aux requêtes des utilisateurs. Réfléchissez également à l’utilisation des segments après la récupération. Les concepteurs de systèmes doivent rechercher des techniques courantes de l’industrie et effectuer des expérimentations. Vous pouvez même tester votre stratégie dans une capacité limitée dans votre organisation.
Les développeurs doivent prendre en compte les éléments suivants :
- optimisation de la taille de bloc: déterminez la taille de bloc idéale et comment désigner un bloc. Par section ? Par paragraphe ? Par phrase ?
- segments de fenêtre superposés et glissants: déterminez s’il faut diviser le contenu en blocs discrets ou les blocs se chevauchent-ils ? Vous pouvez même faire les deux, dans une conception de fenêtre glissante.
- Small2Big: lorsque la segmentation est effectuée à un niveau granulaire comme une seule phrase, le contenu est-il organisé afin qu’il soit facile de trouver les phrases voisines ou le paragraphe qui contient la phrase ? La récupération de ces informations et leur fourniture au LLM peuvent lui fournir plus de contexte pour répondre aux requêtes utilisateur. Pour plus d’informations, consultez la section suivante.
Organisation de segmentation
Dans un système RAG, l’organisation stratégique de vos données dans la base de données vectorielle est une clé pour récupérer efficacement les informations pertinentes afin d’augmenter le processus de génération. Voici les types de stratégies d’indexation et de récupération que vous pouvez envisager :
- index hiérarchiques: cette approche implique la création de plusieurs couches d’index. Un index de niveau supérieur (un index de synthèse) réduit rapidement l’espace de recherche à un sous-ensemble de blocs potentiellement pertinents. Un index de deuxième niveau (un index de blocs) fournit des pointeurs plus détaillés vers les données réelles. Cette méthode peut accélérer considérablement le processus de récupération, car elle réduit le nombre d’entrées à analyser dans l’index détaillé en filtrant d’abord l’index de synthèse.
- index spécialisés: en fonction de la nature des données et des relations entre les blocs, vous pouvez utiliser des index spécialisés comme des bases de données relationnelles ou basées sur des graphiques :
- Les index basés sur des graphiques sont utiles lorsque les blocs ont des informations ou des relations interconnectées qui peuvent améliorer la récupération, telles que les réseaux de citations ou les graphiques de connaissances.
- Les bases de données relationnelles peuvent être efficaces si les segments sont structurés dans un format tabulaire. Utilisez des requêtes SQL pour filtrer et récupérer des données en fonction d’attributs ou de relations spécifiques.
- Index hybrides: Une approche hybride combine plusieurs méthodes d’indexation pour appliquer leurs forces à votre stratégie globale. Par exemple, vous pouvez utiliser un index hiérarchique pour le filtrage initial et un index basé sur un graphique pour explorer dynamiquement les relations entre les blocs lors de la récupération.
Optimisation de l’alignement
Pour améliorer la pertinence et la précision des blocs récupérés, alignez-les étroitement avec les types de questions ou de requêtes qu’ils répondent. Une stratégie consiste à générer et à insérer une question hypothétique pour chaque segment, représentant la question à laquelle le segment est le mieux adapté pour répondre. Cela permet de plusieurs façons :
- Amélioration de la correspondance: lors de la récupération, le système peut comparer la requête entrante à ces questions hypothétiques pour trouver la meilleure correspondance pour améliorer la pertinence des blocs extraits.
- Données d’apprentissage pour les modèles Machine Learning: ces paires de questions et de blocs peuvent être des données d’apprentissage pour améliorer les modèles Machine Learning qui sont les composants sous-jacents du système RAG. Le système RAG apprend quels types de questions sont les mieux répondus par chaque bloc.
- gestion des requêtes directes: si une requête utilisateur réelle correspond étroitement à une question hypothétique, le système peut rapidement récupérer et utiliser le segment correspondant et accélérer le temps de réponse.
La question hypothétique de chaque segment agit comme une étiquette qui guide l’algorithme de récupération, de sorte qu’elle est plus ciblée et contextuellement consciente. Ce type d’optimisation est utile lorsque les blocs couvrent un large éventail de rubriques ou de types d’informations.
Stratégies de mise à jour
Si votre organisation indexe des documents fréquemment mis à jour, il est essentiel de conserver un corpus mis à jour pour s’assurer que le composant retriever peut accéder aux informations les plus actuelles. Le composant retriever est la logique du système qui exécute la requête sur la base de données vectorielle, puis retourne les résultats. Voici quelques stratégies pour mettre à jour la base de données vectorielle dans ces types de systèmes :
Mises à jour incrémentielles :
- intervalles réguliers: planifiez des mises à jour à intervalles réguliers (par exemple, quotidiennes ou hebdomadaires) en fonction de la fréquence des modifications de document. Cette méthode garantit que la base de données est régulièrement actualisée selon une planification connue.
- mises à jour basées sur les déclencheurs: implémentez un système dans lequel une mise à jour déclenche la réindexation. Par exemple, toute modification ou ajout d’un document lance automatiquement la réindexation dans les sections concernées.
mises à jour partielles:
- réindexation sélective: au lieu de réindexer une base de données entière, mettez à jour uniquement les parties modifiées du corpus. Cette approche peut être plus efficace que la réindexation complète, en particulier pour les jeux de données volumineux.
- Encodage delta : stockez uniquement les différences entre les documents existants et leurs versions mises à jour. Cette approche réduit la charge de traitement des données en évitant la nécessité de traiter des données inchangées.
Gestion des versions :
- Capture instantanée : conservez les versions du corpus de documents à différents moments dans le temps. Cette technique fournit un mécanisme de sauvegarde et permet au système de revenir ou de faire référence aux versions précédentes.
- Contrôle de version de document : utilisez un système de contrôle de version pour suivre systématiquement les modifications apportées aux documents pour maintenir l’historique des modifications et simplifier le processus de mise à jour.
Mises à jour en temps réel :
- de traitement de flux : lorsque la chronologie des informations est critique, utilisez les technologies de traitement de flux pour les mises à jour de base de données vectorielles en temps réel à mesure que des modifications sont apportées au document.
- Requête en direct: au lieu de s’appuyer uniquement sur des vecteurs préindexés, utilisez une approche de requête de données en temps réel pour obtenir des réponses up-to-date, en combinant éventuellement des données en direct avec des résultats mis en cache pour plus d’efficacité.
techniques d’optimisation :
traitement par lots: Le traitement par lots accumule les modifications à appliquer moins fréquemment afin d'optimiser les ressources et de réduire la surcharge.
approches hybrides: combinez différentes stratégies :
- Utilisez des mises à jour incrémentielles pour les modifications mineures.
- Utilisez la réindexation complète pour les mises à jour majeures.
- Documentez les modifications structurelles apportées au corpus.
Le choix de la stratégie de mise à jour appropriée ou de la bonne combinaison dépend des exigences spécifiques, notamment :
- Taille du corpus de documents
- Fréquence de mise à jour
- Besoins en données en temps réel
- Disponibilité des ressources
Évaluez ces facteurs en fonction des besoins de l’application spécifique. Chaque approche a des compromis en matière de complexité, de coût et de latence de mise à jour.
Pipeline d’inférence
Vos articles sont segmentés, vectorisés et stockés dans une base de données vectorielle. À présent, concentrez-vous sur la résolution des problèmes d’achèvement.
Pour obtenir les achèvements les plus précis et efficaces, vous devez tenir compte de nombreux facteurs :
- La requête de l’utilisateur est-elle écrite de manière à obtenir les résultats recherchés par l’utilisateur ?
- La requête de l’utilisateur enfreint-t-elle les stratégies de l’organisation ?
- Comment réécrire la requête de l’utilisateur pour améliorer les chances de trouver les correspondances les plus proches dans la base de données vectorielle ?
- Comment évaluer les résultats de la requête pour vous assurer que les blocs d’article s’alignent sur la requête ?
- Comment évaluer et modifier les résultats des requêtes avant de les transmettre au LLM afin de s’assurer que les détails les plus pertinents sont inclus dans l’achèvement ?
- Comment évaluer la réponse de LLM pour vous assurer que l’achèvement du LLM répond à la requête d’origine de l’utilisateur ?
- Comment vous assurez-vous que la réponse du LLM est conforme aux stratégies de l’organisation ?
L’ensemble du pipeline d’inférence s’exécute en temps réel. Il n’existe pas un moyen approprié de concevoir vos étapes de prétraitement et de post-traitement. Vous choisirez probablement une combinaison de logique de programmation et d’autres appels LLM. L’un des points les plus importants est le compromis entre la création du pipeline le plus précis et le plus conforme possible et le coût et la latence nécessaires pour qu’il se produise.
Nous allons identifier des stratégies spécifiques dans chaque phase du pipeline d’inférence.
Étapes de prétraitement des requêtes
Le prétraitement de requête se produit immédiatement après que l’utilisateur a envoyé sa requête :
L’objectif de ces étapes est de s’assurer que l’utilisateur pose des questions qui se trouvent dans l’étendue de votre système et de préparer la requête de l’utilisateur pour augmenter la probabilité qu’il localise les meilleurs blocs d’articles possibles à l’aide de la similarité cosinus ou de la recherche « voisin le plus proche ».
contrôle de la politique: cette étape implique une logique qui identifie, supprime, signale ou rejette certains contenus. Certains exemples incluent la suppression de données personnelles, la suppression d’explétifs et l’identification des tentatives de « jailbreak ». Le jailbreaking fait référence aux tentatives des utilisateurs de contourner ou de manipuler les recommandations intégrées concernant la sécurité, l’éthique ou le fonctionnement du modèle.
réécriture de requête: cette étape peut être n'importe quoi allant de l'extension des acronymes et de la suppression du jargon à la reformulation de la question pour la poser de manière plus abstraite afin d'extraire des concepts et des principes de haut niveau (incitation à la réflexion en arrière).
Une variante de l’invite de retour est Hypothetical Document Embeddings (HyDE). HyDE utilise le LLM pour répondre à la question de l’utilisateur, crée une incorporation pour cette réponse (l’incorporation hypothétique de document), puis utilise l’incorporation pour exécuter une recherche sur la base de données vectorielle.
Sous-requêtes
L’étape de traitement des sous-requêtes est basée sur la requête d’origine. Si la requête d’origine est longue et complexe, il peut être utile de la décomposer par programmation en plusieurs requêtes plus petites, puis de combiner toutes les réponses.
Par exemple, une question sur les découvertes scientifiques en physique pourrait être : « Qui a apporté des contributions plus significatives à la physique moderne, Albert Einstein ou Niels Bohr ? »
Décomposer les requêtes complexes en sous-requêtes les rendent plus gérables :
- Sous-requête 1: « Quelles sont les principales contributions d’Albert Einstein à la physique moderne ? »
- Sous-requête 2: « Quelles sont les principales contributions de Niels Bohr à la physique moderne ? »
Les résultats de ces sous-requêtes détaillent les principales théories et découvertes par chaque physicien. Par exemple :
- Pour Einstein, les contributions peuvent inclure la théorie de la relativité, l’effet photoélectrique et E=mc^2.
- Pour Bohr, les contributions peuvent inclure le modèle de l'atome d'hydrogène de Bohr, le travail de Bohr sur la mécanique quantique et le principe de complémentarité de Bohr.
Lorsque ces contributions sont décrites, elles peuvent être évaluées pour déterminer plus de sous-requêtes. Par exemple :
- Subquery 3: « Comment les théories d’Einstein ont-ils impacté le développement de la physique moderne ? »
- Sous-requête 4: « Comment les théories de Bohr ont-ils impacté le développement de la physique moderne ? »
Ces sous-requêtes explorent l’influence de chaque scientifique sur la physique, par exemple :
- Comment les théories d’Einstein ont conduit à des progrès dans la cosmologie et la théorie quantique
- Comment le travail de Bohr a contribué à comprendre la structure atomique et la mécanique quantique
La combinaison des résultats de ces sous-requêtes peut aider le modèle de langage à former une réponse plus complète sur les personnes qui ont apporté des contributions plus importantes à la physique moderne en fonction de leurs progrès théoriques. Cette méthode simplifie la requête complexe d’origine en accédant à des composants plus spécifiques et accessibles, puis en synthétisant ces résultats en une réponse cohérente.
Routeur de requête
Votre organisation peut choisir de diviser son corpus de contenu en plusieurs magasins vectoriels ou en systèmes de récupération entiers. Dans ce scénario, vous pouvez utiliser un routeur de requête. Un routeur de requêtes sélectionne la base de données ou l’index le plus approprié pour fournir les meilleures réponses à une requête spécifique.
Un routeur de requête fonctionne généralement à un point après que l’utilisateur formule la requête, mais avant d’envoyer la requête aux systèmes de récupération.
Voici un flux de travail simplifié pour un routeur de requête :
- analyse de requête: le LLM ou un autre composant analyse la requête entrante pour comprendre son contenu, son contexte et le type d’informations qui sont probablement nécessaires.
- sélection d’index: en fonction de l’analyse, le routeur de requête sélectionne un ou plusieurs index dans plusieurs index potentiellement disponibles. Chaque index peut être optimisé pour différents types de données ou de requêtes. Par exemple, certains index peuvent être plus adaptés aux requêtes factuelles. D’autres index peuvent exceller dans la fourniture d’opinions ou de contenu subjectif.
- Acheminement de requête: La requête est envoyée à l’index sélectionné.
- agrégation des résultats: les réponses des index sélectionnés sont récupérées et éventuellement agrégées ou traitées pour former une réponse complète.
- génération de réponses: l’étape finale consiste à générer une réponse cohérente basée sur les informations récupérées, éventuellement en intégrant ou synthétisant du contenu à partir de plusieurs sources.
Votre organisation peut utiliser plusieurs moteurs de récupération ou index pour les cas d’usage suivants :
- spécialisation de type de données: certains index peuvent se spécialiser dans des articles d’actualités, d’autres dans des articles universitaires, et encore d’autres dans du contenu web général ou des bases de données spécifiques comme pour des informations médicales ou juridiques.
- optimisation du type de requête: certains index peuvent être optimisés pour des recherches factuelles rapides (par exemple, des dates ou des événements). D’autres peuvent être mieux à utiliser pour des tâches de raisonnement complexes ou pour des requêtes qui nécessitent une connaissance approfondie du domaine.
- différences algorithmiques: différents algorithmes de récupération peuvent être utilisés dans différents moteurs, tels que des recherches de similarité basées sur des vecteurs, des recherches basées sur des mots clés traditionnelles ou des modèles de compréhension sémantique plus avancés.
Imaginez un système basé sur RAG utilisé dans un contexte de conseil médical. Le système a accès à plusieurs index :
- Un index de document de recherche médicale optimisé pour des explications détaillées et techniques
- Un index d’étude de cas clinique qui fournit des exemples réels de symptômes et de traitements
- Index d'informations générales sur la santé pour les requêtes de base et les informations de santé publique
Si un utilisateur pose une question technique sur les effets biochimiques d’un nouveau médicament, le routeur de requête peut hiérarchiser l’index du document de recherche médicale en raison de sa profondeur et de son focus technique. Pour une question sur les symptômes typiques d’une maladie courante, cependant, l’indice général de santé peut être choisi pour son contenu large et facile à comprendre.
Étapes de traitement post-récupération
Le traitement post-récupération se produit après que le composant de récupération récupère les blocs de contenu pertinents de la base de données vectorielle :
Avec les fragments de contenu candidats récupérés, l’étape suivante consiste à valider l’utilité du fragment d’article lors du renforcement de l’invite LLM, avant de préparer l’invite à être présentée au LLM.
Voici quelques éléments clés à prendre en compte :
- L’inclusion de trop d’informations supplémentaires peut entraîner l’ignorance des informations les plus importantes.
- L’inclusion d’informations non pertinentes peut influencer négativement la réponse.
Une autre considération concerne le problème de l’aiguille dans une botte de foin, un terme qui fait référence à une singularité connue de certains LLM dans lesquels le contenu au début et à la fin d’une invite influe davantage sur le LLM que le contenu au milieu.
Enfin, il faut tenir compte de la longueur maximale de la fenêtre contextuelle du LLM et du nombre de jetons nécessaires pour répondre à des invites extraordinairement longues (en particulier pour les requêtes à grande échelle).
Pour résoudre ces problèmes, un pipeline de traitement post-récupération peut inclure les étapes suivantes :
- résultats de filtrage: dans cette étape, vérifiez que les segments d’article retournés par la base de données vectorielle sont pertinents pour la requête. Si ce n’est pas le cas, le résultat est ignoré lorsque l’invite LLM est composée.
- Reclassement : classez les blocs de l’article récupérés à partir du stockage vectoriel afin de vous assurer que les détails pertinents sont proches des bords (début et fin) de l’invite.
- Compression d’invite : utilisez un petit modèle peu coûteux pour compresser et résumer plusieurs blocs d’articles en une seule invite compressée avant d’envoyer l’invite au LLM.
Étapes de traitement postérieures à l’achèvement
Le traitement post-achèvement se produit après l’envoi de la requête de l’utilisateur et de tous les blocs de contenu à LLM :
La validation de la précision a lieu après l’achèvement de l’invite par le LLM. Un pipeline de traitement post-achèvement peut inclure les étapes suivantes :
- vérification des faits: l’intention est d’identifier les revendications spécifiques faites dans l’article présentés en tant que faits, puis de vérifier ces faits à des fins d’exactitude. Si l’étape de vérification des faits échoue, il peut être approprié de réexécuter le LLM dans l’espoir d’obtenir une meilleure réponse ou de renvoyer un message d’erreur à l’utilisateur.
- contrôle de stratégie: dernière ligne de défense pour s’assurer que les réponses ne contiennent pas de contenu dangereux, que ce soit pour l’utilisateur ou pour l’organisation.
Évaluation
L’évaluation des résultats d’un système non déterministe n’est pas aussi simple que l’exécution des tests unitaires ou des tests d’intégration que la plupart des développeurs connaissent. Vous devez prendre en compte plusieurs facteurs :
- Les utilisateurs sont-ils satisfaits des résultats qu’ils obtiennent ?
- Les utilisateurs reçoivent-ils des réponses précises à leurs questions ?
- Comment capturer les commentaires des utilisateurs ? Avez-vous des stratégies en place qui limitent les données que vous pouvez collecter sur les données utilisateur ?
- Pour le diagnostic de réponses insatisfaisantes, avez-vous une visibilité sur tous les travaux qui ont répondu à la question ? Conservez-vous un journal de chaque étape dans le pipeline d’inférence des entrées et des sorties afin de pouvoir effectuer une analyse de la cause racine ?
- Comment pouvez-vous apporter des modifications au système sans régression ni dégradation des résultats ?
Capture et action sur les commentaires des utilisateurs
Comme décrit précédemment, vous devrez peut-être travailler avec l’équipe de confidentialité de votre organisation pour concevoir des mécanismes de capture de commentaires, de télémétrie et de journalisation pour la criminalistique et l'analyse des causes profondes d’une session de requête.
L’étape suivante consiste à développer un pipeline d’évaluation. Un processus d'évaluation aide à gérer la complexité et le caractère chronophage de l'analyse des commentaires détaillés et des causes profondes des réponses fournies par un système d'intelligence artificielle. Cette analyse est cruciale, car elle implique d’examiner chaque réponse pour comprendre comment la requête IA a produit les résultats, en vérifiant la pertinence des segments de contenu utilisés à partir de la documentation et les stratégies utilisées pour diviser ces documents.
Il implique également de prendre en compte les étapes de prétraitement ou de post-traitement supplémentaires susceptibles d’améliorer les résultats. Cet examen détaillé découvre souvent les lacunes de contenu, en particulier lorsqu’aucune documentation appropriée n’existe pour répondre à la requête d’un utilisateur.
La création d’un pipeline d’évaluation devient essentielle pour gérer efficacement l’échelle de ces tâches. Un pipeline efficace utilise des outils personnalisés pour évaluer les métriques qui correspondent approximativement à la qualité des réponses fournies par l’IA. Ce système simplifie le processus de détermination de la raison pour laquelle une réponse spécifique a été donnée à la question d’un utilisateur, quels documents ont été utilisés pour générer cette réponse et l’efficacité du pipeline d’inférence qui traite les requêtes.
Jeu de données Golden
Une stratégie pour évaluer les résultats d’un système non déterministe comme un système de conversation RAG consiste à utiliser un jeu de données d’or. Un jeu de données d’or est un ensemble organisé de questions et de réponses approuvées, de métadonnées (telles que la rubrique et le type de question), de références à des documents sources qui peuvent servir de vérité de base pour les réponses et même les variantes (différentes formulations pour capturer la diversité de la façon dont les utilisateurs peuvent poser les mêmes questions).
Un jeu de données d’or représente le « meilleur scénario de cas ». Les développeurs peuvent évaluer le système pour voir comment il fonctionne, puis effectuer des tests de régression lorsqu’ils implémentent de nouvelles fonctionnalités ou mises à jour.
Évaluation des dommages
La modélisation des préjudices est une méthodologie visant à prévoir des préjudices potentiels, à repérer les lacunes dans un produit susceptibles de poser des risques pour les individus et à élaborer des stratégies proactives pour atténuer ces risques.
Un outil conçu pour évaluer l’impact de la technologie, en particulier les systèmes d’IA, comporterait plusieurs composants clés basés sur les principes de modélisation des préjudices, comme indiqué dans les ressources fournies.
Les principales fonctionnalités d’un outil d’évaluation des dommages peuvent inclure :
identification des parties prenantes: l’outil peut aider les utilisateurs à identifier et classer diverses parties prenantes affectées par la technologie, y compris les utilisateurs directs, les parties indirectement affectées et d’autres entités, comme les générations futures ou les facteurs non humains, tels que les préoccupations environnementales.
catégories de préjudices et descriptions: l’outil peut inclure une liste complète de préjudices potentiels, tels que la perte de vie privée, la détresse émotionnelle ou l’exploitation économique. L’outil peut guider l’utilisateur dans différents scénarios, illustrer comment la technologie peut causer ces dommages et aider à évaluer les conséquences prévues et inattendues.
évaluations de gravité et de probabilité: l’outil peut aider les utilisateurs à évaluer la gravité et la probabilité de chaque préjudice identifié. L’utilisateur peut hiérarchiser les problèmes à résoudre en premier. Les exemples incluent des évaluations qualitatives prises en charge par les données lorsqu’elles sont disponibles.
stratégies d’atténuation: l’outil peut suggérer des stratégies d’atténuation potentielles après avoir identifié et évalué les dommages. Parmi les exemples, citons les modifications apportées à la conception du système, l’ajout de dispositifs de protection et d’autres solutions technologiques qui réduisent les risques identifiés.
mécanismes de commentaires: l’outil doit intégrer des mécanismes permettant de recueillir des commentaires des parties prenantes afin que le processus d’évaluation des préjudices soit dynamique et réactif aux nouvelles informations et perspectives.
documentation et création de rapports: pour la transparence et la responsabilité, l’outil peut faciliter les rapports détaillés qui documentent le processus d’évaluation des préjudices, les résultats et les mesures potentielles d’atténuation des risques prises.
Ces fonctionnalités peuvent vous aider à identifier et à atténuer les risques, mais elles vous aident également à concevoir des systèmes d’IA plus éthiques et responsables en tenant compte d’un large éventail d’impacts dès le départ.
Pour plus d’informations, consultez les articles suivants :
Test et vérification des dispositifs de protection
Cet article décrit plusieurs processus visant à atténuer la possibilité d’exploiter ou de compromettre un système de conversation basé sur RAG. Le red-teaming joue un rôle crucial pour garantir que les atténuations sont efficaces. Le Red Teaming implique la simulation des actions d’un adversaire potentiel afin de découvrir les faiblesses ou vulnérabilités potentielles dans l’application. Cette approche est particulièrement essentielle pour résoudre le risque important de jailbreakage.
Les développeurs doivent évaluer rigoureusement les protections du système de conversation basée sur RAG dans différents scénarios de recommandations pour les tester et les vérifier efficacement. Cette approche garantit non seulement la robustesse, mais vous aide également à affiner les réponses du système pour respecter strictement les normes éthiques définies et les procédures opérationnelles.
Considérations finales relatives à la conception de l’application
Voici une courte liste des éléments à prendre en compte et d’autres points à prendre en compte dans cet article susceptibles d’affecter vos décisions de conception d’application :
- Reconnaissez la nature non déterministe de l’IA générative dans votre conception. Planifiez la variabilité des sorties et mettez en place des mécanismes pour garantir la cohérence et la pertinence des réponses.
- Évaluez les avantages de la prétraitement des invites utilisateur par rapport à l’augmentation potentielle de la latence et des coûts. La simplification ou la modification des invites avant l’envoi peut améliorer la qualité de la réponse, mais elle peut ajouter de la complexité et du temps au cycle de réponse.
- Pour améliorer les performances, examinez les stratégies de parallélisation des requêtes LLM. Cette approche peut réduire la latence, mais elle nécessite une gestion minutieuse pour éviter une complexité accrue et des implications potentielles sur les coûts.
Si vous souhaitez commencer à expérimenter immédiatement la création d’une solution d’IA générative, nous vous recommandons de consulter Commencez avec le chat en utilisant votre propre échantillon de données pour Python. Le didacticiel est également disponible pour .NET, javaet JavaScript.