3.17 Recherche et recherche d’information
Vue d’ensemble et motivation
Tôt ou tard, quelqu’un tape quelques mots dans une boîte et attend que votre système trouve la bonne chose. Cette boîte est trompeusement simple. Derrière elle se trouve l’une des disciplines les plus anciennes et les plus riches de l’informatique : la recherche d’information, la science de trouver des éléments pertinents dans une grande collection à partir d’une requête imprécise. La recherche n’est pas une fonctionnalité que vous boulonnez à un produit tardivement ; c’est une préoccupation système avec son propre modèle de données, ses propres modes de défaillance, sa propre histoire d’échelle, et sa propre façon de se tromper. Quand la recherche est bonne, les gens trouvent ce dont ils ont besoin et le remarquent à peine. Quand la recherche est mauvaise, ils partent, ou pire, ils concluent que la chose qu’ils voulaient n’existe pas.
Ce chapitre traite la recherche comme une architecture de premier ordre. Elle se trouve aux côtés des décisions de données et de stockage du chapitre 3.4, parce qu’un index de recherche est un magasin spécialisé optimisé pour la requête, distinct du système de référence qui possède la vérité. Elle s’appuie sur les idées de mise en cache et de livraison du chapitre 3.15, parce que les résultats de recherche et les suggestions sont sensibles à la latence et mettables en cache. Et elle chevauche maintenant lourdement le travail d’intelligence artificielle générative du chapitre 6.3, parce que la récupération moderne alimente les grands modèles de langage avec le contexte dont ils ont besoin pour bien répondre.
Pour les grandes équipes, la recherche est là où la pertinence, la fraîcheur, et l’échelle entrent en collision. Un catalogue d’entreprise avec des dizaines de millions d’articles, un portail de registres gouvernementaux redevable devant le public, une base de connaissances de support qui doit faire surgir l’unique article qui résout un ticket : chacun exige que la recherche soit mesurée, réglée, et exploitée avec la même rigueur que tout autre système de production. Les enjeux sont concrets. Une administration fiscale dont la recherche ne peut pas trouver le bon formulaire à l’échéance de dépôt, ou un portail de santé qui enterre les conseils pertinents sous le bruit, échoue ses utilisateurs d’une façon qui érode la confiance dans l’institution derrière lui.
Principes clés
- Traitez l’index de recherche comme un magasin dérivé, séparé de votre système de référence.
- La pertinence est une qualité mesurable, pas une question de goût ; jugez-la avec des données.
- Correspondez à comment les gens tapent réellement : mal orthographié, laconique, et ambigu.
- Combinez la récupération lexicale et sémantique ; aucune seule ne couvre chaque requête.
- Concevez le pipeline d’indexation pour la fraîcheur, pas seulement le chargement initial.
- Évaluez hors ligne avec des jugements et en ligne avec du comportement réel, et utilisez les deux.
- Échelonnez la recherche délibérément avec des shards et des répliques, et observez-la comme tout service.
Recommandations
Commencer avec l’index inversé et le pipeline d’analyse
Le moteur au cœur de la recherche classique est l’index inversé : une carte de chaque terme vers la liste des documents qui le contiennent, l’image miroir d’un document qui liste ses termes. Demandez « remboursement de facture » et le moteur intersecte la liste de postings pour « remboursement » avec la liste de postings pour « facture » en millisecondes, peu importe combien de millions de documents vous détenez. Cette structure de données est pourquoi la recherche semble instantanée, et la comprendre explique la majeure partie de ce que la recherche fait bien et mal.
L’index ne vaut que le texte que vous lui donnez, et c’est le travail de l’analyseur. L’analyse fonctionne par étapes. D’abord, la tokenisation divise un flux de texte en termes, ce qui est plus difficile que de diviser sur les espaces une fois que vous rencontrez la ponctuation, les traits d’union, et des langages comme le chinois qui ne délimitent pas les mots. Puis la normalisation met en minuscules, retire les accents, et fusionne les variantes. Puis la racinisation ou sa cousine plus précise la lemmatisation réduit « courant », « couru », et « court » vers une racine commune pour qu’une requête pour l’un corresponde aux autres. La gestion des mots vides, l’expansion de synonymes, et la détection de langue complètent cela. La règle qui vous épargne de la douleur : l’analyse au moment de l’indexation et l’analyse au moment de la requête doivent s’accorder, parce qu’un terme n’est trouvé que si les deux côtés le normalisent de la même façon.
Comprendre le classement par pertinence avant de le régler
Trouver les documents correspondants est la moitié facile. Les ordonner pour que le meilleur se trouve en haut est la moitié difficile, et cela s’appelle le classement. Le cheval de trait traditionnel est TF-IDF, abréviation de fréquence de terme fois fréquence inverse de document : un terme compte pour plus quand il apparaît souvent dans un document (fréquence de terme) et quand il est rare à travers toute la collection (fréquence inverse de document), donc « photosynthèse » l’emporte sur « le ». La plupart des moteurs modernes utilisent par défaut Okapi BM25, un raffinement qui sature la fréquence de terme (la dixième occurrence ajoute peu par rapport à la neuvième) et normalise pour la longueur de document pour que les longs documents ne gagnent pas par pure taille. Vous n’avez pas besoin de dériver la formule, mais vous devriez savoir qu’un bouton existe, qu’il a des valeurs par défaut raisonnées, et que le changer change quels résultats se classent en premier.
Jugez la qualité avec deux mots du domaine. La précision est la fraction des résultats renvoyés qui sont pertinents ; le rappel est la fraction de tous les résultats pertinents que vous avez renvoyés. Ils s’échangent l’un contre l’autre. Desserrez la requête pour attraper chaque correspondance possible et la précision baisse à mesure que le bruit s’infiltre ; resserrez-la pour un ensemble de résultats propre et le rappel baisse à mesure que de bonnes correspondances tombent. Chaque décision de pertinence, de la tolérance aux fautes de frappe à l’expansion de synonymes, est un pari sur où le long de cette courbe vos utilisateurs veulent être, et la réponse diffère pour une archive légale (favorisez le rappel, ne manquez rien) contre une vitrine (favorisez la précision, montrez des gagnants).
Investir dans la compréhension de requête
Les utilisateurs ne tapent pas comme vos documents sont écrits. Ils font des fautes d’orthographe, abrègent, cherchent un synonyme que vous n’avez jamais indexé, et entassent trois intentions dans quatre mots. La compréhension de requête est la couche qui comble cet écart, et elle rembourse l’investissement plus que presque tout le reste. Ajoutez des synonymes organisés et extraits pour que « portable » trouve « ordinateur portable » et « crise cardiaque » trouve « infarctus du myocarde ». Ajoutez la tolérance aux fautes de frappe à travers la distance d’édition, le nombre de changements de caractère unique entre deux chaînes, pour que « recu » trouve quand même des reçus. Détectez les entités et l’intention pour que « vols vers Paris sous 500 $ » route vers les bons filtres plutôt qu’un sac de mots.
Gérez délibérément les requêtes les plus difficiles. Une recherche pour une chaîne exacte rare, comme un numéro de commande ou une citation de statut, veut une correspondance exacte et aucune expansion astucieuse. Une question vague en langage naturel veut l’opposé. Routez-les différemment plutôt que de forcer un comportement sur les deux. Et concevez toujours le cas de zéro résultat : quand une requête ne renvoie rien, détendez-la, suggérez des alternatives, ou repliez-vous sur une correspondance plus large, parce qu’une page vide est le moyen le plus rapide de perdre un utilisateur.
Ajouter des facettes, l’autocomplétion, et le filtrage structuré
La recherche est plus qu’une liste classée. La recherche à facettes permet aux utilisateurs de restreindre les résultats par attributs structurés : marque, plage de prix, département, date, type de document. Les facettes transforment un ensemble de résultats accablant en une conversation guidée, et elles doublent comme navigation. Elles dépendent de vos données étant proprement attribuées, ce qui est un investissement de qualité de données en amont de la recherche, et elles interagissent avec le classement, parce qu’un filtre change l’ensemble de candidats que voit le classeur.
L’autocomplétion et les suggestions façonnent la requête avant même qu’elle ne soit soumise. Un bon suggéreur propose des requêtes réelles et à haute valeur pendant que l’utilisateur tape, corrige l’orthographe tôt, et fait surgir des intentions populaires ou tendance. C’est critique en latence (chaque frappe est une requête) et bénéficie directement des motifs de mise en cache du chapitre 3.15. Les suggestions guident aussi les gens vers des requêtes que vous gérez bien, ce qui élève discrètement la pertinence globale. Traitez le suggéreur comme son propre petit index avec son propre classement, réglé sur les journaux de requête plutôt que le contenu de document.
Combiner la recherche lexicale et vectorielle
La recherche classique correspond des mots. Elle ne peut pas dire que « voiture » et « automobile » signifient la même chose à moins que vous ne le lui disiez, et elle trébuche sur des questions formulées de façons que vos documents n’utilisent jamais. La recherche vectorielle adresse cela en représentant le texte comme un embedding, un vecteur numérique dense produit par un modèle d’apprentissage automatique tel que des significations similaires atterrissent près les unes des autres dans l’espace vectoriel. La récupération devient alors une recherche de plus proche voisin dans cet espace, et parce que le plus proche voisin exact est trop lent à l’échelle, les moteurs utilisent des algorithmes de plus proche voisin approximatif (ANN) qui échangent une infime précision contre de grands gains de vitesse. La recherche sémantique de ce type trouve le bon document même quand il ne partage aucun mot avec la requête.
Aucune approche ne gagne partout. La recherche lexicale excelle aux termes exacts, noms, codes, et mots-clés rares ; elle est transparente et bon marché à expliquer. La recherche vectorielle excelle au sens, à la paraphrase, et aux questions en langage naturel, mais elle peut manquer un identifiant exact et est plus difficile à déboguer. La valeur par défaut forte pour les systèmes sérieux est la recherche hybride : exécutez les deux et fusionnez les résultats, souvent avec une technique telle que la fusion de rang réciproque qui mélange deux listes classées sans exiger que leurs scores soient comparables. L’hybride vous donne la précision des mots-clés et le rappel de la sémantique, et il se dégrade gracieusement quand l’un des côtés est faible.
Connecter la recherche à la génération augmentée par récupération
Le consommateur de recherche à la croissance la plus rapide n’est pas un humain lisant une liste de résultats ; c’est un modèle de langage. La génération augmentée par récupération (RAG) ancre un modèle génératif dans vos données en récupérant des passages pertinents et en les plaçant dans le contexte du modèle pour qu’il réponde depuis vos faits plutôt que sa mémoire d’entraînement. La qualité de génération du chapitre 6.3 dépend directement de la qualité de récupération : donnez au modèle les mauvais passages et il synthétisera avec confiance une mauvaise réponse. Tout dans ce chapitre (découper le texte en passages, bien les classer, fusionner les signaux lexicaux et vectoriels, garder l’index frais) est précisément la moitié récupération de RAG. Si votre organisation construit sur de grands modèles de langage, votre système de recherche est la fondation, et améliorer le rappel sur les bons passages aide souvent plus l’assistant que d’échanger le modèle.
Construire un pipeline d’indexation pour la fraîcheur
Un index est une copie, et une copie dérive. Le pipeline d’indexation est la machinerie qui garde l’index de recherche synchronisé avec le système de référence : lire les changements source, exécuter l’analyse et l’embedding, et écrire dans l’index, idéalement comme un flux plutôt qu’un lot nocturne. C’est une préoccupation d’ingénierie de données (chapitre 7.2), et le même soin sur l’ordonnancement, les nouvelles tentatives, et l’idempotence du chapitre 3.3 s’applique, parce qu’une mise à jour désordonnée peut ressusciter un document supprimé. Décidez explicitement votre cible de fraîcheur. Un prix ou un compte d’inventaire peut avoir besoin d’être recherchable en quelques secondes ; un document de politique archivé peut avoir un retard d’heures. Supportez la réindexation complète pour les changements de schéma et d’analyseur, et concevez-la pour fonctionner sans temps d’arrêt, typiquement en construisant un nouvel index et en basculant un alias atomiquement une fois qu’il est prêt.
Régler la pertinence avec l’évaluation, pas l’opinion
Les arguments de pertinence sont ingagnables par affirmation, donc remplacez l’opinion par la mesure. Hors ligne, construisez une liste de jugements : un ensemble de requêtes représentatives associées à des notations humaines de quels résultats sont pertinents, et notez votre classement contre elle avec une métrique telle que NDCG (gain cumulé actualisé normalisé), qui récompense le placement de résultats hautement pertinents près du haut et pénalise ceux enterrés plus bas. L’évaluation hors ligne vous permet de comparer deux configurations de classement avant que l’une ou l’autre ne touche un utilisateur. En ligne, surveillez le comportement réel : taux de clic, position des résultats cliqués, reformulations de requête, taux de zéro résultat, et conversions. Exécutez des expériences contrôlées (chapitre 7.4) pour qu’un changement de pertinence soit prouvé contre un groupe témoin plutôt que livré sur une intuition. Utilisez les deux, parce que les métriques hors ligne sont rapides mais idéalisées, tandis que les métriques en ligne sont réelles mais lentes et bruyantes. La boucle mature exploite les journaux de requête pour faire grandir la liste de jugements, donc l’évaluation s’améliore à mesure que vous apprenez.
Échelonner avec des shards et répliques, et tout observer
La recherche s’échelonne le long de deux axes. Le sharding divise un index à travers des machines en partitionnant les documents, donc une requête se ventile vers chaque shard et les résultats partiels fusionnent ; cela permet à un index de grandir au-delà de ce qu’une machine détient et répartit la charge d’indexation. Les répliques copient chaque shard pour que le trafic de lecture se répartisse à travers les copies et que la perte d’un nœud ne perde pas de données ; les répliques servent le débit de requête et fournissent la résilience. Plus de shards augmentent le coût de ventilation par requête, donc dimensionnez-les selon vos données, pas un chiffre rond. Exploitez la recherche avec l’observabilité du chapitre 9.2 : suivez les percentiles de latence de requête (la queue compte plus que la moyenne), le retard d’indexation, les taux de succès de cache, les taux d’erreur, et, comme signaux de premier ordre, les métriques de pertinence telles que le taux de zéro résultat et la position de clic. Un système de recherche qui est rapide mais renvoie de mauvais résultats échoue silencieusement, et seule la télémétrie de pertinence vous le dira.
Compromis : avantages et inconvénients
| Approche | Avantages | Inconvénients |
|---|---|---|
| Recherche lexicale (BM25) | Termes exacts, codes, noms ; transparente ; bon marché | Aveugle aux synonymes et paraphrases sans réglage |
| Recherche vectorielle (sémantique) | Comprend le sens et les questions ; fort rappel | Manque les ID exacts ; coûteuse à calculer ; plus difficile à déboguer |
| Recherche hybride | Précision des mots-clés plus rappel de la sémantique | Plus de pièces mobiles ; la fusion a besoin de réglage et de test |
| Expansion agressive de fautes de frappe et synonymes | Rappel plus élevé ; indulgente envers les vrais utilisateurs | La précision baisse ; résultats bruyants si non contrôlée |
| Indexation en temps réel | Résultats frais en quelques secondes | Coût et complexité plus élevés que par lot |
| Plus de shards | Index plus grands ; indexation parallèle | Coût de ventilation par requête et de coordination plus élevé |
| Évaluation hors ligne (listes de jugement) | Rapide, répétable, sûre à itérer | Idéalisée ; peut ne pas correspondre au vrai comportement utilisateur |
| Évaluation en ligne (métriques de clic, tests) | Reflète les vrais utilisateurs et intentions | Lente, bruyante, exige du trafic et de la discipline d’expérience |
La tension récurrente est la précision contre le rappel, et elle se cache à l’intérieur de chaque bouton. Desserrez la correspondance, étendez les synonymes, et appuyez-vous sur la sémantique, et vous attrapez plus au coût du bruit ; resserrez tout et vous êtes propre mais vous manquez des choses. Il n’y a pas de réglage universel, seulement le bon réglage pour une collection et une audience données, découvert par la mesure. La seconde tension est la fraîcheur contre le coût : l’indexation en temps réel et la récupération hybride achètent toutes deux de la qualité avec du calcul et de la complexité. Résolvez les deux de la même façon, en liant chaque décision à une métrique d’évaluation et un résultat utilisateur plutôt qu’à l’intuition, pour pouvoir voir ce qu’un changement vous a réellement acheté.
Questions à discuter avec votre équipe
Comment mesurons-nous la pertinence de recherche aujourd’hui, et le remarquerions-nous si elle s’aggravait ? De nombreuses équipes ne peuvent pas répondre à cela, ce qui signifie que leur pertinence est quel que soit ce que les valeurs par défaut ont produit et qu’elles volent à l’aveugle face aux régressions. Apportez vos signaux actuels : avez-vous une liste de jugements, suivez-vous le taux de zéro résultat et la position de clic, pourriez-vous comparer deux configurations de classement objectivement ? L’écart entre « la recherche semble correcte » et « voici notre NDCG sur cent requêtes notées, et voici la tendance du mois dernier » est l’écart entre deviner et concevoir. L’action qui suit est de construire même une petite liste de jugements et d’instrumenter le comportement de clic, parce que vous ne pouvez pas régler ce que vous ne pouvez pas mesurer, et chaque changement de pertinence que vous livrez aveuglément est un changement que vous ne pouvez pas défendre.
Où la récupération lexicale et sémantique nous échouent-elles chacune, et devrions-nous aller hybride ? La recherche par mots-clés pure échoue discrètement sur les questions paraphrasées et les synonymes, tandis que la recherche vectorielle pure échoue discrètement sur les identifiants exacts et les termes rares, et la plupart des équipes n’ont jamais exécuté que l’une des deux. Apportez un ensemble de vraies requêtes qui ont renvoyé de mauvais résultats et classez pourquoi chacune a échoué : était-ce un synonyme manquant, une erreur d’orthographe, une inadéquation sémantique, ou une correspondance exacte manquante ? Le motif dans ces échecs vous dit si la recherche hybride aiderait et où dépenser l’effort en premier. Cela compte davantage si vous alimentez un modèle de langage, parce que les échecs de récupération deviennent de mauvaises réponses confiantes, et le coût d’un mauvais résultat augmente fortement quand une couche générative se trouve au-dessus.
Quelle est notre exigence de fraîcheur, et notre pipeline d’indexation la satisfait-il réellement ? La fraîcheur est généralement supposée plutôt que spécifiée, donc les équipes découvrent l’inadéquation pendant un incident quand un élément supprimé continue d’apparaître ou qu’une mise à jour de prix a un retard d’heures. Apportez les vrais chiffres : combien de temps entre un changement dans le système de référence et ce changement devenant recherchable, et comment cela se compare-t-il à ce que différentes parties de votre catalogue ont réellement besoin ? La réponse différera probablement par type de donnée, et la nommer force les décisions de pipeline sur streaming contre lot, ordonnancement, et réindexation. Un index qui est périmé de façons que vos utilisateurs peuvent voir sape la confiance dans tout le produit, et une cible de fraîcheur que vous n’avez jamais mesurée est une cible que vous manquez probablement.
Construisons-nous la recherche sur notre propre moteur ou achetons-nous un service géré de recherche ou de vecteur, et que nous coûterait-il de changer d’avis plus tard ? Le choix construire-contre-acheter fixe votre structure de coût et votre plafond de contrôle pendant des années, et les grandes équipes tendent à dériver vers une réponse par inertie plutôt que de la décider délibérément. Apportez les vrais chiffres des deux côtés : le coût opérationnel d’exploiter et échelonner votre propre cluster et pipeline d’embedding contre le coût par requête ou d’abonnement d’un service géré, et le temps d’ingénierie que chacun exige de personnes que vous pourriez déployer ailleurs. La variable cachée est l’enfermement : quelle part de votre classement, analyse, et schéma vectoriel est portable, et combien de temps prendrait réellement une migration si la tarification ou la capacité changeait sous vous. Dans les contextes d’entreprise et gouvernementaux, ajoutez le délai d’approvisionnement et les obligations de sortie, parce qu’un service qui ne peut pas exposer son comportement de classement ou exporter votre index est une dépendance que vous ne pouvez peut-être pas être autorisé à accepter.
Combien sommes-nous prêts à investir dans la compréhension de requête, et qui relit les requêtes qui échouent ? Les utilisateurs font des fautes d’orthographe, abrègent, et formulent des questions dans des mots que vos documents n’utilisent jamais, donc l’écart entre une requête brute et un bon résultat est là où vit la plupart de la qualité de recherche perçue, pourtant c’est rarement le travail explicite de quelqu’un. Apportez votre taux de zéro résultat, vos requêtes échouant et reformulées les plus fréquentes, et un compte rendu honnête de la gestion de synonymes, tolérance de fautes de frappe, et intention que vous avez aujourd’hui. Le tirage concurrent est la précision contre le rappel : chaque synonyme et chaque unité de distance d’édition que vous permettez attrape plus de vrais utilisateurs et admet plus de bruit, donc le bon investissement est celui que vous pouvez mesurer plutôt que celui qui semble généreux. Pour une grande organisation ou publique, la longue traîne de requêtes échouant est aussi une carte de besoin non satisfait, et la relire selon une cadence fixe transforme un coût de support en feuille de route, particulièrement là où un formulaire ou une prestation manquée a de vraies conséquences pour un citoyen.
Qui possède la pertinence comme responsabilité financée et continue, et comment la boucle d’évaluation survivra-t-elle après le lancement ? La recherche n’est jamais finie : les catalogues changent, le langage dérive, et le réglage du dernier trimestre se dégrade discrètement, donc un système sans propriétaire responsable régresse vers ce que les valeurs par défaut produisent. Apportez la réalité de l’organigramme : la pertinence est-elle une équipe nommée avec du temps et des métriques, ou une tâche qui atterrit sur qui a touché l’index en dernier, et une liste de jugements et un harnais d’expérience existent-ils qu’une nouvelle personne pourrait reprendre ? La tension est que le travail de pertinence est peu glamour et facile à définancer au moment où la recherche semble fonctionner, ce qui est exactement quand la dégradation commence. Dans les contextes d’entreprise et gouvernementaux, liez la propriété à des obligations concrètes, précision par marché, accessibilité, couverture multilingue, et une révision des requêtes à zéro résultat, pour que la responsabilité soit auditable et ne s’évapore pas quand l’équipe de lancement se disperse.
Regard sectoriel
Jeune pousse. Recourez à un service géré de recherche ou de vecteur et livrez les valeurs par défaut BM25 dès le premier jour ; ne montez pas votre propre cluster avant d’avoir des requêtes contre lesquelles régler. Choisissez la seule surface de recherche qui touche le revenu ou la rétention, instrumentez la position de clic et le taux de zéro résultat dès la première livraison, et laissez les vrais journaux de requête, pas une feuille de route, vous dire quand ajouter des synonymes ou une couche sémantique. La même couche de récupération que vous construisez pour la recherche devient plus tard votre backend de génération augmentée par récupération, donc gardez-la derrière une interface mince.
Petite entreprise. Vous n’avez presque certainement pas d’ingénieur de pertinence, donc achetez de la recherche intégrée dans la plateforme que vous exploitez déjà, comme votre hôte e-commerce, service d’assistance, ou système de gestion de contenu, et traitez le réglage comme une corvée légère récurrente plutôt qu’un projet. Dépensez votre effort limité sur les fondamentaux de qualité de données dont dépend la recherche : des attributs de produit propres pour les facettes, des titres sensés, et une courte liste de synonymes pour les mots que vos clients utilisent réellement. Surveillez les requêtes à zéro résultat mensuellement, parce qu’elles sont le signal le moins cher d’une lacune que vous pouvez combler sans ingénieur.
Grande entreprise. Le problème est la pertinence à l’échelle à travers de nombreuses équipes, catalogues, et langages : une méthode de liste de jugements partagée, une évaluation par marché, et une fonction de pertinence financée pour qu’aucun groupe ne re-règle BM25 à partir de zéro. Standardisez le pipeline d’indexation, les cibles de fraîcheur, et la discipline d’expérience qui conditionne les changements de classement, et dimensionnez le sharding et la réplication délibérément plutôt que par habitude. Pesez explicitement construire contre acheter, puisqu’un service vectoriel géré peut réduire le coût opérationnel au prix d’un certain contrôle et d’un enfermement potentiel.
Gouvernement. La trouvabilité est souvent une obligation légale et une question d’équité : un citoyen qui ne peut pas trouver le bon formulaire ne peut pas exercer un droit. Favorisez le rappel et le classement interprétable pour que l’agence puisse expliquer pourquoi un résultat est apparu, ajoutez des synonymes qui relient les termes en langage simple aux titres officiels, et traitez l’accessibilité et le support multilingue comme des exigences plutôt que des extras. L’approvisionnement devrait peser l’enfermement et exiger que tout service géré expose son comportement de classement et accorde la portabilité des données, et les requêtes à zéro résultat devraient être révisées comme un registre public de besoin non satisfait.
Exemples
Jeune pousse. Une entreprise logicielle de dix personnes ajoute la recherche à sa base de connaissances de support pour que les clients puissent s’auto-servir. Elle commence avec les valeurs par défaut BM25 et atteint rapidement le plafond : les utilisateurs posent des questions en langage simple qui ne partagent aucun mot-clé avec les articles. Elle ajoute des embeddings vectoriels et fusionne les deux avec la fusion de rang réciproque, et la déviation s’améliore du jour au lendemain. Pour régler, elle exploite ses propres journaux de requête, étiquette quelques centaines de paires requête-article, et suit la position de clic hebdomadairement. Quand elle ajoute plus tard un assistant intégré au produit, la même couche de récupération devient le backend RAG, donc l’investissement de recherche rapporte deux fois.
Grande entreprise. Un détaillant mondial exploite la recherche de produits sur des dizaines de millions d’articles à travers des dizaines de marchés et langages. L’index est shardé pour la taille et répliqué pour le débit, avec des analyseurs par langage gérant correctement la tokenisation et la racinisation pour chaque marché. La navigation à facettes par marque, prix, et disponibilité transforme d’énormes ensembles de résultats en navigation guidée, et l’autocomplétion guide les acheteurs vers des requêtes à forte conversion. La pertinence est une équipe financée avec des listes de jugements par marché et des expériences en ligne continues ; un changement de classement n’est livré qu’après avoir battu le témoin sur la conversion. Un pipeline d’indexation en temps réel garde le prix et le stock recherchables en quelques secondes, parce qu’un article épuisé classé premier est une vente perdue et un ticket de support.
Gouvernement. Une agence nationale publie des réglementations, formulaires, et conseils que le public doit pouvoir trouver, souvent sous obligation légale et à charge de pointe pilotée par échéance. L’équipe favorise le rappel et la transparence : les citoyens cherchant une prestation ne doivent pas manquer le formulaire pertinent, et l’agence doit pouvoir expliquer pourquoi un résultat est apparu, ce qui les pousse vers un classement lexical interprétable augmenté, soigneusement, de synonymes pour les termes en langage simple que les gens utilisent au lieu des titres officiels. L’accessibilité et le support multilingue sont des exigences, pas des extras. L’index se réindexe sans temps d’arrêt derrière un alias quand les documents de politique changent, et les requêtes à zéro résultat sont journalisées et révisées comme signal de besoin public non satisfait.
Argumentaire économique : motivations, retour sur investissement et coût total de possession
La recherche se trouve directement sur le chemin vers la valeur. Dans le commerce, une part mesurable du revenu circule à travers la boîte de recherche, et les utilisateurs qui cherchent convertissent à des taux plus élevés que ceux qui ne font que parcourir, donc quelques points d’amélioration de pertinence se traduisent en vrai argent. Dans le support et les outils internes, une meilleure recherche dévie des tickets, raccourcit les temps de traitement, et récupère les heures que les travailleurs du savoir perdent à chasser des documents. Dans le secteur public, une recherche efficace est une question de qualité de service et d’équité : les gens qui ne peuvent pas trouver le bon formulaire ou conseil ne peuvent pas exercer un droit ou satisfaire une obligation. Ces résultats sont quantifiables, ce qui est précisément pourquoi la recherche mérite une évaluation financée plutôt que des valeurs par défaut au mieux.
Le coût total de possession va bien au-delà de la licence ou du cluster. Vous payez pour le calcul et le stockage de l’index et de ses répliques, pour la génération d’embedding si vous allez sémantique, pour le pipeline d’indexation qui le garde frais, et, surtout, pour le travail humain continu de réglage de pertinence et d’évaluation. Ce dernier coût est celui que les équipes sous-estiment et celui qui détermine le plus le succès, parce que la recherche n’est jamais finie : les catalogues changent, le langage dérive, et le réglage d’hier se dégrade. Acheter un service géré de recherche ou de vecteur peut abaisser le coût opérationnel et vous accélérer, au prix d’un certain contrôle et d’un enfermement potentiel, un choix construire-contre-acheter classique à peser contre votre échelle et différenciation. L’argumentaire économique le plus fort lie une métrique de pertinence spécifique à un résultat spécifique, finance la boucle d’évaluation, et traite la recherche comme un produit qui est mesuré et amélioré, pas un composant qui est installé et oublié.
Anti-patterns et pièges
- Analyse mal appariée : les analyseurs au moment de l’indexation et au moment de la requête sont en désaccord, donc les termes échouent silencieusement à correspondre et les résultats disparaissent sans erreur.
- Pertinence par opinion : classement réglé par quiconque argumente le plus fort, sans liste de jugements, sans métriques, et sans moyen d’attraper les régressions.
- Foi vectorielle seule : remplacer entièrement la recherche par mots-clés par des embeddings, puis échouer sur les ID exacts, codes, et termes rares.
- Ignorer les zéro résultats : laisser des pages de résultats vides subsister au lieu de détendre, suggérer, ou se replier, et perdre l’utilisateur.
- Index périmé : un pipeline de lot nocturne servant des prix, du stock, ou des suppressions que les utilisateurs peuvent voir sont faux.
- Temps d’arrêt de réindexation : reconstruire sur place au lieu de derrière un alias, mettant la recherche hors ligne à chaque changement de schéma.
- Valeurs par défaut non réglées pour toujours : livrer BM25 prêt à l’emploi et ne jamais le revisiter à mesure que la collection et l’audience évoluent.
- Pas de télémétrie de pertinence : surveiller la latence et les erreurs mais pas le taux de zéro résultat ou la position de clic, donc les mauvais résultats échouent silencieusement.
- Expansion trop zélée : empiler synonymes et tolérance de fautes de frappe jusqu’à ce que la précision s’effondre et que chaque requête renvoie du bruit.
Modèle de maturité
- Niveau 1 (Initier) : La recherche est une requête de base de données par défaut ou un moteur non réglé avec des réglages de série, monté réactivement quand quelqu’un le demande finalement. Il n’y a pas de mesure de pertinence, pas de couche de compréhension de requête, et la fraîcheur est quel que soit ce qu’un job par lot produit. Les mauvais résultats ne sont remarqués que quand les utilisateurs se plaignent, et chaque correction est ponctuelle.
- Niveau 2 (Développer) : Un vrai moteur de recherche est en place avec une analyse sensée, un classement BM25, et des facettes et autocomplétion de base. Certains synonymes et tolérance de fautes de frappe existent, l’équipe surveille la latence et les erreurs, et elle a commencé à journaliser les requêtes à zéro résultat. Les pratiques varient d’équipe à équipe et de produit à produit, et la pertinence est encore réglée par opinion plutôt que par preuve.
- Niveau 3 (Standardiser) : La pratique de pertinence est documentée et appliquée de façon cohérente à travers l’organisation. Les équipes mesurent avec une méthode de liste de jugements partagée et NDCG hors ligne et des métriques de clic en ligne, exécutent une récupération hybride lexicale-plus-vectorielle là où cela aide, tiennent le pipeline d’indexation à une cible de fraîcheur énoncée, et réindexent sans temps d’arrêt derrière un alias. Le sharding et la réplication sont dimensionnés délibérément, et les métriques de pertinence sont surveillées aux côtés des opérationnelles.
- Niveau 4 (Gérer) : La recherche est mesurée et contrôlée par rapport à des références. Chaque surface de recherche suit la tendance NDCG, le taux de zéro résultat, la position de clic, et le taux de reformulation contre une référence convenue, avec des objectifs de niveau de service sur les percentiles de latence de requête et le retard d’indexation. Les changements de classement et d’analyse ne sont livrés qu’après qu’une expérience contrôlée bat le témoin sur un résultat nommé, une régression de pertinence déclenche une alerte automatiquement, et des tableaux de bord par marché ou par segment rendent une dégradation discrète visible avant que les utilisateurs ne la ressentent. Les décisions de changer un bouton sont prises sur données, avec des critères de retour en arrière explicites.
- Niveau 5 (Orchestrer) : L’amélioration de la recherche est une boucle continue et pilotée par expérience intégrée à travers l’organisation. Les listes de jugements grandissent à partir de journaux de requête exploités, la compréhension de requête s’adapte au langage réel, et la récupération est réglée comme la fondation partagée pour les applications génératives en aval. Le système entier est observé de bout en bout à la fois pour la vitesse et la pertinence, et la pratique de recherche se rééquilibre elle-même à mesure que les catalogues, le langage, et le paysage de modèles dérivent.
Pistes de réflexion
- Quelle fraction de vos recherches renvoie zéro résultat ou mène à une reformulation, et que révèlent ces requêtes sur le besoin non satisfait ?
- Si vous remplaciez la recherche par mots-clés par une recherche vectorielle pure demain, quelles requêtes se casseraient, et comment le sauriez-vous avant vos utilisateurs ?
- Qui possède la pertinence dans votre organisation, et a-t-il une liste de jugements et des métriques, ou seulement des opinions et anecdotes ?
- Combien de temps est le délai entre un changement dans votre système de référence et ce changement devenant recherchable, et est-ce acceptable pour chaque type de donnée ?
- Si un modèle de langage consomme vos résultats de recherche, votre qualité de récupération satisfait-elle la barre plus élevée qu’une réponse générative exige ?
- Comment défendriez-vous un changement de classement auprès d’une partie prenante sceptique : avec un résultat d’expérience, ou avec une histoire ?
Points clés à retenir
- Traitez la recherche comme un système de premier ordre : un index dérivé avec son propre modèle de données, pipeline, échelle, et modes de défaillance, séparé de votre système de référence.
- Maîtrisez les fondamentaux (index inversé, analyse appariée, classement BM25, précision contre rappel) avant de recourir à quelque chose de plus élaboré.
- Investissez dans la compréhension de requête (synonymes, tolérance de fautes de frappe, intention, et un vrai plan de zéro résultat) parce que les utilisateurs ne tapent jamais comme vos documents se lisent.
- Par défaut sur la récupération hybride qui fusionne recherche lexicale et vectorielle, et rappelez-vous que cette même couche de récupération est la fondation de la génération augmentée par récupération.
- Remplacez l’opinion par la mesure : listes de jugements et NDCG hors ligne, métriques de clic et expériences contrôlées en ligne, et télémétrie de pertinence surveillée comme tout signal de production.
Références et lectures complémentaires
- Christopher D. Manning, Prabhakar Raghavan, et Hinrich Schütze, Introduction to Information Retrieval
- Stephen E. Robertson et Hugo Zaragoza, The Probabilistic Relevance Framework: BM25 and Beyond
- Ricardo Baeza-Yates et Berthier Ribeiro-Neto, Modern Information Retrieval: The Concepts and Technology behind Search
- Doug Turnbull et John Berryman, Relevant Search: With Applications for Solr and Elasticsearch
- Trey Grainger, Doug Turnbull, et Max Irwin, AI-Powered Search
- Patrick Lewis et al., « Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks »
- Jeff Johnson, Matthijs Douze, et Hervé Jégou, « Billion-Scale Similarity Search with GPUs »
- Kalervo Järvelin et Jaana Kekäläinen, « Cumulated Gain-Based Evaluation of IR Techniques »