Garantir une précision sémantique avec un score minimum

Améliorez la précision sémantique en utilisant des seuils de score minimum. Cet article présente des exemples concrets de recherche sémantique et hybride.

Elasticsearch est doté de nouvelles fonctionnalités pour vous aider à créer les meilleures solutions de recherche pour votre cas d'utilisation. Apprenez à les exploiter dans notre webinaire pratique dédié à la création d’une expérience Search AI moderne. Vous pouvez aussi démarrer un essai gratuit sur le cloud ou tester Elastic dès maintenant sur votre machine locale.

La recherche sémantique a ouvert un monde d'opportunités pour améliorer la pertinence des recherches. Les modèles clairsemés et denses de haute qualité, tels qu'ELSER, E5 et Jina Embedding v4, renvoient des résultats pertinents en fonction du sens des mots, plutôt que de la correspondance de mots-clés. Cependant, la recherche sémantique renvoie parfois des résultats non pertinents en fin de liste ou pour des requêtes dont l'index ne contient aucun résultat pertinent. Cette caractéristique des modèles clairsemés et denses peut induire les utilisateurs en erreur ou gaspiller des jetons précieux pour les grands modèles de langage (LLM).

Dans cet article, vous apprendrez comment utiliser le paramètre de score minimum pour augmenter la précision de vos résultats de recherche sémantique. Si vous souhaitez tester les exemples fournis dans cet article de blog, accédez au notebook Jupyter associé.

Contexte : précision et rappel

En matière de pertinence de recherche, la précision et le rappel sont des concepts clés. Nous encourageons vivement les lecteurs qui ne les connaissent pas encore à se familiariser avec ces concepts. Voici un résumé.

  • Précision : la fraction des résultats de recherche renvoyés qui sont pertinents pour l'utilisateur.
  • Rappel : la fraction de tous les documents pertinents du corpus inclus dans l'ensemble des résultats de recherche.

En d'autres termes, la précision consiste à ne renvoyer que les résultats pertinents, tandis que le rappel consiste à renvoyer tous les résultats pertinents. Comme vous pouvez l'imaginer, ces deux exigences sont souvent contradictoires. La recherche sémantique a généralement un rappel très élevé, mais peut être à la peine en termes de précision. Poursuivez votre lecture pour découvrir comment contourner ce problème.

Présentation du paramètre de score minimum

Le paramètre "min_score" nous permet d'améliorer la précision en fixant un score minimum, ce qui tronquera le résultat en supprimant toutes les correspondances dont le score est inférieur au seuil défini. Voici un exemple simple :

Normalisation du score

Définir un score minimum est une bonne chose ; cependant, tous les modèles sémantiques ne renvoient pas un score adapté à un seuil statique. ELSER, par exemple, renvoie un score qui n'est pas limité. Certains scores de modèles denses sont fortement regroupés et n'ont de sens que dans le contexte de la requête spécifique.

Pour la plupart des cas de recherche sémantique, nous recommandons d'utiliser une approche de normalisation avant d'appliquer le "min_score". La normalisation garantit que le score du document se situe dans un intervalle défini. Les extracteurs Elasticsearch proposent deux normalisateurs de ce type, "l2_norm" et "minmax". Le plus couramment utilisé est "minmax", car il est facile à comprendre et fonctionne bien dans de nombreux scénarios. Voici les principales propriétés de "minmax" :

  • Les scores des documents sont distribués entre 0 et 1.
  • Le document ayant le score le plus élevé est toujours noté 1.
  • Le document ayant obtenu le score le plus bas est toujours noté 0.
    • Cela peut le rendre moins adapté à la recherche par mots-clés. Voir la section "Recherche hybride" pour plus de détails.

Voici un exemple de requête sémantique normalisée avec min_score. La taille de la fenêtre de classement a été augmentée à 500 pour nous permettre de renvoyer une liste plus longue de résultats de recherche, en commençant à 100.

La taille a été définie sur une valeur plus élevée que celle habituellement observée en production. Cela nous permet de contrôler la qualité des résultats de recherche et de les optimiser.

Recherche hybride utilisant l'extracteur linéaire

Pour la recherche hybride, l'approche la plus simple consiste à normaliser tous les scores, à leur attribuer des pondérations et à appliquer un score minimal. Notez qu'en choisissant des pondérations dont la somme est égale à 1, le score total reste compris entre 0 et 1. Cela facilite l'interprétation des scores finaux et l'ajustement de min_score. Voici un exemple :

Recherche hybride à l'aide de la RRF

Avec le BM25, nous contrôlons souvent la précision par d'autres moyens, par exemple en utilisant l'opérateur AND ou minimum_should_match. De plus, les requêtes composées de termes uniques, précis et rares entraîneront naturellement des résultats de recherche peu nombreux, souvent tous très pertinents. Cela peut causer les problèmes suivants :

  • Les résultats situés plus loin dans le classement reçoivent un score normalisé faible dans l'extracteur BM25, même si le score BM25 absolu est proche des meilleurs résultats.
  • Si l'on ajoute un score BM25 très faible au score sémantique, le total peut être considéré comme le score sémantique.
  • L'absence de contribution au score BM25 peut entraîner la suppression du document par le min_score threshold.

Comme solution, nous pouvons plutôt utiliser la fusion des rangs réciproques (RRF) pour combiner les résultats BM25 et sémantiques. RRF contourne la difficulté de comparer les scores de différents algorithmes de recherche en se concentrant plutôt sur la position dans chaque ensemble de résultats. Dans ce scénario, le min_score est uniquement appliqué à l'extracteur sémantique.

Conclusion

En utilisant min_score, nous avons montré comment réduire le nombre de faux positifs dans nos ensembles de résultats causés par le fort rappel des algorithmes de recherche sémantique. Pour en savoir plus sur les extracteurs, veuillez consulter cet article de blog et la documentation d'Elasticsearch.

Pour aller plus loin

Prêt à créer des expériences de recherche d'exception ?

Une recherche suffisamment avancée ne se fait pas avec les efforts d'une seule personne. Elasticsearch est alimenté par des data scientists, des ML ops, des ingénieurs et bien d'autres qui sont tout aussi passionnés par la recherche que vous. Mettons-nous en relation et travaillons ensemble pour construire l'expérience de recherche magique qui vous permettra d'obtenir les résultats que vous souhaitez.

Jugez-en par vous-même