Fusion multi-modèle - Documentation Entity Enricher

Fusion multi-modèle

Lorsque vous exécutez le même enrichissement sur plusieurs modèles d'IA, Entity Enricher peut fusionner les résultats en une sortie unique à haut niveau de confiance. La fusion détecte les conflits entre les sorties des modèles et les résout à l'aide de règles déterministes ou d'un arbitrage assisté par LLM.

Pipeline de fusion

Sorties des modèles
Résultat Claude
Résultat GPT-4
Résultat Gemini
Détection de conflits
Comparez chaque champ
sur tous les modèles
Résolution
Fusion basée sur des règles
ou
Arbitrage LLM
Résultat fusionné
Sortie unique avec
journal d'audit des conflits

Étape 1 : Détection des conflits

Le détecteur de conflits compare chaque champ entre toutes les sorties des modèles. Les champs sur lesquels tous les modèles s'accordent passent tels quels. Les champs sur lesquels les modèles divergent sont signalés comme des conflits à résoudre.

Règles de comparaison par type de champ
TypeMéthode de comparaisonSignification de l'accord
ScalaireCorrespondance exacte normalisée (espaces supprimés, minuscules, arrondi)Toutes les valeurs sont égales après normalisation
MultilingueLa langue principale de l'exécution tranche ; les différences de traduction ne déclenchent qu'une fusion par langueMême texte dans la langue principale — les variantes de formulation d'une traduction ne sont pas des désaccords
TableauComparaison d'ensembles (indépendante de l'ordre) sur la vue en langue principale des élémentsMêmes éléments quel que soit l'ordre ou la formulation de la traduction
ObjetPar propriété tant que les champs d'identité prouvent que les deux modèles décrivent la même chose — sinon, l'objet entier constitue un unique conflitToutes les propriétés imbriquées correspondent
Nul / videUne valeur nulle, une chaîne vide ou un tableau vide constitue une abstention, pas une affirmationLa valeur renseignée l'emporte sans comptabiliser de conflit
Exemple : enrichir « Sanofi » avec 2 modèles
Sortie Claude
revenue: 42.2
gmp_status: true
description: “Sanofi is a global...”
Sortie GPT-4
revenue: 44.1
gmp_status: true
description: “Sanofi SA is a...”
Résultat : gmp_status = agreed | revenue = conflict (42.2 vs 44.1) | description = conflict (texte différent)

Étape 2 : Résolution des conflits

Les conflits sont résolus selon l'une des deux méthodes, selon que vous avez sélectionné ou non un modèle d'arbitrage dans la barre latérale.

Option A

Fusion basée sur des règles

Des règles déterministes sont appliquées selon le type de données de chaque champ. Dans la quasi-totalité des cas, aucun appel LLM n'est nécessaire — la résolution est instantanée et gratuite. Seule exception : les nombres sur lesquels les modèles divergent fortement, qu'aucune règle ne peut honnêtement trancher ; voir ci-dessous.

Type de champRègleJustification
ChaîneVote majoritaire ; en cas d'égalité, la valeur la plus longue l'emportePlus de détails, c'est généralement mieux
NombreValeur du modèle la plus proche de la médianeRobuste face aux valeurs aberrantes, jamais de moyenne fabriquée
BooléenMajorité ; en cas d'égalité, true l'emporteValeur par défaut prudente
MultilingueVote majoritaire par langue, union des languesChaque langue est résolue indépendamment
TableauUnion sensible aux clés : les éléments sont regroupés sur leurs champs de clé, les variantes orthographiques sont fusionnées, les éléments correspondants sont fusionnés champ par champUne ligne par entité logique, sans rien perdre
ObjetPar champ lorsque l'identité concorde ; sinon, l'objet d'un seul modèle est repris en blocMélanger deux objets qui décrivent des entités différentes reviendrait à en inventer un troisième qu'aucun modèle n'a renvoyé
Null vs valeurPréférer la valeur renseignéeUne donnée manquante est pire que n'importe quelle valeur

Départage : en cas d'égalité des votes, la valeur du modèle le plus cher l'emporte (comme indicateur de capacité), puis vient l'ordre alphabétique du nom du modèle. Pour un objet entier pris de façon atomique, la complétude — le nombre de feuilles renseignées — s'intercale entre les deux : faute de preuve indiquant quelle entité est la bonne, on privilégie le modèle le plus puissant, puis la réponse qui apporte le plus d'informations.

Les objets imbriqués sont fusionnés en bloc, pas mélangés

Fusionner un objet imbriqué champ par champ n'est sûr que tant que les deux modèles décrivent la même chose. Lorsque les champs d'identité ne le prouvent pas — clés différentes, ou aucune clé avec un véritable désaccord en dessous —, l'objet devient un conflit unique et la version d'un seul modèle est reprise telle quelle. Sinon, la fusion assemblerait une chimère : l'adresse de ce modèle sur l'entreprise de cet autre. Une conséquence est délibérée mais bonne à connaître : le gagnant est repris avec ses vides, donc un champ que le gagnant a laissé vide reste vide — ce qui peut bloquer l'entité au moment de son admission en base. La raison est indiquée dans les avertissements de validation de l'exécution.

Quand les nombres divergent trop pour être fusionnés

« Le plus proche de la médiane » convient à des modèles qui arrondissent différemment, mais pas à des modèles qui se contredisent — 0 contre 1854 n'est pas une différence d'arrondi. Lorsque l'écart relatif entre les valeurs atteint 20 %, le champ est escaladé vers un arbitre LLM choisi automatiquement selon la sélection de modèles habituelle de votre organisation, et l'appel est facturé comme n'importe quel autre. Ces champs sont signalés comme escaladés automatiquement dans le journal d'audit de la fusion : une fusion qui a consommé des tokens indique donc toujours quels champs en sont la cause.

Option B

Arbitrage LLM

Lorsque vous sélectionnez un modèle d'arbitrage dans la barre latérale, les conflits sont envoyés à un LLM pour une résolution intelligente. L'arbitre reçoit le contexte de l'entité, les descriptions des champs du schéma et toutes les valeurs en conflit, puis prend des décisions motivées.

Ce que renvoie l'arbitre
Valeur choisieLa valeur qu'il considère comme la plus exacte
Modèle sourceIndique de quel modèle provient la valeur choisie
RaisonnementPourquoi il a choisi cette valeur plutôt que les alternatives
ConfianceSon niveau de confiance dans la décision (élevé, moyen, faible)

Repli : si le modèle d'arbitrage échoue (délai dépassé, erreur), le système bascule automatiquement vers la fusion basée sur des règles afin que vous obteniez toujours un résultat.

Étape 3 : Le résultat fusionné

Après la résolution des conflits, le système construit un résultat fusionné unique et le stocke comme enregistrement d'« arbitrage » dans la base de données. Chaque résultat fusionné inclut une piste d'audit qui vous permet de retracer comment chaque conflit a été résolu.

Piste d'audit (métadonnées d'arbitrage)

Chaque résultat fusionné inclut des métadonnées qui documentent le processus de fusion :

“method”: “rule_based” | “llm”
“source_record_ids”: [“uuid-1”, “uuid-2”]
“total_fields”: 23
“agreed_fields”: 18
“conflicted_fields”: 5
“decisions”: [{ path, chosen_value, rule_used, ... }]

Le même journal d'audit est affiché pour tout enregistrement fusionné sur la page Historique, dans son onglet Vue d'ensemble. Un enregistrement fusionné répertorie les modèles qu'il a fusionnés plutôt qu'un modèle qui lui est propre — et lorsque la fusion était basée sur des règles, elle n'a effectué aucun appel LLM, elle ne comporte donc aucun prompt, aucun token ni aucun coût.

Ce que vous voyez dans l'interface

Une fois la fusion terminée, l'onglet « Fusionné » du panneau de résultats affiche :

1
En-tête de résumé
Affiche la méthode de résolution (par règles ou LLM), ainsi qu'un décompte tel que « 18 concordants / 5 résolus / 23 champs au total ».
2
JSON fusionné
La sortie structurée complète combinant les valeurs concordantes et les conflits résolus en un seul document JSON.
3
Rapport de conflits
Cartes développables pour chaque conflit affichant : le chemin du champ, le badge de la méthode de résolution (vote majoritaire, médiane, union, etc.), toutes les valeurs des modèles avec celle retenue mise en évidence, et le texte de raisonnement si l'arbitrage LLM a été utilisé.

Fusion automatique lors du traitement par lot

Dans l'enrichissement en traitement par lot, la fusion se produit automatiquement dès que vous sélectionnez deux modèles ou plus. Vous n'avez pas besoin de cliquer manuellement sur « Fusionner les résultats » : dès que tous les modèles ont réussi pour une entité, la fusion s'exécute et le résultat fusionné apparaît à côté des sorties de chaque modèle. Une exécution dans laquelle un modèle a échoué n'est délibérément pas fusionnée : fusionner ce qu'il en reste publierait silencieusement une réponse partielle comme s'il s'agissait de la réponse convenue. Récupérez d'abord le modèle manquant — relancer ses expertises en échec fusionne automatiquement l'exécution une fois celle-ci de nouveau complète.

Fusion en streaming : pendant l'enrichissement d'une entité unique comme pendant le traitement par lot, la progression de la fusion est diffusée via Server-Sent Events. Vous voyez les événements fusion_started, conflicts_detected et fusion_completed en temps réel.

Arbitrage basé sur des règles vs LLM : quand utiliser chaque approche

Basé sur des règles (instantané, presque toujours gratuit)
  • Données majoritairement factuelles/numériques où la logique de vote fonctionne bien
  • Volume élevé ou traitement par lot lorsque le coût compte
  • Schémas simples avec peu de conflits attendus
  • Lorsque vous voulez des résultats déterministes et reproductibles
Arbitrage LLM (coût supplémentaire)
  • Schémas complexes où le contexte compte pour la résolution
  • Données textuelles (descriptions, résumés) où le vote est insuffisant
  • Lorsque vous avez besoin de décisions explicables avec justification
  • Enrichissements à enjeux élevés où la précision justifie le coût supplémentaire