Conception des données pour les charges de travail IA sur Azure
Pour les applications IA, l’approche de Well-Architected Framework pour la conception des données doit répondre à des exigences non fonctionnelles telles que l’opéraabilité, le coût et la sécurité, et respecter les principes fondamentaux des piliers du Framework Azure Well-Architected. Il doit également prendre en compte les exigences fonctionnelles telles que l’ingestion, la préparation et la validation des données.
Le modèle IA que vous choisissez affecte les décisions de conception de données suivantes. Cet article traite des considérations architecturales clés pour les modèles de base qui ont besoin d’une augmentation pour améliorer la pertinence des résultats. Ces modèles sont généralement génératifs.
Les modèles IA génératives sont prédéfinis ou préentraînés, ce qui vous permet de les utiliser immédiatement sans apporter de modifications. Toutefois, les modèles prêtes à l’emploi ne répondent pas souvent à des exigences spécifiques en matière de charge de travail. Pour résoudre ce problème, les modèles sont augmentés avec des données spécifiques au contexte pour améliorer leurs performances. Par exemple, vous pouvez utiliser le modèle GPT dans différents cas d’usage. Ces applications incluent la récupération d’informations à partir de documents, la fourniture du support technique informatique et la synthèse des informations complexes. Pour utiliser des modèles de base pour répondre à vos besoins spécifiques, il est important de comprendre ces considérations.
Important
La conception des données est un processus itératif basé sur l’expérimentation statistique. Les applications IA génératives envoient des requêtes au modèle qui inclut les données d’invite et de contexte. Pour affiner la conception des données, les données d’invite et de contexte doivent être itérées. Le processus itératif doit inclure le prétraitement, la sélection des incorporations et la segmentation. Ces étapes permettent de créer des données adaptées à un index. Pour plus d’informations, consultez Conception et développement d’une solution de génération augmentée de récupération (RAG).
Au fur et à mesure que vous expérimentez et effectuez une itération, gardez à l’esprit les cas d’usage de la consommation. Ajustez la conception des données en fonction des modèles de requête réels. Déterminez ce qui est acceptable par le biais de l’affinement et du test.
Dans une solution, vous pouvez utiliser une combinaison de modèles IA dégénérateurs et d’IA discriminatifs pour répondre aux exigences de charge de travail. Pour plus d’informations sur les données d’apprentissage, consultez Conception des données d’entraînement.
Recommandations
Voici le résumé des recommandations fournies dans cet article.
Recommandation | Description |
---|---|
Anticiper les requêtes utilisateur. | Comprendre les types de questions attendus liés à vos données sources et leurs attentes en matière de fraîcheur. Cette compréhension vous aide à concevoir vos pipelines et index de données pour fournir des données de base pertinentes. |
Externalisez les données à un index de recherche. | Au lieu d’interroger directement à partir du système source, utilisez un index de recherche. Évaluez différentes technologies d’index en fonction des exigences de charge de travail. Créez une matrice de capacité pour évaluer la meilleure adéquation à vos besoins. Envisagez de puissantes technologies d’index de recherche comme Elasticsearch ou AI Search. ▪ Indexation |
Développez une stratégie d’ingestion. | Développez une stratégie complète de gestion des index qui couvre l’ingestion et le prétraitement des données. Supprimez les données bruyantes ou non pertinentes en traitant les incohérences et les doublons et en standardisant dans un schéma commun. Convertissez les formats et types sources en types de données qui facilitent l’interrogation et l’analyse. ▪ Préparation des données ▪ Réscopation du volume de données |
Concevez votre index pour une pertinence maximale. | Activez des fonctionnalités telles que le filtrage, le tri et la gestion des métadonnées sur des champs spécifiques afin d’améliorer l’efficacité des requêtes. Par exemple, les champs d’étiquette peuvent faire l’objet d’une recherche uniquement si vous avez l’intention de les rechercher. Pour éviter les coûts de stockage inutiles, ne rendez pas chaque champ récupérable sans cas d’usage spécifique. ▪ Conception de schéma ▪ Fonctionnalités d’index ▪ Interrogation efficace |
Mettez à jour votre index pour empêcher l’inférence sur les données obsolètes. | Lorsque vous mettez à jour un index, envisagez d’adopter une stratégie de déploiement côte à côte pour la maintenance. La reconstruction de l’index garantit que les suppressions et les mises à jour sont gérées, car l’index devient un nouveau jeu de données. Cette approche permet un test approfondi des données avant de rendre l’index actif. Lorsque vous apportez des modifications aux index, coordonnez les modifications de schéma avec les mises à jour du code. Cette pratique garantit des transitions transparentes. ▪ Maintenance des index |
Types des données
Vous pouvez augmenter les modèles IA génératifs à l’aide de données contextuelles pendant l’inférence ou les optimiser davantage via un processus de réglage précis. Les deux approches ont besoin de données supplémentaires qui fournissent au modèle plus de contexte. Le modèle utilise ce contexte pour répondre à la requête de l’utilisateur et forme la réponse en fonction des attentes. En règle générale, vous utilisez les types de données suivants :
Les données sources sont des données existantes en production. Ces données peuvent être structurées, telles que des données dans des bases de données ou semi-structurées, telles que des fichiers JSON. Il peut également être non structuré, comme les documents, les images et les fichiers audio.
Les données de base proviennent de données sources qui contiennent des informations sur les sujets non abordés dans les données d’apprentissage initiales du modèle. Les données de base sont combinées avec la requête utilisateur pour former l’invite envoyée au modèle de langage volumineux dans le contexte d’un appel d’inférence spécifique. Les autres données que vous pouvez inclure dans l’appel d’inférence sont l’invite système, les exemples one-shot ou peu de captures et les données contextuelles telles que les interactions précédentes.
Ces données doivent être facilement pouvant faire l’objet d’une recherche et être récupérées rapidement. En raison de cette exigence, vous devez stocker les données dans un index optimisé pour la recherche. Cet index est accessible en temps réel pendant que l’utilisateur attend la réponse. Sans ces données, le modèle peut produire des résultats incorrects ou ne pas s’appliquer à ce que l’utilisateur recherche spécifiquement.
L’optimisation des données est des informations utilisées pour influencer le modèle afin qu’il puisse s’adapter à des tâches, des domaines ou des styles de réponse spécifiques pour les futures demandes d’inférence. Par exemple, si le modèle est censé fournir des réponses dans un style grammatical spécifique, ce guide de style servirait de données de réglage précis.
Les données utilisateur incluent des informations fournies par les utilisateurs lors des interactions avec l’application. Lorsque vous interagissez avec des modèles génératifs, des interactions avec état se produisent. Ces modèles manquent de mémoire inhérente et traitent chaque interaction comme atomique.
Lorsque vous gérez des interactions avec état, également appelées données TURN dans les applications de conversation, il est important de stocker les données pendant le plus court temps nécessaire. Dans l’idéal, ces données doivent être détruites une fois la session terminée. Toutefois, il peut y avoir des raisons opérationnelles ou de conformité qui vous obligent à conserver certaines données, telles que la question d’origine ou la réponse du modèle, au-delà de la durée de la session. Si possible, évitez de stocker ces données au-delà de la session.
Indexation
Le cœur de la conception des données comprend le stockage et la gestion efficaces des données fondamentales. Cette approche garantit que les données peuvent être augmentées pour atteindre le niveau de pertinence le plus élevé.
Une stratégie IA simple peut impliquer l’interrogation des données sources pour chaque interaction utilisateur. Toutefois, cette approche n’est pas pratique en raison des coûts élevés et des complexités des interactions directes de source de données. Au lieu de cela, vous devez réaffecter les données sources en tant que copie dans un index optimisé pour la recherche et la récupération. L’objectif de cette approche est d’améliorer la compréhension du modèle et sa capacité à générer des réponses pertinentes.
Considérez une charge de travail bancaire qui stocke les détails liés aux comptes bancaires et préférences utilisateur et aux transactions financières dans un magasin de données. Dans un scénario d’IA générative qui utilise un modèle RAG, les données de base sont créées et indexées avec le contexte afin que le modèle puisse donner des réponses pertinentes. Par exemple, en fournissant des données pertinentes sur les transactions utilisateur pour le contexte pendant l’inférence, le modèle peut répondre aux questions relatives aux modèles de dépense de l’utilisateur au cours du dernier trimestre.
Technologie d’index spécialisée
Envisagez d’externaliser les données d’ancrage d’un index de recherche. Utilisez cette approche au lieu d’interroger directement à partir du système source.
L’utilisation de l’index de recherche présente des avantages. Vous pouvez modéliser et transformer la copie des données en fonction des requêtes attendues. Les requêtes directes vers la source primaire sont problématiques, car il est possible que les données sources ne soient pas accessibles. Un index garantit que les données restent disponibles tant que vous le jugez pertinent pour l’application. Vous évitez également de stresser le système de données source. Cette stratégie garantit que les requêtes liées à l’IA n’affectent pas son cas d’usage principal.
Certaines options technologiques offrent des fonctionnalités d’indexation automatique. Les index peuvent contacter les sources de données et incorporer leurs données. Pour cette option, les considérations relatives au réseau sont essentielles. Si l’index doit se connecter aux bases de données, il existe des problèmes potentiels, tels que la latence réseau et la fiabilité.
Il existe un coût initial pour importer des données. Une fois que les données se trouvent dans votre index, vous n’aurez pas besoin de le déplacer à nouveau, sauf s’il existe des modifications ou des mises à jour. La gestion des données au fil du temps est un aspect essentiel de la conception d’index. Pour plus d’informations, consultez Maintenance d’index.
Index par défaut ou personnalisé
Certaines technologies prennent en charge la création automatique d’un index par défaut pour vos données. Cet index est généré sur l’ingestion de données avec une entrée minimale. L’index dispose de fonctionnalités prêtes à l’emploi. Un index par défaut peut être acceptable pour la preuve de concepts et certains scénarios de production.
Certains scénarios peuvent nécessiter que vous disposiez d’un schéma d’index personnalisé pour améliorer la pertinence en fonction des exigences de charge de travail spécifiques. Ces exigences déterminent la façon dont vous concevez le schéma, activez les fonctionnalités d’index et incluez des métadonnées pertinentes.
Conception du schéma
Vous pouvez considérer les index comme des structures qui organisent et optimisent les données pour la récupération. Plus précisément, ils organisent les données dans des documents et des champs d’une table. Considérations importantes :
Topologie d’index. Déterminez s’il faut colocaliser toutes les données dans un seul index ou les distribuer sur plusieurs index. Cette décision affecte considérablement les performances des requêtes, la maintenance d’index, la simplicité des requêtes et la configuration de champ dissimilante (ou schéma) entre les documents.
Par exemple, considérez les requêtes utilisateur qui demandent du contenu dans une langue spécifique. Le choix de conception de données le plus simple consiste peut-être à traduire toutes les langues en une seule langue et à les stocker dans un seul index. Ou bien, les données peuvent être stockées dans toutes les langues d’un seul index. Ce choix entraîne plusieurs documents pour chaque langue. La fonctionnalité de filtrage de l’index peut être utilisée pour limiter les résultats à la langue souhaitée. Par ailleurs, chaque index peut contenir les versions traduites d’une langue donnée comme prévu dans la requête.
Dans certaines situations, vous pouvez avoir besoin de plusieurs index de recherche. Cette approche vous permet d’optimiser indépendamment chaque index pour une pertinence maximale à partir de vos requêtes de recherche. Par exemple, un manuel des employés rh et un manuel de maintenance des produits servent différents objectifs et audiences. En les indexant séparément, vous pouvez personnaliser le schéma et rechercher des requêtes pour chacune d’elles, ce qui améliore l’expérience utilisateur. Cette approche peut être complexe à implémenter et nécessite un orchestrateur pour faciliter les appels à chaque index. Le composant d’orchestration est décrit dans la conception d’applications pour les charges de travail IA sur Azure.
Remarque
Le choix entre les deux topologies et la stratégie de segmentation des données dépend des exigences de charge de travail, des cas d’usage et des attentes des utilisateurs.
L’exécution de requêtes inter-index peut être difficile et peut affecter la pertinence de la recherche. Dans les pires scénarios, il peut y avoir un filtrage manuel des résultats, en choisissant ceux qui correspondent aux critères. Ce processus introduit la latence et ajoute de la complexité. En revanche, une approche d’index unique est plus simple et plus simple. La pertinence peut être améliorée à l’aide de fonctionnalités d’index telles que le filtrage.
Dans certains cas, les considérations relatives à la conformité entraînent la nécessité d’index distincts. Par exemple, si les exigences métier exigent que les données soient isolées entre l’Europe et l’Amérique, plusieurs index peuvent être inévitables.
Conception de document. Alignez votre conception de données avec les requêtes utilisateur attendues pour optimiser la pertinence. Réfléchissez à la façon dont chaque document doit servir des requêtes. Pour les index de recherche, hiérarchisez les documents pertinents et affinez les résultats à un ensemble concis contenant des informations pertinentes.
Conception de champ. Configurez vos champs d’index pour prendre en charge le niveau de performance et la pertinence de la recherche. Vos champs d’index doivent être mappés aux attributs de document que vous souhaitez rechercher, récupérer, filtrer et trier. Ils incluent des incorporations, des ID ou d’autres données qui peuvent stimuler la recherche.
Fonctionnalités d’index
Configurez les champs d’index de recherche pour retourner l’ensemble de documents le plus pertinent. La décision dépend des fonctionnalités prises en charge par la technologie de l’index de recherche et les exigences de charge de travail.
Options de filtrage, de recherche et de tri. Tenez compte de ces options, car elles sont directement liées aux cas d’usage pour l’augmentation. Par exemple, le filtrage détermine true ou false par rapport à une valeur fournie dans la requête et retourne des documents pertinents. Pour une possibilité de recherche, l’attribut indique si la requête de recherche peut référencer le champ. Par exemple, vous pouvez vérifier si un champ de texte contient du texte spécifique ou s’il est mathématiquement lié à un autre vecteur. Vous pouvez éventuellement affecter un poids relatif à ce champ dans le cadre de la requête de recherche. Vous pouvez également trier les jeux de résultats, qui répertorient les résultats par pertinence.
Compromis. L’activation des fonctionnalités pour indexer les champs augmente les besoins en espace, ce qui affecte les coûts. Ajoutez uniquement des fonctionnalités que vous envisagez d’utiliser.
Métadonnées. Les index ont généralement des métadonnées associées aux champs d’index. Les métadonnées nous aident à comprendre et à gérer les données en fournissant des détails pertinents sur celui-ci. Lors de la conception d’index, déterminez si les métadonnées sont récupérables ou utilisées uniquement pour la détermination de la pertinence. La décision affecte les coûts de calcul, car le processus d’indexation sous-jacent est différent. Les métadonnées excessives peuvent inutilement augmenter la taille de l’index.
Il existe de nombreux choix technologiques pour l’indexation. Beaucoup partagent des caractéristiques similaires, telles que celles répertoriées précédemment. Certains index peuvent avoir des fonctionnalités supplémentaires, telles que le traitement du texte et de l’analyse de la langue pendant l’indexation. Pour rendre le texte plus adapté à l’indexation et à la recherche, décomposez le texte en jetons, convertissez-le en minuscules ou supprimez les mots vides.
Interrogation efficace
Les données de base sont utilisées dans les applications IA génératives pour augmenter la précision et la pertinence des réponses aux requêtes utilisateur. Envisagez les requêtes utilisateur en amont. Comprenez les questions qui pourraient être posées, qui les demande et la fréquence à laquelle elles sont posées. Ces informations aident le contexte du formulaire d’application et à comprendre le résultat qui peut être pertinent.
Les types de recherches classiques sont les suivants :
Les requêtes vectorielles recherchent des éléments similaires en fonction de leurs représentations vectorielles ou de points de données dans un espace à grande dimension.
Recherche de mots clés recherche dans l’ensemble du contenu des documents textuels. Il indexe et interroge de grands volumes de données texte et est couramment utilisé dans les moteurs de recherche, les bases de données et les systèmes de gestion des documents.
Le classement sémantique améliore la pertinence des résultats de recherche en les réorganisant en fonction de leur pertinence sémantique pour la requête, en favorisant les correspondances les plus sémantiquement pertinentes en haut de la liste.
La recherche hybride combine différents types de recherche, tels que la recherche vectorielle, la recherche en texte intégral et le classement sémantique, pour améliorer davantage la pertinence des résultats de la recherche.
Pour améliorer davantage les performances du modèle, combinez des types de recherche.
La façon dont les données sont stockées et traitées a pour effet d’améliorer l’efficacité des requêtes. Chaque fois que les données sont ajoutées à un index, les cycles de calcul sont nécessaires pour l’indexation. Si l’indexation et la réponse aux requêtes sont effectuées sur les mêmes ressources de calcul, il peut y avoir une contention. Dans l’idéal, un index doit se concentrer sur l’objectif principal de répondre aux requêtes efficacement et de trouver des documents pertinents plutôt que d’indexer excessivement.
Les coûts et les performances sont les principaux moteurs de la conception d’index. Les techniques telles que la création de clichés instantanés peuvent accélérer l’interrogation. Toutefois, la duplication des données se produit par le biais d’index, ce qui entraîne des coûts.
Compromis. La conception d’index doit prendre en compte les coûts et les performances. Trouvez un équilibre en optimisant le stockage et en hiérarchisant les réponses aux requêtes efficaces et la récupération de documents pertinente sur une indexation excessive.
Pour les choix technologiques pour le magasin de données, les index de recherche, tels que Elasticsearch ou RECHERCHE IA, fournissent des fonctionnalités de recherche puissantes, notamment des recherches vectorielles et basées sur la pertinence. Vous pouvez également envisager des options de base de données qui prennent en charge le type de données dont vous avez besoin et les types de requêtes dont vous avez besoin, car elles sont optimisées pour l’interrogation. En fin de compte, il s’agit des fonctionnalités offertes par les options et l’investissement de la création de nouveaux ensembles de compétences sur l’équipe.
Préparation des données
Les données de base sont basées sur des données existantes, qui doivent être adaptées à l’interrogation sémantique. Certaines requêtes pour rechercher des documents pertinents dans l’index peuvent être des correspondances littérales. D’autres requêtes nécessitent une correspondance approximative.
Avant que les données contextuelles ne sont prêtes à prendre en charge les demandes d’inférence au modèle, il existe une étape de prétraitement initiale qui vise à nettoyer, transformer et structurer les données. L’objectif est de réduire le bruit et le biais, de rechercher efficacement et d’optimiser la pertinence des recherches d’index. Les outils de choix ou la logique de prétraitement dépendent de l’équipe de charge de travail, mais il existe quelques considérations générales.
Réscopation du volume de données
La rescoping du volume de données implique d’ajuster l’étendue des données en les développant ou en les rétrécissant pour créer un index serré afin que la pertinence soit augmentée. L’efficacité des requêtes est une autre préoccupation importante. Le stockage de données inutiles affecte négativement ces deux objectifs. Par exemple, considérez les données d’emplacement d’un utilisateur. Si seule la partie ville est pertinente, optimisez en stockant uniquement le texte de la ville au lieu du texte intégral qui représente l’adresse.
Voici quelques considérations générales.
Élimination des données. Conservez uniquement ce qui est essentiel pour les fonctionnalités du produit, en ignorant les détails inutiles. Voici quelques exemples courants.
Élimination qualitative. Une façon de passer d’une étendue large à une plus étroite plus relative consiste à éliminer les données de faible qualité en choisissant de manière sélective uniquement d’indexer les données sources pertinentes. Le défi réside dans l’identification programmatique du contenu qui n’est pas pertinent pour les scénarios d’IA. Bien que le contenu puisse être utile pour d’autres intentions, telles que l’audit ou l’exhaustivité, y compris dans les risques de charge de travail IA, ce qui réduit la pertinence. Une façon d’marquer ce contenu consiste à utiliser des métadonnées qui peuvent être utilisées au moment de l’alimentation de l’index si le contenu doit être ajouté à l’index.
Données sensibles. La copie de données provenant de données sources vers un index peut également apporter des informations sensibles. Respectez les étiquettes de classification des données appliquées à la source et conservez le même niveau de confidentialité à ce jeu de données. Lorsque vous traitez des données contenant des informations personnelles, ne stockez pas de données personnelles, sauf si vous en avez besoin pour répondre à la requête. Par exemple, appliquez la classification des données lors de l’indexation des e-mails. Si un e-mail est marqué comme sensible, évitez de le stocker dans un magasin de données de confidentialité général.
Normalisation et normalisation du texte. L’adressage des fautes de frappe et de la normalisation du texte est essentiel pour les index basés sur des mots clés. Un cas d’usage potentiel est des traductions, en particulier lorsque vous traitez de contenu multilingue.
Ce type de prétraitement est également nécessaire pour les incorporations, ce qui vous permet de comparer les mots en fonction de leur contexte et de leur signification. Toutefois, un défi se produit à partir de la sensibilité de la casse des mots. Le contexte importe, et il peut y avoir des nuances, telles que les différences sémantiques entre l’adjectif « civique » et le nom approprié « (Honda) Civic ».
Ajout de données. L’augmentation du contexte repose souvent sur les métadonnées, qui ne sont généralement pas présentes dans les données sources. Par exemple, considérez un extrait de code de texte. Un humain dans la boucle ou l’IA crée des questions pertinentes qui peuvent être répondues à l’aide du contexte de l’extrait de code. Lorsque vous stockez ces questions en même temps que les données de base, les requêtes utilisateur peuvent être comparées aux requêtes générées pour évaluer la pertinence du document. La colocalisation de ces nouvelles données avec des données de base est un moyen puissant d’enrichir les données segmentées.
Un autre cas d’usage est l’ajout d’entités trouvées lors de l’analyse des données non structurées. Ces entités peuvent être ajoutées à l’index et utilisées pour rechercher et filtrer des systèmes externes ou pour effectuer des calculs complexes. Par exemple, si nous identifions un nom de société, nous pouvons rechercher son secteur ou d’autres informations pertinentes à partir d’une base de données externe et l’ajouter à notre index.
Envisagez de conserver la traçabilité des données. Il est important que les charges de travail IA effectuent le suivi de la source de données, car ces informations peuvent être perdues lorsqu’un système agrège différents composants en un seul index. Ces informations peuvent ne jamais être exposées aux utilisateurs, mais les informations sur les origines des données sont essentielles pour les équipes de gouvernance des données internes. Ces métadonnées ne sont pas nécessairement destinées au modèle. Il permet de maintenir la transparence et la responsabilité.
Compromis. D’une part, l’ajout de nouvelles données augmente les chances de trouver une pertinence dans le jeu de données. Toutefois, cet avantage est coûteux. Plus précisément, les ressources de calcul requises pour traiter et gérer ce champ. Le temps passé à collecter et stocker des données peut être important. N’oubliez pas que la surcharge avec des champs inutiles peut forcer les ressources.
Traitement des données de texte. Envisagez des techniques telles que les synonymes, la recherche de recherche et la proximité sémantique pour améliorer la pertinence. Déléguer ces techniques aux outils si possible. Certaines technologies, telles que Elasticsearch ou la recherche IA, offrent de telles fonctionnalités pour le prétraitement des données lors de la création d’index.
Morphose de type de données
Les champs d’index d’un magasin de données sont typés de données à des fins spécifiques. Les champs numériques facilitent l’interrogation efficace, les champs de texte permettent des recherches basées sur du texte et les champs booléens gèrent les informations binaires.
Les données sources existent généralement dans différents types de données, tels que du texte, des images et des tables, et le traitement de ces données peut être complexe. Vous devrez peut-être extraire des paires clé-valeur, identifier les en-têtes de section pour la segmentation sémantique, reconnaître des identificateurs spécifiques, et ainsi de suite.
Par exemple, si vos données sources contiennent des images, elles ne peuvent pas faire l’objet d’une recherche inhérente. Ils doivent être convertis en représentations vectorielles pour permettre des recherches sémantiques et des comparaisons efficaces. Si la pertinence est liée aux données derrière ces formats, investissez dans l’extraction des données. Transformez les types de données sources en types de données fonctionnels qui aident à interroger et à analyser.
Segmentation et incorporation
La mise à l’échelle des données contient souvent un grand volume d’informations, mais le modèle est en mesure de tokeniser uniquement une certaine quantité. La segmentation est une stratégie de conception de données importante, car elle implique de diviser un document en éléments plus petits qui peuvent être traités individuellement et indexés. Cette stratégie permet une recherche et une récupération efficaces malgré les limitations des jetons. Vérifiez le nombre maximal de jetons que votre choix de modèle de langage volumineux peut gérer. Vos blocs ne doivent pas dépasser cette limite.
Il existe de nombreuses techniques pour implémenter la segmentation. Pour plus d’informations, consultez les approches de segmentation.
Les incorporations sont également une autre stratégie de conception qui permet des fonctionnalités de recherche vectorielle. Les incorporations sont une représentation mathématique d’un objet généré par des modèles IA basés sur des données de base. Ils sont stockés dans l’index et ajoutent davantage de contexte qui aide les requêtes complexes à générer des résultats avec une meilleure pertinence. Pour plus d’informations, consultez Générer une implémentation.
Maintenance d’index
La maintenance au fil du temps est un aspect crucial de la conception d’index. Pour les données statiques, où les documents restent inchangés, la maintenance des index est simple. Mais la plupart des index sont dynamiques. Au fil du temps, il peut y avoir de nouvelles données ajoutées et le schéma d’index peut avoir besoin de nouveaux champs. À l’inverse, certaines données et champs doivent être supprimés s’ils ne sont plus pertinents. Les options technologiques couramment utilisées pour les indexeurs ont des fonctionnalités permettant de gérer automatiquement les mises à jour. Pour plus d’informations sur les caractéristiques d’index recommandées, consultez Considérations relatives à un index de recherche.
Critères de maintenance
Mises à jour des fonctionnalités. L’index peut avoir besoin d’être mis à jour s’il existe une modification des fonctionnalités de l’application. Cette situation se produit lorsque de nouvelles questions sont posées. Pour prendre en charge ces modifications, vous devrez peut-être ajouter de nouveaux champs à l’index ou modifier les options de filtrage, de recherche ou de traitement de texte sur les champs existants.
Suppression des données. La suppression des données est difficile, car vous devez analyser les données disponibles et manquantes pour déterminer ce qui n’est pas pertinent. Pour exclure le contenu obsolète d’un index, envisagez l’utilisation de métadonnées qui empêchent les moteurs de recherche d’indexer des pages ou du contenu spécifiques. En outre, lorsque vous choisissez des options de stockage, sélectionnez une technologie qui prend en charge les suppressions efficacement. Par exemple, le stockage d’objets blob prend en charge les suppressions réversibles. Si vous utilisez la recherche ia et le chargement de documents à partir du stockage, le stockage d’objets blob peut détecter les documents supprimés et supprimer les entrées correspondantes. Cette approche n’est pas idéale, mais elle est nécessaire lorsque la réindexation est coûteuse en raison d’une grande taille d’index.
Le concept du droit d’être oublié fait référence au droit d’un individu d’avoir ses données personnelles supprimées des plateformes ou bases de données en ligne. Assurez-vous que vous disposez de stratégies en place pour supprimer des données personnelles si elles ont été utilisées pour la formation. Vous pouvez répondre à cette exigence en réindexant votre jeu de données. Si les données sont supprimées de la base de données transactionnelle, les mises à jour d’index suivantes reflètent ces modifications.
Maintien de la compatibilité. Les applications nécessitent souvent des structures de données spécifiques, et tout écart peut perturber leurs fonctionnalités. Par exemple, si un champ est supprimé et que l’application demande ce champ, une condition d’échec peut se produire. Comme vous le feriez pour une base de données traditionnelle, adoptez un état d’esprit de compatibilité avancée pour les index et maintenez un niveau de rigueur. Lorsque vous apportez des modifications à l’index, telles que l’ajout ou la suppression de champs, coordonnez les modifications de schéma avec les mises à jour du code.
Compromis. Les actions d’ajout, de mise à jour et de suppression sur un index sont coûteuses. Tenez compte de la fréquence des mises à jour et du coût des performances en fonction de la taille et de l’efficacité du magasin de données. La conservation des documents obsolètes dans l’index entraîne des coûts de stockage, de maintenance et d’interrogation.
Stratégie de déploiement
Stratégie de déploiement. Il existe deux stratégies principales pour mettre à jour l’index.
Déploiements côte à côte. Dans cette approche, un nouvel index qui a des mises à jour réside en même temps que celui existant. Une fois que le nouvel index est testé et entièrement opérationnel, les requêtes sont basculées pour utiliser l’index mis à jour. L’application reste au courant de ce commutateur, car elle interagit uniquement avec le nouvel index. Si vous découvrez d’autres problèmes une fois que le nouvel index est déployé en production, vous pouvez revenir à l’ancien index. Cette approche réduit les temps d’arrêt et garantit une disponibilité continue.
Les mises à jour côte à côte fonctionnent bien lorsque le coût de la reconstruction de l’index est raisonnable et peut être effectué dans un délai raisonnable. En général, essayez de maintenir les index aussi efficaces que possible, car les index plus volumineux consomment plus de ressources. Surveillez et gérez régulièrement les index pour éviter une croissance inutile.
Conseil
Lorsque vous effectuez des tâches de prétraitement des données gourmandes en ressources, telles que la reconnaissance d’entité, les recherches et les calculs, envisagez d’enregistrer une copie des résultats. Cette approche garantit que lorsque vous avez besoin de reconstruire l’index, vous pouvez éviter de rétablir tous les calculs. Certains calculs peuvent ne plus s’appliquer en raison de suppressions ou de mises à jour, mais beaucoup restent pertinents.
Déploiements de mises à jour sur place. Cette approche modifie directement l’index existant. L’économie du coût de la duplication peut être bénéfique, mais elle introduit également des risques en raison d’un temps d’arrêt potentiel et d’opérations gourmandes en ressources. Si votre index est volumineux et regénéré à partir de zéro dépasse la fréquence de mise à jour souhaitée, vous pouvez envisager d’utiliser des mises à jour sur place. Toutefois, cette approche est difficile et porte le risque de violation de votre objectif de niveau de service (SLO).
Compromis. Évaluez le coût de l’exécution de déploiements côte à côte d’index par rapport à l’exécution de mises à jour sur place qui déploient des ajouts, des mises à jour et des suppressions. Dans la plupart des cas, vous devez utiliser des mises à jour côte à côte plutôt que des mises à jour sur place. Lorsqu’un index est reconstruit, le processus gère efficacement les suppressions et les mises à jour, car il crée un jeu de données complètement nouveau. Cette stratégie offre la possibilité de tester les données. Même si les déploiements côte à côte dupliquent temporairement les données et entraînent des coûts supplémentaires, les avantages des tests et de l’évaluation des performances justifient souvent cette exigence de stockage. Avant de rendre un index actif, examinez les données pour vous assurer qu’elles s’alignent sur vos attentes.
Mises à jour planifiées. Au lieu de maintenir une communication en temps réel continue avec des sources de données, vous pouvez actualiser régulièrement les données de base. Cette approche garantit que les données restent pertinentes par le biais de mises à jour planifiées, ce qui élimine la nécessité d’une interaction constante.
Mises à jour d’urgence. Des situations inattendues peuvent se produire, telles que les données indésirables qui fuient par inadvertance dans l’index de recherche. Si ce problème se produit, vous devrez peut-être prendre des mesures immédiates, telles que la suppression de documents spécifiques ou l’ajustement des données dans l’index. Quelle que soit la stratégie de déploiement que vous choisissez, comme les mises à jour côte à côte ou les mises à jour sur place, planifiez toujours la possibilité d’opérations d’urgence.
Index de mise à jour automatique. Si votre technologie d’indexation prend en charge la mise à jour automatique de l’index pour qu’il reste synchronisé avec une source de données externe, il peut être en mesure de traiter automatiquement les modifications dans les données. Les modifications de données incluent des ajouts ou des suppressions, sans intervention manuelle. N’oubliez pas que chaque modification déclenche une opération dans l’index, qui consomme des ressources. L’index peut rester réactif aux requêtes, mais sa capacité de gestion peut être réduite pendant le processus de mise à jour.
Opérations d’actualisation
Mesurez la fenêtre de temps entre la création ou la modification de données sources et son ajout à l’index en tant qu’indicateur, puis suivez-la par rapport aux SLO. Cet indicateur détermine les décisions de données relatives à la mise à jour de la conception de votre pipeline de données pour vous assurer que les données sont disponibles dans votre index lorsque vous en avez besoin. Un index ne doit être aussi frais que nécessaire.
Pour maintenir l’actualisation, vous pouvez reconstruire entièrement l’index ou le mettre à jour de manière incrémentielle pour rester synchronisé avec les sources de données d’origine. Les deux méthodes garantissent que l’index reste actuel et précis.
L’investissement initial dans le réglage précis du modèle peut être moins coûteux que l’implémentation d’un modèle RAG, l’ingénierie rapide et les méthodes d’augmentation des données.