Une fois que vous avez décomposé vos documents en une collection de segments, l’étape suivante consiste à enrichir chaque segment en nettoyant et en augmentant les segments avec des métadonnées. Le nettoyage des segments permet d’obtenir de meilleures correspondances pour les requêtes sémantiques dans une recherche vectorielle. L’ajout d’informations permet de supporter des recherches au-delà des recherches sémantiques des segments. Le nettoyage et l’augmentation impliquent tous deux l’extension du schéma pour le segment.
Cet article traite de différentes façons d’augmenter vos segments, y compris certaines opérations de nettoyage courantes que vous pouvez effectuer sur les segments pour améliorer les comparaisons vectorielles, et décrit quelques champs de métadonnées courants que vous pouvez ajouter à vos segments pour enrichir votre index de recherche.
Cet article fait partie d’une série. Lisez l’introduction.
Figure 1. Enrichir les segments avec des métadonnées
Nettoyage
Le chunking de vos données soutient votre charge de travail dans ses efforts pour trouver les segments les plus pertinents, généralement en vectorisant ces segments et en les stockant dans une base de données vectorielle. Une recherche vectorielle optimisée renvoie uniquement les lignes de cette base de données qui ont les correspondances sémantiques les plus proches de la requête. L’objectif du nettoyage des données est de soutenir les correspondances de proximité en éliminant les différences potentielles qui ne sont pas essentielles à la sémantique du texte. Voici quelques procédures de nettoyage courantes.
Remarque
Vous voudrez retourner le segment original, non nettoyé, comme résultat de la requête, donc vous ajouterez un champ supplémentaire pour stocker les données nettoyées et vectorisées.
- L’utilisation de minuscules : La mise en minuscule permet aux mots avec des majuscules, tels que les mots au début d’une phrase, de correspondre à ces mêmes mots dans une phrase. Les incorporations (embeddings) sont généralement sensibles à la casse, ce qui signifie que « Guépard » et « guépard » donneraient un vecteur différent pour le même mot logique. Par exemple, pour la requête incorporée : « Qu’est-ce qui est plus rapide, un guépard ou un puma ? » L’incorporation suivante : « les guépards sont plus rapides que les pumas » est une correspondance plus proche que l’incorporation de « Les guépards sont plus rapides que les pumas ».
- Supprimer les mots vides : Les mots vides sont des mots tels que , « un », « une » et « le » qui apparaissent couramment dans les phrases. Vous pouvez supprimer les mots vides pour réduire la dimensionnalité du vecteur résultant. La suppression des mots vides permettrait à la fois « un guépard est plus rapide qu’un puma » et « le guépard est plus rapide que le puma » pour être vectoriellement égal à « guépard plus rapide puma ». Toutefois, il est important de comprendre que certains mots vides contiennent une signification sémantique. Par exemple, « pas » peut être considéré comme un mot vide, mais aurait une signification sémantique significative. Il est important de tester pour voir l’effet de la suppression des mots vides.
- Corriger les fautes d’orthographe : Un mot mal orthographié ne correspond pas au mot correctement orthographié dans le modèle d’incorporation. Par exemple, « guépart » (sic) n’est pas identique à « guépard » dans l’incorporation. Vous devez corriger les fautes d’orthographe pour résoudre ce problème.
- Supprimer des caractères Unicode : La suppression des caractères Unicode peut réduire le bruit dans vos segments et réduire la dimensionnalité. Comme les mots vides, certains caractères Unicode peuvent contenir des informations pertinentes. Il est important de tester pour comprendre l’impact de la suppression des caractères Unicode.
- Normalisation : Normaliser le texte selon des standards tels que l’expansion des abréviations, la conversion des nombres en mots, et l’expansion des contractions comme « c’est » plutôt que « c » peut aider à augmenter la performance des recherches vectorielles.
Augmentation des segments
Les recherches sémantiques contre les segments vectorisés fonctionnent bien pour certains types de requêtes, mais pas aussi bien pour d’autres. Selon les types de requêtes que vous devez supporter, vous pourriez avoir besoin d’augmenter vos segments avec des informations supplémentaires. Les champs de métadonnées supplémentaires sont tous stockés dans la même ligne que vos embeddings et peuvent être utilisés dans la solution de recherche comme filtres ou comme partie de la recherche.
Figure 2 : Utilisation des métadonnées augmentées dans la solution de recherche
Les colonnes de métadonnées que vous devez ajouter dépendent de décisions spécifiques à votre domaine de problème. Cela inclut le type de données que vous avez et les types de requêtes que vous souhaitez supporter. Vous devez analyser l’expérience utilisateur, les données disponibles et la qualité des résultats que vous essayez d’atteindre. À partir de là, vous pouvez déterminer quelles métadonnées pourraient vous aider à répondre aux exigences de votre charge de travail.
Voici quelques champs de métadonnées courants, ainsi que le texte original du segment, quelques conseils sur leurs utilisations potentielles, et les outils ou techniques couramment utilisés pour générer le contenu des métadonnées.
- ID : L’ID est un champ de métadonnées clé qui est utilisé pour identifier de manière unique un segment. Un ID unique est utile dans le traitement pour déterminer si un segment existe déjà dans le magasin ou non. Un ID peut être un hachage de certains champs clés. Outils : Bibliothèque de hachage
- Titre : Un titre est une valeur de retour utile pour un segment. Il fournit un résumé rapide du contenu dans le segment. Le résumé peut également être utile pour interroger avec une recherche indexée car il peut contenir des mots-clés pour la correspondance. Outils : Grand modèle de langage
- Résumé : Le résumé est similaire au titre en ce qu’il s’agit d’une valeur de retour courante et peut être utilisé dans des recherches indexées. Les résumés sont généralement plus longs que le titre. Outils : Grand modèle de langage
- Reformulation du segment : La reformulation d’un segment peut être utile comme champ de recherche vectorielle car la reformulation capture les variations de langage telles que les synonymes et les paraphrases. Outils : Grand modèle de langage
- Mots clés : Les recherches par mots-clés sont bonnes pour les données non contextuelles, pour rechercher une correspondance exacte, et lorsqu’un terme ou une valeur spécifique est important. Par exemple, un constructeur automobile pourrait avoir des avis ou des données de performance pour chacun de leurs modèles pour plusieurs années. « Avis pour le produit X pour l’année 2009 » est sémantiquement similaire à « Avis pour le produit X pour 2010 » et « Avis pour le produit Y pour 2009 ». Dans ce cas, il serait préférable de chercher la correspondance sur des mots-clés pour le produit et l’année. Outils : Grand modèle de langage, RAKE, KeyBERT, MultiRake
- Entités : Les entités sont des informations spécifiques telles que des personnes, des organisations et des lieux. Comme les mots-clés, les entités sont bien pour les recherches de correspondance exacte ou lorsque des entités spécifiques sont importantes. Outils : SpaCy, Stanford Named Entity Recognizer (SNER), Scikit-Learn, Natural Language Toolkit (NLTK).
- Texte du segment nettoyé : Le texte du segment nettoyé. Outils : Grand modèle de langage
- Questions auxquelles le segment peut répondre : Parfois, la requête intégrée et le segment intégré ne sont pas une excellente correspondance. Par exemple, la requête peut être petite par rapport à la taille du segment. Il peut être préférable de formuler les questions auxquelles le segment peut répondre et de faire une recherche vectorielle entre la requête réelle de l’utilisateur et les questions pré-formulées. Outils : Grand modèle de langage
- Source : La source du segment peut être précieuse comme retour pour les requêtes. Elle permet à l’initiateur de la requête de citer la source originale.
- Langage : La langue du segment peut être bonne comme filtre dans les requêtes.
Économie de l’augmentation
L’utilisation de grands modèles de langage pour augmenter les segments peut être coûteuse. Vous devez calculer le coût de chaque enrichissement que vous envisagez et le multiplier par le nombre estimé de segments au fil du temps. Il est recommandé d’utiliser cette information, ainsi que vos tests de ces champs enrichis dans le cadre de la recherche, pour prendre une bonne décision commerciale.