Vers une récupération d'informations améliorée dans la Suite Elastic : la récupération hybride

info-retrieval-blog-720x420-v1.jpeg

Dans notre dernier article, nous avons présenté Elastic Learned Sparse EncodeR (ELSER), un modèle entraîné pour une récupération de texte zero-shot. Elasticsearch® propose également d'excellentes fonctionnalités de récupération lexicale et des outils robustes pour combiner les résultats de différentes requêtes. Dans cet article, nous aborderons le concept de "récupération hybride" et étudierons deux mises en œuvre concrètes disponibles dans Elasticsearch. Nous verrons comment améliorer les performances d'Elastic Learned Sparse EncodeR en le combinant à la fonction BM25 avec la fusion des rangs réciproques et la somme pondérée des scores.

Nous discuterons aussi d'expériences que nous avons menées à bien pour explorer certaines questions générales concernant la recherche. Parmi celles-ci, nous verrons comment paramétrer au mieux la fusion des rangs réciproques et comment étalonner la somme pondérée des scores.

Video thumbnail

La récupération hybride

Même si les pipelines d'entraînement modernes produisent des modèles de récupération dont les performances sont bonnes dans les scénarios zero-shot, on sait que les méthodes de récupération lexicale (comme BM25) et de récupération sémantique (comme ELSER) peuvent se compléter dans une certaine mesure. Plus précisément, la pertinence s'améliore lorsqu'on combine les résultats les deux méthodes de récupération, si l'on part du principe qu'il y a plus de correspondances entre les documents pertinents qu'elles récupèrent qu'entre les documents non pertinents qu'elles récupèrent.

C'est une hypothèse qui est plausible pour les méthodes utilisant des mécanismes de récupération très différents, car il y a plus de documents non pertinents que de documents pertinents pour la plupart des requêtes et des corpus. Si les méthodes récupèrent des documents pertinents et non pertinents de manière indépendante et aléatoire, la probabilité que les documents pertinents correspondent est plus forte. Nous avons effectué des mesures de chevauchement pour vérifier cette hypothèse avec le modèle ELSER, la fonction BM25 et d'autres méthodes de récupération denses, comme le montre le tableau 1. Ces résultats permettent de justifier l'utilisation de la recherche dite "hybride". Dans l'exemple suivant, nous étudions deux mises en œuvre explicites de la recherche hybride.

Tableau 1 : Coefficients de chevauchement (ou de Szymkiewicz–Simpson) pour trois méthodes de récupération
Tableau 1 : Coefficients de chevauchement (ou de Szymkiewicz–Simpson) pour trois méthodes de récupération comparées à ELSER pour les 1 000 premiers documents de l'ensemble ArguAna

La fusion des rangs réciproques

La fusion des rangs réciproques a été proposée dans cet article. Elle est facile à utiliser, étant donné qu'elle ne nécessite aucune supervision, ni même aucun étalonnage des scores. Son fonctionnement est le suivant : elle classe un document d à la fois avec BM25 et un modèle, puis calcule son score en fonction de la position où il se classe pour les deux méthodes. Les documents sont triés par ordre décroissant. Le score se calcule de la façon suivante :

reciprocal rank fusion

La fusion des rangs réciproques utilise une constante k pour ajuster l'importance des documents moins bien classés. Elle est appliquée à l'ensemble des N premiers documents récupérés par chaque méthode. Si un document ne fait pas partie des N premiers documents pour l'une ou l'autre de ces méthodes, le terme est alors défini sur zéro.

L'article qui présente la fusion des rangs réciproques suggère d'appliquer une valeur de 60 à la constante k et ne mentionne pas le nombre N de documents à récupérer. Il est clair que la qualité du classement peut être influencée par l'augmentation du nombre N, alors que l'indicateur "recall@N" augmente pour chaque méthode. Sur le plan qualitatif, plus la valeur k est élevée, plus les documents moins bien classés sont importants dans l'ordre final. Toutefois, les valeurs optimales de k et de N ne sont pas vraiment claires pour la récupération hybride lexicale/sémantique. Par ailleurs, nous souhaitions comprendre dans quelle mesure les résultats sont sensibles au choix des paramètres, et si les valeurs optimales étaient approximativement les mêmes entre les ensembles de données et les modèles. Dans le cadre d'une configuration zero-shot, il est important d'avoir confiance dans la méthode appliquée.

Pour étudier ces questions, nous avons créé une grille de recherche pour optimiser le gain cumulé actualisé normalisé (NDCG) moyen pondéré des 10 premiers documents d'un sous-ensemble du groupe de référence BEIR pour un éventail de modèles. Dans le cadre de cette expérience, nous nous sommes servis d'Elasticsearch pour la récupération, en représentant chaque document par un champ textuel et un vecteur uniques. La recherche BM25 a été réalisée avec une requête match, et la récupération dense, avec une recherche par vecteur exact avec une requête script_score.

semantic retrieval
Tableau 2 : NDCG moyen des 10 premiers documents sur un sous-ensemble du groupe de référence BEIR (webis-touche2020, scidocs, nq, hotpotqa, fiqa, dbpedia-entity, arguana, trec-covid, nfcorpus), pondéré en fonction du nombre de requêtes selon différents paramètrages de valeur "k" et de nombre "N premiers" à l'aide du bi-encodeur roberta-base-ance-firstp pour la récupération sémantique

Si l'on se réfère au tableau 2, nous constatons que, pour roberta-base-ance-firstp, les valeurs optimales de k et de N sont respectivement 20 et 1 000. Soulignons que, pour la plupart des ensembles de données individuels, la même combinaison de paramètres était optimale. Nous avons procédé avec la même grille de recherche pour distilbert-base-v3 et minilm-l12-v3, et nous en avons tiré la même conclusion pour chacun de ces modèles. Il est également intéressant de noter que la différence entre la meilleure combinaison de paramètres et la pire est d'environ 5 %. Aussi, la pénalité en cas de mauvaise configuration des paramètres est relativement petite.

Nous voulions aussi voir si nous pouvions améliorer les performances d'ELSER dans une configuration zero-shot à l'aide de la fusion des rangs réciproques. Les résultats obtenus avec le groupe de référence BEIR sont fournis dans le tableau 3.

NDCG@10 comparison
Tableau 3 : Comparaison du NDCG des 10 premiers documents entre BM25 (en utilisant Elasticsearch 8.8 avec l'analyseur en anglais par défaut), et BM25 et ELSER combinés via la RRF en utilisant k = 20 et N = 1 000

La fusion des rangs réciproques améliore le NDCG moyen des 10 premiers documents de 1,4 % par rapport à l'utilisation du modèle ELSER seul et de 18 % par rapport à l'utilisation de la fonction BM25 seule. Il est également important de noter que les résultats sont soit meilleurs, soit similaires à ceux obtenus lorsque BM25 est utilisée seule sur tous les ensembles de données test. Cette amélioration du classement n'implique pas de régler le modèle, d'entraîner les ensembles de données, ni de procéder à un étalonnage quelconque. Le seul inconvénient qui ressort actuellement est que la latence des requêtes augmente, étant donné que les deux requêtes sont exécutées de manière séquentielle dans Elasticsearch. Cet inconvénient est atténué par le fait que la récupération avec BM25 est généralement plus rapide que la récupération sémantique.

D'après nos conclusions, il est possible d'utiliser la fusion des rangs réciproques en toute sécurité en tant que stratégie immédiatement opérationnelle. Par ailleurs, il peut être intéressant pour vous d'étudier la qualité des résultats obtenus avec BM25, ELSER et la fusion de leurs rangs sur vos propres données. Si l'approche la plus performante est choisie sur chaque ensemble de données individuel du groupe de référence BEIR, l'augmentation du NDCG moyen des 10 premiers documents est respectivement de 3 % et de 20 % par rapport à l'utilisation du modèle ELSER seul ou de la fonction BM25 seule. 

Dans le cadre de ces travaux, nous avons également procédé à une classification simple des requêtes pour faire la distinction entre les recherches par mot-clé et les recherches par question naturelle. Le but était de comprendre les mécanismes permettant à une méthode donnée d'offrir les meilleures performances. Pour l'instant, nous n'avons pas d'explication claire en la matière, et nous prévoyons donc de creuser davantage le sujet. Nous avons cependant été en mesure de déterminer que la recherche hybride offre des performances solides lorsque les deux méthodes ont une précision globale similaire.

Enfin, il est possible d'utiliser la fusion des rangs réciproques avec plus de deux méthodes ou pour combiner les classements à partir de différents champs. Pour l'instant, nous ne sommes pas encore penchés sur le sujet.

La somme pondérée des scores

Autre possibilité d'exécuter la récupération hybride prise en charge par Elasticsearch : en combinant les scores de BM25 aux scores d'un modèle à l'aide d'une fonction linéaire. Cette approche a été étudiée dans cet article. Il apparaît que cette technique est plus efficace que la fusion des rangs réciproques lorsqu'elle est bien étalonnée. Nous nous sommes intéressés à la recherche hybride en utilisant une combinaison linéaire convexe de scores, telle que définie ci-dessous :

weighted sum of scores

α est la pondération du score du modèle, comprise entre 0 et 1.

Pour que la combinaison linéaire soit étalonnée de manière optimale, la tâche n'est pas simple, car il est nécessaire d'utiliser des annotations similaires à celles du réglage d'un modèle. Avec un ensemble de requêtes et les documents pertinents associés, nous pouvons appliquer n'importe quelle méthode d'optimisation pour déterminer la combinaison idéale afin de récupérer ces documents. Lors de nos expériences, nous avons utilisé les ensembles de données du groupe de référence BEIR et appliqué l'optimisation bayésienne pour identifier la meilleure combinaison, afin d'optimiser le NDCG des 10 premiers documents. En théorie, il est possible d'intégrer le ratio de l'échelle de scores à la valeur acquise pour α. Toutefois, dans les expériences suivantes, nous avons normalisé les scores de BM25 et d'ELSER pour chaque ensemble de données à l'aide de la normalisation min-max. Nous avons ainsi calculé la valeur minimale et maximale à partir des 1 000 premiers scores de quelques requêtes représentatives pour chaque ensemble de données. En procédant ainsi, nous espérions que la valeur alpha optimale ressortirait. Nous n'avons rien constaté en ce sens, toutefois le processus a gagné en cohérence. La normalisation a donc certainement une incidence sur la robustesse de l'étalonnage.

L'obtention d'annotations a un certain coût. Il est donc utile de connaître le volume de données à collecter pour avoir de meilleures performances qu'avec la fusion des rangs réciproques (RRF). La figure 1 présente le NDCG des 10 premiers documents pour une combinaison linéaire des scores de BM25 et d'ELSER comme une fonction du nombre de requêtes annotées pour l'ensemble de données ArguAna. Le NDCG des 10 premiers documents pour BM25, ELSER et la RRF est également fourni à titre indicatif. Ce type de courbe est courant pour les ensembles de données. Dans le cadre de nos expériences, nous avons constaté qu'il était possible de surpasser la RRF en utilisant environ 40 requêtes annotées. Ce seuil varie légèrement d'un ensemble de données à l'autre.

NDCG@10 evolution
Figure 1 : Évolution du NDCG des 10 premiers documents selon le nombre de requêtes utilisées pour optimiser alpha (sur l'ensemble de données ArguAna)

Nous avons également observé que la pondération optimale varie de manière significative selon l'ensemble de données (voir la figure 2) et le modèle de récupération utilisé. C'est le cas même après que les scores ont été normalisés. C'est tout à fait normal dans la mesure où la combinaison optimale dépend des performances de chaque méthode pour un ensemble de données.

Pour étudier la possibilité d'un paramétrage zero-shot, nous avons fait des expériences en appliquant une valeur α à pondération unique pour tous les ensembles de données contenus dans notre groupe de référence. Même si nous avons procédé en utilisant la même approche supervisée, cette fois-ci en choisissant la pondération pour optimiser le NDCG moyen des 10 premiers documents pour tous les ensembles de données, nous estimons qu'il y a suffisamment de variations entre les ensembles de données pour que les résultats que nous avons obtenus puissent être représentatifs des performances zero-shot. 

Pour résumer, cette approche renvoie un meilleur NDCG moyen des 10 premiers documents que la RRF. Cependant, nous avons aussi constaté que les résultats étaient moins cohérents qu'avec la RRF. Nous insistons donc sur le fait que la pondération optimale dépend du modèle. C'est pourquoi nous doutons que l'approche s'applique à de nouveaux paramétrages, même lorsqu'elle est étalonnée pour un modèle spécifique. D'après nous, la combinaison linéaire n'est pas une approche immédiatement opérationnelle. Nous pensons qu'il est préférable d'évaluer avec soin les performances de la combinaison sur notre propre ensemble de données pour déterminer le paramétrage optimal. Toutefois, si cette combinaison est bien étalonnée, elle renvoie de très bons résultats, comme nous allons le voir ci-dessous.

 variability across BEIR datasets
Figure 2 : Variations de la valeur alpha sur les ensembles de données du groupe de référence BEIR. Pour obtenir ces variations, nous avons appliqué l'optimisation bayésienne et le test A/B.

La normalisation est essentielle pour pouvoir comparer des scores entre différents ensembles de données et différents modèles, car ces scores peuvent varier dans une large mesure si on ne les normalise pas. La normalisation n'est pas toujours simple à réaliser, en particulier pour la méthode Okapi BM25, où la plage de scores n'est pas connue tant qu'aucune requête n'a été émise. Les scores des modèles denses, quant à eux, sont plus faciles à normaliser étant donné qu'on peut normaliser leurs vecteurs. Toutefois, il convient de noter que certains modèles denses sont entraînés sans normalisation et peuvent proposer de meilleures performances avec des produits scalaires. 

ELSER est entraîné pour répliquer les marges des scores inter-encodeurs. En général, ce modèle produit des scores allant de 0 à 20, mais ce n'est pas une règle absolue. Globalement, l'historique d'une requête et les scores des N premiers documents peuvent être utilisés pour avoir une idée de la distribution et pour normaliser toute fonction de scoring avec les estimations minimale et maximale. Nous notons que la normalisation non linéaire pourrait améliorer la combinaison linéaire, par exemple en cas de valeurs anormales. Néanmoins, nous n'avons pas fait de test en ce sens.

En ce qui concerne la fusion des rangs réciproques, nous souhaitions comprendre la précision d'une combinaison linéaire de BM25 et d'ELSER, cette fois-ci dans le meilleur cas possible. Dans ce scénario, nous optimisons la valeur α à pondération unique pour chaque ensemble de données individuel afin d'obtenir le NDCG idéal des 10 premiers documents à l'aide de la combinaison linéaire. Nous nous sommes servis de 300 requêtes pour procéder à l'étalonnage. Nous avons estimé que ce volume était suffisant pour déterminer la pondération optimale pour les ensembles de données. En production, il est difficile d'obtenir ce cas de figure, étant donné qu'il nécessite à la fois une normalisation min-max précise et un ensemble de données représentatif annoté pour ajuster la pondération. Il faudrait également procéder à une actualisation en cas de changement dans les documents et les requêtes. Néanmoins, il est toujours intéressant de connaître les performances dans le meilleur cas de figure pour savoir si l'effort en vaut la peine. Les résultats sont présentés dans le tableau 4. Cette approche permet d'améliorer le NDCG moyen des 10 premiers documents de 6 % par rapport à l'utilisation du modèle ELSER seul et de 24 % par rapport à l'utilisation de la fonction BM25 seule.

Elastic Learned Sparse Encoder
Tableau 4 : Comparaison du NDCG des 10 premiers documents entre BM25 (en utilisant Elasticsearch 8.8 avec l'analyseur en anglais par défaut), ELSER, la RRF (k = 20 et N premiers = 1 000) et la combinaison linéaire (optimisée à l'aide des données d'évaluation)

Conclusion

Nous avons vu qu'il était possible de combiner différentes approches de récupération pour en améliorer les performances, en particulier pour la récupération lexicale et la récupération sémantique, qui se complètent. L'une des approches que nous avons étudiées était la fusion des rangs réciproques. C'est une méthode simple qui renvoie souvent de bons résultats sans avoir besoin d'annotations, ni de connaissance préalable de la distribution des scores. De plus, nous avons constaté que ses caractéristiques de performance étaient remarquablement stables quels que soient les modèles et les ensembles de données utilisés, ce qui nous permet d'affirmer que les résultats que nous avons observés seront similaires pour d'autres ensembles de données. 

Une autre approche que nous avons abordée est la somme pondérée des scores. Cette approche est plus difficile à configurer, mais elle a renvoyé de très bons classements lors de nos expériences grâce à une configuration appropriée. Pour utiliser cette approche, les scores doivent être normalisés. Pour BM25, il est nécessaire d'avoir les distributions de scores des requêtes types. Par ailleurs, des données annotées doivent être utilisées pour entraîner les pondérations.

Dans le dernier article de cette série, nous vous présenterons le travail que nous avons réalisé concernant l'inférence et les performances des index, alors que la fonctionnalité text_expansion passera prochainement en disponibilité générale.

Consultez les autres articles de cette série sur la récupération d'informations :

La publication et la date de publication de toute fonctionnalité ou fonction décrite dans le présent article restent à la seule discrétion d'Elastic. Toute fonctionnalité ou fonction qui n'est actuellement pas disponible peut ne pas être livrée à temps ou ne pas être livrée du tout.