<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title><![CDATA[Jessica Moszkowicz - Elasticsearch Labs]]></title>
    <description><![CDATA[Articles and tutorials from the Search team at Elastic]]></description>
    <copyright><![CDATA[© 2026. Elasticsearch B.V. All Rights Reserved]]></copyright>
    <image>
      <title><![CDATA[Jessica Moszkowicz - Elasticsearch Labs]]></title>
      <url>https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1121c0bf0e8a6e65/6a88da6340a1841030ef456f/search-labs-thumbnail.png</url>
      <link>https://www.elastic.co/fr/search-labs/author/jessica-moszkowicz</link>
    </image>
    <link>https://www.elastic.co/fr/search-labs/author/jessica-moszkowicz</link>
    <atom:link href="https://www.elastic.co/fr/search-labs/rss/author/jessica-moszkowicz.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[fr]]></language>
    <lastBuildDate>Tue, 29 Sep 2026 01:48:07 GMT</lastBuildDate>
  <item>
    <title><![CDATA[Résolution d'entités avec Elasticsearch, partie 4 : le défi ultime]]></title>
    <description><![CDATA[Relever et évaluer les problématiques de réconciliation d’entités dans un ensemble de données complexe et varié, dont la structure interdit l’usage de méthodes simplifiées ou de contournements.]]></description>
    <content:encoded><![CDATA[<p>Nous avons maintenant vu la résolution intelligente des entités implémentée de deux manières. Les deux approches commencent de la même manière : préparation et extraction des entités, suivies de la récupération des candidats avec Elasticsearch. À partir de là, nous évaluons ces candidats en utilisant un grand modèle de langage (LLM), soit par génération JSON basée sur des invites, soit par appel de fonction, et nous demandons au modèle de fournir une explication transparente de son jugement.</p><p>Comme nous l’avons vu dans l’<a href="https://www.elastic.co/search-labs/blog/elasticsearch-entity-resolution-llm-function-calling">article précédent</a>, cette régularité, permise par l’appel de fonctions, constitue la pierre angulaire de la fiabilité du système, bien au-delà d’un simple gain d’efficacité. Une fois que nous avons éliminé les erreurs structurelles de la boucle d'évaluation, les résultats sur les scénarios standards (tels que ceux du jeu de données de niveau 4) se sont considérablement améliorés.</p><p>Il reste cependant une interrogation manifeste à laquelle il nous faut répondre :</p><p><em>Cette méthode est-elle toujours viable lorsque les données et les processus s’avèrent véritablement désordonnés ?</em></p><p>En pratique, ce ne sont pas les cas élémentaires qui mettent en défaut les systèmes de réconciliation d’entités. La résolution d’entités s’effondre dès que les noms se heurtent à la diversité des langues, des contextes culturels, des alphabets, des périodes historiques ou des structures administratives différentes. Le système s’effondre quand l’identification repose sur des titres honorifiques, des changements de noms de sociétés ou des translittérations aléatoires, et que seul le contexte environnant permet d’identifier l’entité physique derrière la mention textuelle.</p><p>Donc, pour le dernier billet de cette série, nous avons soumis le système à ce que nous avons appelé <strong>le défi ultime</strong>.</p><h2>Qu’est-ce qui fait de ce test le « défi ultime » ?</h2><p>Nous avons soumis le système à des tests progressifs, en employant des ensembles de données de plus en plus sophistiqués au fil des étapes de validation. Au moment d’atteindre le palier 4, le système gérait déjà des données hybrides mêlant appellations familières, titres honorifiques et variantes linguistiques, exigeant une analyse contextuelle fine. Les tests ont prouvé la pertinence de l’architecture globale, tout en révélant que des erreurs de structure de données, comme des syntaxes JSON incorrectes, bridaient artificiellement les performances de récupération.</p><p>Avec les appels de fonctions en place, nous avions enfin une base stable. Cela nous a donné l'occasion de poser une question plus intéressante :</p><p><em>Un pipeline unifié peut-il gérer </em><em><strong>plusieurs types</strong></em><em> de problèmes de résolution d'entités simultanément ?</em></p><p>Cet ensemble de données de test a été élaboré spécifiquement pour mettre à l’épreuve cette variable critique, en ne laissant aucune place à l’approximation.</p><p>Au lieu de se concentrer sur une seule difficulté (comme les surnoms ou la translittération), cet ensemble de données combine <strong>plus de 50 types de défis distincts</strong>, notamment :</p><ul><li><p>Conventions de dénomination culturelles.</p></li><li><p>Références basées sur les titres.</p></li><li><p>Relations commerciales et changements historiques de nom.</p></li><li><p>Mentions multilingues et systèmes d’écriture croisés.</p></li><li><p>Des défis complexes qui combinent plusieurs des éléments ci-dessus.</p></li></ul><p>L'essentiel, ce n'est pas d'optimiser pour un cas d'utilisation restreint. Il s'agit de vérifier si le <em>modèle de conception</em> tient la route lorsque les règles changent d'une entité à l'autre.</p><h2>L'ensemble de données en un coup d’œil</h2><p>L'ensemble de données du défi ultime consiste en :</p><ul><li><p><strong>50 entités</strong>, couvrant des personnes, des organisations et des institutions.</p></li><li><p><strong>~60 articles</strong>, dont la structure et la complexité linguistique varient.</p></li><li><p><strong>51 catégories de défis distinctes</strong>, regroupées globalement en :</p><ul><li><p>Conventions de dénomination culturelles.</p></li><li><p>Titres et contexte professionnel.</p></li><li><p>Relations commerciales et organisationnelles.</p></li><li><p>Les défis du multilinguisme et de la translittération.</p></li><li><p>Scénarios combinés et cas limites.</p></li></ul></li></ul><p>Plus tôt dans cette série, nous avons vu que l’utilisation de l’IA générative (GenAI) pour créer des jeux de données peut s’avérer être une arme à double tranchant. Sans elle, il serait extrêmement difficile de rassembler des données de test suffisamment vastes et diversifiées. Toutefois, sans un contrôle rigoureux, le modèle incline naturellement vers la simplification des cas de test.</p><p>On a remarqué, lors d’un premier passage de génération, que l’IA avait inséré des mentions telles que « le président russe » comme synonymes directs dans la fiche d’identité de Vladimir Poutine. Bien que cela paraisse logique à première vue, une telle approche invalide le test en supprimant la nécessité de comprendre le contexte pour identifier l’entité. Que se passe-t-il si l’article traite de la Russie des années 1990 ? L’objectif est que l’intelligence du moteur réside dans sa capacité d’inférence contextuelle plutôt que dans une simple table de correspondance statique.</p><p>C'est pourquoi cet ensemble de données a été délibérément conçu pour que les <strong>raccourcis ne fonctionnent pas</strong>. Les alias ne sont pas explicitement énumérés lorsque le système est censé en déduire la signification. Les phrases descriptives ne sont pas pré-liées à des entités. Les bonnes correspondances dépendent souvent du contexte de l'article, et pas seulement du texte local.</p><p><strong>Remarque importante :</strong> bien que nous démontrions les capacités du système dans divers scénarios, il s'agit toujours d'un prototype éducatif. Les systèmes de production gérant la surveillance d'entités sanctionnées dans le monde réel nécessiteraient une validation supplémentaire, des contrôles de conformité, des pistes d'audit et une gestion spécialisée pour les cas d'utilisation sensibles.</p><h2>Pourquoi ces scénarios sont difficiles</h2><p>Dès le premier article de cette série, nous avons introduit un exemple simple mais ambigu : « La nouvelle mise à jour de Swift est arrivée ! » Le défi réside dans le fait que « Swift » peut renvoyer à plusieurs entités du monde réel, selon le contexte. Cet exemple illustre une vérité plus profonde : le langage naturel est intrinsèquement ambigu.</p><p>La résolution d’entités n’est donc pas seulement un problème de correspondance de chaînes de caractères. Nous utilisons instinctivement notre bagage culturel et le contexte immédiat pour interpréter les références, une opération mentale si fluide qu’elle nous semble totalement naturelle.</p><p>Voici quelques cas courants :</p><ul><li><p>L’expression « le président » est une coquille vide si elle n’est pas ancrée dans une géographie et une époque données.</p></li><li><p>Le nom d’une entreprise peut désigner une société mère, une filiale ou une ancienne marque, selon la date à laquelle l’article a été rédigé.</p></li><li><p>Le nom d’une personne peut apparaître dans des ordres différents, des alphabets variés ou des translittérations diverses, selon la langue et la culture.</p></li><li><p>La même phrase peut légitimement faire référence à des entités différentes dans des contextes différents, et le système doit être en mesure de <em>rejeter</em> les correspondances avec autant d'assurance qu'il les accepte.</p></li></ul><p>Aucun système de règles figées ne peut, à lui seul, traiter l’intégralité de ces nuances de manière satisfaisante. Cette approche explique pourquoi ce prototype applique une séparation des préoccupations aussi stricte :</p><ul><li><p>Elasticsearch réduit l'espace réservé aux candidats de manière efficace et transparente.</p></li><li><p>Le LLM n’est utilisé que là où un jugement est requis, et il est contraint de justifier sa décision.</p></li><li><p>La récupération et le raisonnement demeurent des étapes distinctes.</p></li></ul><p>Cette distinction devient encore plus importante à mesure que la diversité des types de défis augmente.</p><h2>Comment le système gère la diversité sans recourir à des cas particuliers</h2><p>L'un des résultats les plus intéressants de cette évaluation est ce qui <em>n’a pas</em> changé :</p><ul><li><p>Nous <strong>n'avons pas</strong> ajouté de logique spéciale pour les noms japonais.</p></li><li><p>Nous <strong>n'avons pas</strong> ajouté de règles personnalisées pour les patronymes arabes.</p></li><li><p>Nous n'avons <strong>pas</strong> ajouté de mapping codé en dur pour les noms d'entreprises historiques.</p></li></ul><p>À la place, le système s’est appuyé sur les mêmes ingrédients fondamentaux présentés plus tôt dans cette série :</p><ul><li><p>Entités enrichies par le contexte et indexées pour la recherche sémantique.</p></li><li><p>La récupération hybride (exacte, alias et sémantique) dans Elasticsearch.</p></li><li><p>Un ensemble restreint et bien défini de candidats.</p></li><li><p>Le jugement du LLM est contraint par l’appel de fonctions et des schémas minimaux.</p></li></ul><p>Cela suggère que la flexibilité du système provient de la <strong>représentation et de l'architecture</strong>, et non d'une collection de règles qui ne cesse de croître.</p><p>Lorsque le système réussit, c’est parce que les bons candidats ont été récupérés et que le LLM dispose d’assez de contexte pour expliquer pourquoi une référence correspond (ou non) à une entité spécifique.</p><h2>Résultats : Comment s’est-il comporté ?</h2><p>Sur l’ensemble de données du défi ultime, le système a produit les résultats globaux suivants :</p><ul><li><p><strong>Précision :</strong> ~91 %</p></li><li><p><strong>Rappel :</strong> ~86 %</p></li><li><p><strong>Score F1 :</strong> ~89 %</p></li><li><p><strong>Taux d'acceptation des LLM :</strong> ~72 %</p></li></ul><h3>Performances selon les types de défis</h3><p>L’analyse des résultats par type de défi révèle des forces et des limites bien précises :</p><p><strong>Les performances les plus solides (un score F1 de 100 %)</strong> ont été observées dans des domaines tels que :</p><ul><li><p>Appariement entre différents systèmes d’écriture (entités commerciales en cyrillique, coréen ou chinois).</p></li><li><p>Scénarios en hébreu (patronymes, titres professionnels, titres religieux, translittération).</p></li><li><p>Hiérarchies d’entreprises (aérospatiale, industrie diversifiée, conglomérats multidivisionnels).</p></li><li><p>Titres professionnels (académiques, militaires, politiques, religieux).</p></li><li><p>Scénarios japonais combinés impliquant plusieurs systèmes d'écriture.</p></li></ul><p><strong>Une performance solide (score F1 de 80 à 99 %)</strong> a été enregistrée dans les catégories suivantes :</p><ul><li><p>Personnalités politiques internationales (98 %).</p></li><li><p>Changements de noms historiques (90 %).</p></li><li><p>Hiérarchies d’entreprise complexes (89 %).</p></li><li><p>Noms de sociétés japonais (93 %).</p></li><li><p>Translittération entre différents systèmes d’écriture (86 %).</p></li><li><p>Patronymes arabes (86 %).</p></li></ul><p>Les <strong>domaines les plus difficiles</strong> sont les suivants :</p><ul><li><p>Translittération avancée (chinois, coréen) : 0 % F1.</p></li><li><p>Certains scénarios japonais (titres honorifiques, ordre des noms, variations du système d’écriture) : ~67 % F1.</p></li><li><p>Quelques scénarios en arabe (noms d'entreprises, références institutionnelles) : ~40 % F1.</p></li></ul><p>Ce qui importe ici, c’est de comprendre <em>pourquoi</em> le système a éprouvé des difficultés dans ces cas précis. Les échecs n’étaient pas dus à une défaillance de l’approche globale, mais à des limitations de composants spécifiques, tout particulièrement le modèle de vecteurs denses utilisé pour la recherche sémantique dans certains scénarios multilingues.</p><p>La recherche et le jugement étant clairement séparés, il n’est pas nécessaire de réécrire le système pour améliorer les performances. L’intégration d’un modèle d’embedding multilingue plus performant, l’enrichissement du contexte des entités ou l’affinement des stratégies de récupération amélioreraient les résultats dans ces catégories sans modifier l’architecture de noyau.</p><p>Du point de vue architectural, c’est le véritable indicateur de réussite.</p><h2>Ce que ces résultats nous révèlent sur l'architecture du système</h2><p>Si l'on considère l'ensemble de la série, quelques tendances se dégagent :</p><ul><li><p><strong>La préparation est plus importante qu'une combinaison intelligente. </strong>L’enrichissement des entités avec leur contexte dès le départ réduit considérablement l’ambiguïté par la suite.</p></li><li><p><strong>Les LLM sont bien plus précieux en tant que juges qu’en tant qu’outils de recherche. </strong>Leur demander d'expliquer <em>pourquoi</em> une correspondance est logique est bien plus efficace que de leur demander de rechercher.</p></li><li><p><strong>La fiabilité permet la précision. </strong>L'appel de fonction n'a pas seulement nettoyé le JSON ; il a débloqué la récupération qui était déjà latente dans l'étape de récupération.</p></li><li><p><strong>La généralisation l’emporte sur la spécialisation. </strong>Un petit nombre d’abstractions bien choisies a permis de gérer des dizaines de types de défis sans avoir recours à une logique personnalisée.</p></li></ul><p>Cette approche explique pourquoi le prototype s’appuie nativement sur Elasticsearch tout en limitant l’usage des modèles de langage à une stricte nécessité. L’objectif n’est pas de se substituer aux moteurs de recherche classiques, mais d’apporter une couche d’explication quand la compréhension du contexte est cruciale.</p><h2>Conclusions</h2><p>L’enjeu final n’était pas d’atteindre des statistiques idéales, mais de s’attaquer à une interrogation bien plus essentielle :</p><p><em>Une architecture transparente, axée sur rechercher et assistée par LLM, peut-elle gérer l'ambiguïté des entités du monde réel sans s'effondrer en règles ou en boîtes noires ?</em></p><p>Pour ce prototype pédagogique, la réponse est oui, avec des réserves explicites concernant la mise en production, la conformité, la surveillance et la qualité des données. Si vous concevez des systèmes devant justifier <em>pourquoi</em> une correspondance d’entités a été établie, ce modèle mérite une attention toute particulière. J’espère que cette série de publications a démontré que la résolution d’entités n’a rien d’un processus mystérieux. Avec une séparation adéquate des responsabilités, la résolution d’entités devient un processus que l’on peut analyser, mesurer et améliorer.</p><p>Ce travail suggère également un modèle d’architecture plus large. On voit apparaître ici un glissement méthodologique important par rapport à l’architecture RAG classique. Au lieu de laisser la recherche alimenter directement la génération, nous introduisons une étape d’évaluation explicite. Le LLM est d’abord utilisé pour juger et vérifier la pertinence des candidats récupérés, et seuls les résultats approuvés sont autorisés à enrichir la génération. Vous pouvez voir cela comme un « Generation-Augmented Retrieval-Augmented Generation with Evaluation », ou GARAGE, parce que tout le monde adore les bons acronymes.</p><p>Quels autres cas d'utilisation pourraient bénéficier de ce modèle ? Les systèmes exigeant de la confiance, de la transparence et un raisonnement défendable sont des candidats naturels pour ce modèle. Les travaux futurs dans ce domaine s’annoncent tout aussi passionnants que les résultats présentés ici, et j’ai hâte de voir comment la communauté s’en emparera pour la suite.</p><h2>Prochaines étapes : À vous de jouer</h2><p>Envie de voir comment ce système relève le défi le plus complexe ? Consultez le <a href="https://github.com/jesslm/entity-resolution-lab-public/tree/main/notebooks#:~:text=5%20minutes%20ago-,05_ultimate_challenge_v3.ipynb,-Initial%20public%20lab"><strong>carnet de notes Ultimate Challenge</strong></a> pour une présentation complète avec des implémentations réelles, des explications détaillées et des exemples pratiques.</p><p>Le pipeline complet de résolution d'entités démontre les concepts fondamentaux et l'architecture nécessaires à une utilisation en production. Cette structure sert de fondation pour bâtir des outils de veille médiatique capables d’identifier des entités et de justifier chaque correspondance, garantissant ainsi la traçabilité des informations extraites.
</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/entity-resolution-elasticsearch-llm-challenges</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/entity-resolution-elasticsearch-llm-challenges</guid>
    <category><![CDATA[IA]]></category>
    <category><![CDATA[Recherche hybride]]></category>
    <dc:creator><![CDATA[Jessica Moszkowicz]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltc58be329ffebcd60/6a17043e47d49c0bc62d88ab/70fb0ff949f6db9ac9b8a28ecb4329ab915ebf46-720x420.png" length="0" type="image/png"/>
    <pubDate>Fri, 13 Mar 2026 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Résolution d’entités avec Elasticsearch et les LLM, partie 2 : mise en correspondance d’entités avec le jugement des LLM et la recherche sémantique]]></title>
    <description><![CDATA[Utiliser la recherche sémantique et le jugement transparent des LLM pour la résolution d’entités dans Elasticsearch.]]></description>
    <content:encoded><![CDATA[<p>Dans<a href="https://www.elastic.co/search-labs/blog/entity-resolution-llm-elasticsearch"> la Partie 1</a>, nous avons préparé notre liste de surveillance et extrait les mentions d'entités. Nous sommes maintenant prêts à répondre à la question clé : à quelle entité une mention renvoie-t-elle réellement ? Revenons à l’exemple présenté dans le premier article de cette série, qui expliquait pourquoi nous avons besoin de la résolution d’entités : « The Swift update is here ! » Imaginons que ce titre soit accompagné d’un peu plus de contexte :</p><ol><li><p>La nouvelle mise à jour de Swift est arrivée ! Les développeurs sont impatients de tester les nouvelles fonctionnalités.</p></li><li><p>La nouvelle mise à jour de Swift est arrivée ! Le nouvel album sortira le mois prochain.</p></li></ol><p>Avec ce contexte supplémentaire, nous devrions être en mesure d’associer le nom « Swift » à la bonne entité.</p><p>Dans l'<a href="https://www.elastic.co/search-labs/blog/entity-resolution-llm-elasticsearch">article précédent</a>, nous avons constitué notre liste de surveillance et enrichi les entités avec un contexte supplémentaire. En reprenant nos exemples ci-dessus, nous devons disposer au minimum des deux entités suivantes dans la liste : Taylor Swift et le langage de programmation Swift. Nous avons également expliqué comment extraire les mentions d’entités à partir d’un texte. Dans ces deux exemples, la mention extraite serait « Swift ». Avec ces éléments en place — la liste de surveillance enrichie et les entités extraites — nous sommes enfin prêts à introduire la vedette du moment : la mise en correspondance des entités.</p><p><strong>Rappel :</strong> il s’agit d’un prototype pédagogique conçu pour illustrer les concepts de mise en correspondance d’entités. En production, les systèmes peuvent utiliser différents grands modèles de langage (LLM), des règles de correspondance personnalisées, des pipelines d’évaluation spécialisés ou encore des approches d’ensemble combinant plusieurs stratégies de correspondance.</p><h2>Le problème : pourquoi la mise en correspondance est complexe</h2><p>Le langage humain est une chose remarquable. L’une de ses caractéristiques les plus intéressantes est sa créativité sans fin. Nous pouvons générer et comprendre un nombre infini de nouvelles phrases. Dès lors, est-il surprenant que les correspondances exactes soient rares en résolution d’entités ? Les auteurs s’efforcent d’être créatifs dès qu’ils le peuvent. Il serait vite fastidieux de devoir écrire et lire les noms complets chaque fois qu’une entité est mentionnée. Ainsi, si les correspondances exactes sont simples, la réalité est que nous avons besoin d’une approche plus sophistiquée de la résolution d’entités : une approche suffisamment robuste pour gérer au moins une partie de la créativité sans limite des auteurs humains. C’est pourquoi nous décomposons le problème en deux étapes : utiliser Elasticsearch pour récupérer des candidats plausibles à grande échelle, puis recourir à un LLM pour déterminer si ces candidats renvoient réellement à la même entité du monde réel.</p><h2>La solution : une mise en correspondance en trois étapes avec un jugement LLM transparent</h2><p>Nous vivons un changement de paradigme dans notre manière d’utiliser les ordinateurs. Tout comme l’essor d’Internet nous a fait passer d’une informatique localisée à un réseau mondialement connecté, l’IA générative transforme en profondeur la façon dont le contenu, le code et l’information sont créés. En réalité, le prototype pédagogique qui accompagne cette série a été presque entièrement « vibe codé » à l’aide d’un LLM, avec des instructions soigneusement rédigées par l’auteur. Cela ne signifie pas que les LLM atteignent — ou atteindront — le niveau de productivité propre au langage humain, mais cela veut dire que nous disposons désormais d’une ressource puissante pour faciliter la résolution d’entités.</p><p>Un schéma courant avec l'IA générative est la génération augmentée par récupération (RAG). Ici, <em>récupération</em> signifie que l’on récupère des candidats d’entités (et non que l’on génère des réponses), et que le LLM est utilisé exclusivement pour évaluer les correspondances et en expliquer la logique. Bien que je <em>puisse</em> demander à un LLM de prendre en charge l’ensemble du processus de résolution d’entités, de bout en bout, cette approche serait coûteuse, tant en temps qu’en ressources financières. La RAG aide les LLM à accomplir leur tâche en leur fournissant du contexte de manière plus efficace, ce qui leur permet de contribuer plus efficacement à la résolution d’entités.</p><p>Pour la partie récupération de la RAG, nous faisons à nouveau appel à Elasticsearch. Nous identifions d’abord des correspondances potentielles en combinant la correspondance exacte, la correspondance sur des alias et la recherche hybride, qui associe recherche par mots-clés et recherche sémantique. Une fois ces correspondances potentielles identifiées, nous les transmettons à un LLM pour évaluation. Le LLM agit comme évaluateur final des correspondances. Nous demandons également au LLM d’expliquer son raisonnement, un élément différenciant important par rapport à d’autres systèmes de résolution d’entités. Sans ces explications, la résolution d’entités reste une boîte noire ; avec elles, nous pouvons comprendre pourquoi une correspondance est pertinente.</p><h2>Concepts clés : mise en correspondance en trois étapes, recherche hybride et jugement LLM transparent</h2><p><strong>Qu’est-ce que la mise en correspondance en trois étapes ?</strong> Au début de ce projet, nous avons émis l’hypothèse que la recherche sémantique jouerait un rôle clé dans le système, mais toutes les correspondances ne nécessitent pas un niveau de recherche aussi sophistiqué. Afin de trouver des correspondances efficacement, nous adoptons une approche progressive du problème. Tout d’abord, nous vérifions les correspondances exactes à l’aide de la recherche par mots-clés. Si nous trouvons une telle correspondance, le travail est terminé et nous pouvons passer à l’étape suivante. Si la correspondance exacte échoue, nous passons à la correspondance par alias. Dans le prototype, la correspondance par alias est également effectuée à l’aide d’une correspondance exacte sur des mots-clés, par souci de simplicité. En production, cette étape peut être enrichie par des règles de normalisation, de translittération, de correspondance approximative (fuzzy matching) ou par des tables d’alias maintenues. Si, après ces deux premières étapes, aucune correspondance potentielle n’a été trouvée, nous faisons appel à la recherche sémantique via la recherche hybride d’Elasticsearch, utilisant la méthode Reciprocal Rank Fusion (RRF).</p><p><strong>Qu’est-ce que la recherche hybride ?</strong> Dans Elasticsearch, nous pouvons utiliser la recherche sémantique pour identifier des correspondances pertinentes en tenant compte du contexte. Elasticsearch est largement utilisé pour la recherche vectorielle et la récupération hybride. La similarité sémantique est puissante pour capter le sens, mais elle ne remplace pas le filtrage structuré (par exemple, par plages temporelles, emplacements ou identifiants). Elle est souvent inutile lorsqu’une correspondance exacte est disponible. Elasticsearch s’est d’abord imposé grâce à la recherche lexicale, particulièrement efficace lorsque la recherche sémantique n’est pas adaptée. Pour tirer pleinement parti des deux approches, nous combinons la recherche lexicale et la recherche sémantique au sein d’une requête hybride unique. Nous fusionnons ensuite les résultats afin d’identifier les correspondances les plus probables à l’aide de la méthode RRF. Dans le prototype, les deux premiers résultats deviennent des correspondances potentielles pouvant être soumises à l’évaluation du LLM.</p><p><strong>Pourquoi faire appel au jugement LLM ?</strong> Les jugements et explications fournis par le LLM permettent à notre système de gérer l’ambiguïté et le contexte de manière transparente. C’est essentiel pour des cas comme « le président », qui peut désigner plusieurs entités selon le contexte. Cela permet également de gérer efficacement les surnoms et les variations culturelles. Enfin, lorsque nous traitons des tâches critiques — comme l’identification d’entités figurant sur des listes de sanctions — il est indispensable de comprendre pourquoi une correspondance a été acceptée afin de pouvoir faire confiance au système. Point essentiel : le LLM ne parcourt pas l’intégralité du corpus. Il évalue uniquement le petit ensemble de candidats renvoyé par Elasticsearch.</p><h2>Résultats concrets : mise en correspondance avec raisonnement du LLM</h2><p>Un défi majeur pour toute tâche de traitement automatique du langage naturel est la création d’un document de référence, une « answer key » indiquant quels sont les résultats attendus. Sans cela, il est quasiment impossible d’évaluer la performance d’un système sur une tâche donnée. Or, la création d’un tel document peut s’avérer laborieuse. Pour le prototype de résolution d’entités, nous avons de nouveau fait appel à l'IA générative afin de générer des données sur lesquelles nous pourrions effectuer des tests.</p><p>Nous avons d’abord défini plusieurs types de défis, comme les surnoms et la translittération, puis demandé au LLM de créer une collection hiérarchisée de jeux de données, devenant progressivement plus volumineux et plus complexes pour le système. La création des jeux de données s’est révélée moins simple qu’on aurait pu l’espérer. Le LLM avait une forte tendance à « tricher » en rendant la bonne réponse trop facile à trouver. Par exemple, l’un des types de défis portait sur le contexte sémantique. Ce type incluait des cas tels que faire correspondre « auteur russe » à « Leo Tolstoy ». Le LLM a incorrectement défini « auteur russe » comme un alias de « Leo Tolstoy », ce qui supprimait la nécessité d’une recherche hybride pour identifier la correspondance.</p><p>Après plusieurs refactorisations pour corriger ce type de problèmes, nous disposions de cinq niveaux d’ensembles de données. Les niveaux 1 à 4 devenaient progressivement plus volumineux et intégraient davantage de types de défis. Le niveau 5 constituait le « défi ultime », composé des exemples les plus complexes issus de tous les types de défis. L’ensemble des données de test est disponible dans un <a href="https://github.com/jesslm/entity-resolution-lab-public/tree/main/comprehensive_evaluation">répertoire d’évaluation complet</a>.</p><p>Pour évaluer notre approche de résolution d’entités basée sur des prompts, nous avons concentré notre analyse sur le jeu de données de niveau 4. Il est important de noter que l’évaluation a été menée dans le cadre d’une expérience contrôlée afin de nous concentrer sur la qualité de mise en correspondance des entités. Les données de la liste de correspondances ont été préalablement enrichies avec du contexte, et les entités ont été extraites de l’article en amont. Cela a permis de s’assurer que l’évaluation se concentrait sur la correspondance plutôt que sur la précision de l’extraction. Cela isole la qualité de correspondance ; les performances de bout en bout dépendraient en outre du rappel d'extraction et de la qualité d'enrichissement.</p><h3>Ensemble de données d’évaluation</h3><p>L'ensemble de données d'évaluation de niveau 4 fournit un test complet des capacités du système : [1]</p><ul><li><p><strong>Entités de la liste de surveillance :</strong> 66 entités couvrant différents types (personnes, organisations, lieux).</p></li><li><p><strong>Articles de test :</strong> 69 articles couvrant des scénarios réels de résolution d’entités.</p></li><li><p><strong>Correspondances attendues :</strong> 206 correspondances attendues pour l'ensemble des articles.</p></li><li><p><strong>Types de défis : </strong>15 types de défis différents mettant à l'épreuve divers aspects de la résolution d'entités.</p></li></ul><p>Les types de défis inclus dans l’ensemble de données sont les suivants :</p><ul><li><p><strong>Surnoms :</strong> « Bob Smith » → « Robert Smith » (sept articles).</p></li><li><p><strong>Titres et titres honorifiques : « Dr. »</strong> Sarah Williams » → « Sarah Williams » (cinq articles).</p></li><li><p><strong>Contexte sémantique :</strong> « auteur russe » → « Leo Tolstoy » (huit articles).</p></li><li><p><strong>Noms multilingues :</strong> traitement des noms dans différentes écritures (six articles).</p></li><li><p><strong>Entités commerciales :</strong> variations de noms d’entreprises (sept articles).</p></li><li><p><strong>Références exécutives : </strong>« PDG de Microsoft » → « Satya Nadella » (cinq articles).</p></li><li><p><strong>Dirigeants politiques :</strong> références basées sur un titre (cinq articles).</p></li><li><p><strong>Initiales :</strong> « J. Smith » → « John Smith » (trois articles).</p></li><li><p><strong>Variations dans l’ordre des noms :</strong> différentes conventions d’ordre des noms (trois articles).</p></li><li><p><strong>Noms tronqués :</strong> correspondances partielles de noms (trois articles).</p></li><li><p><strong>Découpage des noms :</strong> noms séparés dans le texte (trois articles).</p></li><li><p><strong>Espaces ou tirets manquants :</strong> variations de mise en forme (deux articles).</p></li><li><p><strong>Translittération :</strong> correspondance de noms entre différents systèmes d’écriture (deux articles).</p></li><li><p><strong>Défis combinés :</strong> plusieurs défis dans un même article (six articles).</p></li><li><p><strong>Cas d’entreprise complexes :</strong> relations hiérarchiques entre entités commerciales (cinq articles).</p></li></ul><p>Examinons comment la résolution d’entités basée sur des prompts s’est comportée.</p><h3>Performance globale</h3><p>Les résultats montrent un fort potentiel pour l’évaluation des correspondances assistée par LLM, mais ils mettent également en évidence un problème significatif de fiabilité. Chaque paire candidate doit être évaluée par le LLM. Des erreurs dans la sortie structurée peuvent réduire la précision et le rappel, même lorsque la phase de récupération fonctionne correctement.</p><p>Métrique</p><p>Valeur</p><p>Précision</p><p>83,8 %</p><p>Rappel</p><p>62,6 %</p><p>Score F1</p><p>71,7 %</p><p>Nombre total de correspondances trouvées</p><p>344</p><p>Taux d'acceptation des LLM</p><p>44,8 %</p><p>Taux d'erreur</p><p>30,2 %</p><h3>Le problème du taux d'erreur</h3><p>Rappelons que la première étape du prototype consiste à créer des paires de correspondances potentielles à l’aide d’Elasticsearch. Chacune de ces correspondances potentielles doit ensuite être évaluée par le LLM. Pour traiter efficacement l’ensemble de ces correspondances, nous regroupons les appels au LLM par lots. Cela réduit les coûts d’API et la latence, mais augmente également le risque d’obtenir un JSON mal formé en sortie. À mesure que la taille des lots augmente, le JSON devient plus long et plus complexe, ce qui accroît la probabilité que le LLM génère un JSON invalide. C’est de là que provient le taux d’erreur de 30 %. Dans cette évaluation, nous avons utilisé une taille de lot de cinq correspondances par requête. Même avec cette taille de lot conservatrice, nous constatons toujours des échecs d'analyse JSON, ce qui fausse considérablement les résultats de l'évaluation.</p><h2>Prochaine étape : optimiser l’intégration des LLM</h2><p>Maintenant que nous avons mis en correspondance des entités à l’aide de la recherche sémantique et du jugement d’un LLM, nous disposons d’un pipeline complet de résolution d’entités. Cependant, cette approche introduit un nouveau mode de défaillance : le jugement du modèle peut être correct, mais sa sortie inutilisable. Nous pouvons optimiser l’intégration du LLM afin d’améliorer la fiabilité et la rentabilité. Dans le prochain article, nous verrons comment utiliser le function calling pour produire une sortie structurée, garantissant une structure et un typage sûrs, tout en réduisant les erreurs et les coûts.</p><h2>Essayez par vous-même</h2><p>Envie de voir la mise en correspondance d’entités en action ? Consultez le <a href="https://github.com/jesslm/entity-resolution-lab-public/tree/main/notebooks#:~:text=5%20minutes%20ago-,03_entity_matching_v3.ipynb,-Initial%20public%20lab">carnet de notes sur l'appariement des entités</a> pour une présentation complète avec des implémentations réelles, des explications détaillées et des exemples pratiques. Le carnet vous montre exactement comment faire correspondre les entités à l'aide de la recherche en trois étapes, de la recherche hybride avec RRF et du jugement raisonné basé sur le LLM.</p><p><strong>Rappel :</strong> il s’agit d’un prototype pédagogique conçu pour illustrer les concepts. Lors de la mise en œuvre d’un système en production, tenez compte de facteurs supplémentaires tels que la sélection du modèle, l’optimisation des coûts, les exigences en matière de latence, la validation de la qualité, la gestion des erreurs et la supervision — des aspects qui ne sont pas couverts dans ce prototype à visée pédagogique.</p><h2>Remarques</h2><ol><li><p>Ces ensembles de données sont synthétiques et conçus à des fins pédagogiques. Ils reflètent des défis réels, mais ne représentent aucun domaine de production spécifique.</p></li></ol>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/elasticsearch-entity-resolution-llm-semantic-search</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/elasticsearch-entity-resolution-llm-semantic-search</guid>
    <category><![CDATA[IA]]></category>
    <category><![CDATA[Recherche hybride]]></category>
    <dc:creator><![CDATA[Jessica Moszkowicz]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltefc59243d9990405/6a17056ab339d5778f769ebf/473ca4357c7d60f690edbd2a844acda169aca9c3-720x420.jpg" length="0" type="image/jpeg"/>
    <pubDate>Thu, 26 Feb 2026 00:00:00 GMT</pubDate>
  </item>
  </channel>
</rss>