Recherche sémantique vs recherche lexicale vs recherche en texte intégral
Dans le monde numérique dans lequel nous vivons aujourd’hui, les moteurs de recherche sont devenus partie intégrante de nos vies, nous aidant à accéder rapidement et facilement à l’information. Au cœur de ces moteurs de recherche se trouvent les algorithmes de recherche d’information, qui déterminent comment l’information est récupérée.
Plusieurs algorithmes de recherche d’information sont disponibles, allant de méthodes traditionnelles telles que la recherche plein texte et lexicale à des techniques plus avancées comme la recherche sémantique. Chacun de ces algorithmes a ses propres avantages et inconvénients ; il est donc crucial pour nous de choisir le meilleur algorithme de recherche d’information adapté à notre cas d’utilisation.
Cet article abordera ces algorithmes de recherche d’information, en se concentrant plus particulièrement sur les recherches lexicale, plein texte et sémantique. Commençons par la plus simple : la recherche lexicale.
Recherche lexicale
La recherche lexicale, également appelée recherche par mots-clés, désigne un algorithme de recherche basé sur l’analyse du texte au niveau des mots (d’où son nom). Cet algorithme de recherche d’information fait correspondre les termes de la requête exactement tels qu’ils apparaissent dans le texte. Par exemple, si notre requête de recherche est « run », l’algorithme renverra toutes les occurrences du terme « run » dans un document.
La recherche lexicale est l’algorithme de recherche d’information le plus basique disponible, car elle ne renvoie que les termes d’un document qui contiennent une correspondance exacte avec notre requête. Cela rend la recherche lexicale particulièrement utile lorsque la précision et la spécificité sont requises, par exemple pour trouver des documents ou des enregistrements contenant une chaîne ou un mot spécifique.
Figure : Illustration d’une recherche lexicale simple.
Cependant, la simplicité de la recherche lexicale entraîne également plusieurs inconvénients. Premièrement, elle ne tolère pas les fautes de frappe dans notre requête. Par exemple, si nous saisissons par erreur « ron » au lieu de « run », nous n’obtiendrons pas les résultats que nous recherchons. Deuxièmement, la recherche lexicale ne tient pas compte des synonymes, de la racinisation ni de la lemmatisation. Par conséquent, rechercher « run » ne fera pas correspondre des mots similaires sous différentes formes, tels que « ran » ou « running ».
De plus, la recherche lexicale peut ne pas être la meilleure option si nous recherchons les enregistrements les plus pertinents en fonction de notre requête. Les documents ou enregistrements qui contiennent le terme de notre requête ne comportent aucune notion d’ordre ou de classement, ce qui rend difficile l’évaluation de la pertinence des résultats renvoyés par la recherche lexicale.
Comme vous pouvez le constater, la recherche lexicale présente assurément des limites importantes lorsqu’on considère les exigences de la plupart des cas d’utilisation de la recherche d’information. De plus, les utilisateurs ont souvent besoin de davantage de flexibilité concernant les termes inclus dans les résultats, ce qui manque également à la recherche lexicale. C’est là que la recherche plein texte entre en jeu.
Recherche plein texte
Une recherche plein texte fonctionne de manière similaire à une recherche lexicale, en cherchant à trouver des enregistrements contenant les termes de notre requête. Cependant, la recherche plein texte offre des capacités plus larges et plus avancées que la recherche lexicale, en répondant aux problèmes associés à la recherche lexicale.
La mise en œuvre de la recherche plein texte intègre souvent des techniques populaires de Natural Language Processing (NLP) telles que la racinisation et la lemmatisation. Cela signifie que lorsque nous recherchons le terme « run », tous les documents ou enregistrements contenant des mots similaires sous différentes formes, tels que « ran » ou « running », seront également inclus dans les résultats.
Figure : Illustration des progrès de la recherche plein texte par rapport à la recherche lexicale traditionnelle.
Pour trier les résultats de recherche en fonction de leur pertinence, nous pouvons également implémenter des algorithmes comme TF-IDF et BM25. Parlons plus en détail de ces deux algorithmes.
Fondamentaux de TF-IDF et BM25
Term Frequency-Inverse Document Frequency (TF-IDF) utilise une méthode statistique simple pour déterminer la pertinence d’un document ou d’un enregistrement pour un terme ou une requête donné. Il se compose de deux éléments :
Term Frequency (TF) : Cela calcule le nombre d’occurrences du terme de requête dans un document. Par conséquent, plus le terme de requête apparaît fréquemment dans un document, plus le score TF de ce document est élevé.
Inverse Document Frequency (IDF) : Cela calcule la proportion de documents dans l’ensemble de la collection qui contiennent le terme de requête.
L’objectif principal du composant IDF est de pénaliser les termes courants et moins significatifs tels que « a », « an », « the » et « and », qui ont tendance à apparaître dans presque tous les documents. Par exemple, si notre terme de requête est « mix and match », nous voulons que les documents les plus pertinents contiennent de nombreuses occurrences de « mix » et « match » plutôt que de nombreuses occurrences de « and ». Enfin, le score TF-IDF final d’un document est obtenu en multipliant les scores TF et IDF.
L’un des principaux inconvénients de TF-IDF est qu’il ne prend pas en compte la longueur du document lors du calcul de la pertinence. En réalité, les documents plus longs sont plus susceptibles de contenir notre terme de requête plus fréquemment. Par exemple, si notre terme de requête apparaît 10 fois dans un document de 1 000 mots (Document A), tandis qu’il n’apparaît que 5 fois dans un document de 50 mots (Document B), nous pourrions soutenir que le Document B pourrait être plus pertinent malgré un nombre d’occurrences plus faible.
BM25 répond à cette limite de TF-IDF en introduisant des termes supplémentaires et en développant l’équation TF-IDF afin de tenir compte de la longueur du document.
Ce faisant, BM25 élimine le biais en faveur des documents plus longs lorsqu’il mesure la pertinence d’un document pour une requête donnée.
Le concept d’embedding creux
TF-IDF et BM25 peuvent tous deux être représentés sous forme d’embeddings creux. Un embedding creux est un vecteur à n dimensions, dont la dimensionnalité dépend du nombre de termes uniques dans notre corpus ou notre collection de documents.
Par exemple, supposons que nous ayons 10 documents contenant au total 10 000 mots uniques. Chaque document serait alors transformé en un vecteur à 10 000 dimensions, chaque dimension représentant l’importance d’un terme particulier dans ce document.
Figure : Illustration de la transformation d’un document en embedding creux.
Étant donné que la dimensionnalité du vecteur est déterminée par le nombre de termes uniques dans le corpus, nous nous retrouvons souvent avec des vecteurs de très grande dimensionnalité. De plus, comme un document ne contient généralement qu’une petite fraction des termes disponibles, une très grande majorité des éléments de ces vecteurs seront égaux à zéro, comme vous pouvez le voir dans l’image ci-dessus. C’est pourquoi de tels vecteurs sont généralement appelés embeddings creux.
Maintenant que tous les documents sont représentés sous forme d’embeddings, nous pouvons calculer la similarité entre deux embeddings quelconques à l’aide d’algorithmes courants comme la similarité cosinus ou la distance euclidienne. L’intuition est que deux documents présentant des termes similaires de grande importance auront une similarité élevée.
Malgré les avantages des embeddings clairsemés dans la recherche en texte intégral, il existe un inconvénient majeur : ils ne tiennent pas compte de la signification sémantique des termes de la requête. Par exemple, si notre requête est « Apple device », les documents qui contiennent de nombreuses occurrences de « apple » (le fruit) peuvent être mieux classés que les documents technologiques plus pertinents pour notre requête, mais qui ne contiennent pas le terme « Apple » (l’entreprise).
Figure : Exemples de requêtes nécessitant une compréhension sémantique et du contexte.
Lorsque l’inclusion de résultats ayant des significations sémantiques similaires est une exigence pour notre cas d’utilisation, la recherche en texte intégral n’est peut-être pas le meilleur algorithme de recherche d’information à utiliser. C’est là que la recherche sémantique entre en jeu.
Recherche sémantique
La recherche sémantique est une approche utile lorsque nous voulons des résultats de recherche qui tiennent compte de la signification sémantique. En reprenant l’exemple mentionné dans la section précédente, lorsque nous saisissons une requête comme « Apple device », nous ne recherchons pas réellement des documents ou des enregistrements contenant le mot « apple ». Nous recherchons plutôt des documents qui traitent de technologies, de préférence d’appareils Apple. Dans ce cas, la recherche en texte intégral produirait des résultats indésirables, ce qui fait de la recherche sémantique la meilleure option.
Le concept d’embedding dense
La recherche sémantique fonctionne en utilisant des modèles d’IA sophistiqués pour transformer nos documents et les termes de nos requêtes en embeddings. Toutefois, les embeddings produits par ces modèles, souvent appelés embeddings denses, diffèrent des embeddings clairsemés évoqués précédemment.
Dans les embeddings denses, les valeurs de chaque dimension vectorielle sont rarement exactement nulles, et la dimensionnalité elle-même dépend du modèle utilisé. Cependant, la dimensionnalité des embeddings denses est bien inférieure à celle des embeddings clairsemés.
Figure : Illustration de la transformation d’un document en embedding dense.
Les embeddings denses contiennent des informations sémantiquement riches sur le contenu qu’ils représentent. Par conséquent, pour déterminer à quel point deux embeddings denses sont similaires sur le plan sémantique, nous pouvons simplement utiliser des algorithmes de similarité populaires comme la similarité cosinus ou la distance euclidienne.
Le rôle des bases de données vectorielles dans la recherche sémantique
Dans les applications réelles de recherche d’information, nous sommes susceptibles de traiter des millions, voire des milliards d’embeddings denses. Il est donc peu pratique de stocker tous ces embeddings dans la mémoire de notre ordinateur ; nous avons besoin d’un système de base de données capable de les stocker efficacement.
Une base de données vectorielle est un système qui nous permet de stocker efficacement de vastes quantités d’embeddings denses en employant des méthodes d’indexation avancées telles que les plus proches voisins approximatifs (ANN) et le hierarchical navigable small world (HNSW). Elle fournit également des fonctionnalités permettant d’effectuer des opérations de recherche vectorielle afin de trouver les documents les plus pertinents sémantiquement pour notre requête à l’aide d’algorithmes de similarité populaires comme la similarité cosinus et la distance euclidienne.
Figure : Flux de travail pour effectuer une opération de recherche vectorielle.
De plus, les bases de données vectorielles populaires comme Milvus offrent des fonctionnalités avancées telles que la recherche hybride, qui nous permet d’effectuer des recherches vectorielles en combinant les forces des plongements denses et clairsemés. Nous en discuterons plus en détail dans les sections suivantes.
Recherche lexicale vs recherche plein texte vs recherche sémantique
Maintenant que nous avons une compréhension détaillée de la recherche lexicale, plein texte et sémantique, comparons leurs mécanismes de correspondance, leur complexité, des exemples de cas d’utilisation et leurs performances.
| Recherche sémantique | Recherche lexicale | Recherche plein texte | |
|---|---|---|---|
| Mécanisme | Contexte et intention | Correspondance exacte | Mot-clé et pertinence |
| Complexité | Élevée | Faible | Moyenne |
| Performances | Plus lente | Rapide | Modérées |
| Cas d’utilisation | Systèmes basés sur le NLP, génération augmentée par récupération (RAG), applications alimentées par des LLM, systèmes de recommandation | Recherche simple | Systèmes riches en documents |
Tableau : Recherche lexicale vs recherche plein texte vs recherche sémantique
En ce qui concerne le mécanisme de correspondance, la recherche lexicale est la plus simple des trois, car elle fait correspondre les termes exacts de la requête. La recherche plein texte améliore la recherche lexicale en parcourant des documents entiers à la recherche d’occurrences des termes de la requête, ce qui nous permet de trier les résultats en fonction de leur pertinence par rapport à la requête. Pendant ce temps, la recherche sémantique fait correspondre les termes de la requête à une collection de documents en fonction du sens sémantique et du contexte, en utilisant des modèles avancés de deep learning et des techniques de NLP.
En ce qui concerne la complexité, la recherche lexicale est également l’option la plus simple. La recherche plein texte est légèrement plus complexe en raison de l’introduction d’algorithmes comme TF-IDF ou BM25, qui transforment les textes en plongements clairsemés. La recherche sémantique est la plus complexe, car elle emploie des modèles avancés de deep learning pour convertir les textes en plongements denses.
Par exemple, la recherche lexicale est un excellent choix lorsque la correspondance exacte est essentielle, comme pour localiser un nom de variable dans des recherches de code ou trouver un ID de produit dans un document. La recherche plein texte convient aux applications lorsqu’il s’agit de trouver des documents contenant des termes ou des concepts spéciaux dans la requête, comme la recherche dans des bases de données universitaires ou des référentiels juridiques. La recherche sémantique est idéale pour les cas d’utilisation où la compréhension du contexte est prioritaire, comme les chatbots de support client, les systèmes de recommandation et la découverte de contenu.
En ce qui concerne les performances, les recherches sémantique et plein texte sont relativement plus lentes en raison de leur complexité, tandis que la recherche lexicale est plus rapide grâce à son approche simple.
Le concept de recherche hybride
Compte tenu de la diversité ainsi que des avantages et inconvénients de chaque algorithme de recherche d’information, choisir le meilleur n’est pas facile et pourrait ne pas réellement répondre à toutes vos exigences. Dans les cas d’utilisation pratiques, nous pouvons même avoir besoin d’employer plus d’un algorithme pour répondre à divers besoins au sein de notre application, car les systèmes efficaces de recherche d’information doivent fournir à la fois une compréhension sémantique et une correspondance exacte des mots-clés pour les utilisateurs. La recherche hybride est un concept conçu pour relever ce défi.
La recherche hybride nous permet de combiner deux algorithmes de recherche différents, le plus souvent la combinaison de la recherche sémantique avec la recherche plein texte ou lexicale. Cependant, la mise en œuvre d’une recherche hybride présente des défis en raison des différents systèmes impliqués. Plus précisément, nous avons besoin d’une base de données vectorielle comme Milvus pour stocker les embeddings denses et effectuer des recherches sémantiques, ainsi que d’un moteur de recherche comme Elasticsearch pour effectuer des recherches plein texte.
Cependant, l’utilisation de deux systèmes distincts pour prendre en charge différents algorithmes de recherche introduit de nouvelles complexités. Cela signifie gérer des configurations et des tâches de maintenance séparées, ce qui peut entraîner des problèmes d’intégration par la suite. Cette approche peut également doubler nos coûts en nécessitant le stockage des données dans deux infrastructures.
Figure : Elasticsearch vs Milvus sur la recherche hybride.
Une meilleure solution consiste à utiliser un système unifié capable de faciliter à la fois les recherches sémantiques et plein texte/lexicales. Milvus est une base de données vectorielle open source parfaite pour ce cas, car elle prend en charge la mise en œuvre de recherches hybrides sémantiques et plein texte. De plus, Milvus prend également en charge la recherche avec filtrage des métadonnées, la recherche par plage, et le reranking pour obtenir les résultats les plus précis.
Avec Milvus, nous pouvons stocker toutes les données nécessaires pour divers types de recherches, y compris les embeddings denses, les embeddings clairsemés et les métadonnées. Cela nous permet d’effectuer des recherches hybrides, telles que des recherches sémantiques et plein texte ou lexicales. Grâce à ses méthodes d’indexation avancées, Milvus est également hautement optimisé pour les opérations de recherche vectorielle, accélérant considérablement le processus de recherche d’information par rapport à Elasticsearch.
Conclusion
Le choix de l’algorithme de recherche d’information joue un rôle important dans la détermination de l’efficacité et de la pertinence des résultats de recherche dans notre application. La recherche lexicale offre une correspondance exacte des termes, ce qui la rend idéale pour les scénarios où les correspondances exactes sont essentielles. La recherche plein texte apporte des avancées à la recherche lexicale en incorporant des techniques comme le stemming, la correspondance floue et le classement par pertinence avec des algorithmes comme TF-IDF et BM25, ce qui la rend adaptée aux applications riches en documents. Pendant ce temps, la recherche sémantique fournit des capacités de compréhension du contexte et de l’intention, ce qui la rend très utile pour les systèmes complexes basés sur le NLP, comme les chatbots de service client.
Cependant, à mesure que la demande de systèmes de recherche flexibles et efficaces augmente, la recherche hybride devient une solution pratique pour appliquer les points forts de plusieurs algorithmes de recherche. En intégrant à la fois la recherche sémantique et la recherche plein texte/lexicale, Milvus offre de la flexibilité et une expérience utilisateur améliorée. Consultez ce tutoriel pour essayer nos recherches sémantiques et plein texte avec Milvus.
Ressources connexes
Continuer à lire

Zilliz Cloud Just Landed in Claude Code
The Zilliz Cloud Plugin brings the full power of Zilliz Cloud directly into your Claude Code terminal as natural-language conversations.

Migrating from S3 Vectors to Zilliz Cloud: Unlocking the Power of Tiered Storage
Learn how Zilliz Cloud bridges cost and performance with tiered storage and enterprise-grade features, and how to migrate data from AWS S3 Vectors to Zilliz Cloud.

Zilliz Cloud Introduces Advanced BYOC-I Solution for Ultimate Enterprise Data Sovereignty
Explore Zilliz Cloud BYOC-I, the solution that balances AI innovation with data control, enabling secure deployments in finance, healthcare, and education sectors.


