Fusione multi-modello - Documentazione di Entity Enricher

Fusione multi-modello

Quando si esegue lo stesso arricchimento su più modelli di IA, Entity Enricher può fondere i risultati in un unico output ad alta affidabilità. La fusione rileva i conflitti tra gli output dei modelli e li risolve con regole deterministiche o mediante arbitrato basato su LLM.

Pipeline di fusione

Output del modello
Risultato di Claude
Risultato di GPT-4
Risultato Gemini
Rilevamento dei conflitti
Confronta ogni campo
tra tutti i modelli
Risoluzione
Unione basata su regole
o
Arbitraggio LLM
Risultato unito
Un unico output con
audit trail dei conflitti

Passaggio 1: rilevamento dei conflitti

Il rilevatore di conflitti confronta ogni campo tra tutti gli output dei modelli. I campi su cui tutti i modelli concordano vengono lasciati invariati. I campi su cui i modelli non concordano vengono segnalati come conflitti da risolvere.

Regole di confronto per tipo di campo
TipoMetodo di confrontoSignificato dell'accordo
ScalarCorrispondenza esatta normalizzata (senza spazi, in minuscolo, arrotondata)Tutti i valori sono uguali dopo la normalizzazione
MultilinguaDecide la lingua principale dell'esecuzione; le differenze di traduzione attivano soltanto un'unione per linguaStesso testo nella lingua principale — le varianti di formulazione di una traduzione non sono discordanze
ArrayConfronto tra insiemi (indipendente dall'ordine) sulla vista in lingua principale degli elementiStessi elementi indipendentemente dall'ordine o dalla formulazione della traduzione
OggettoPer proprietà finché i campi identità dimostrano che entrambi i modelli descrivono la stessa cosa — altrimenti l'intero oggetto costituisce un unico conflittoTutte le proprietà nidificate corrispondono
Null / vuotoUn valore null, stringa vuota o array vuoto è un'astensione, non un'affermazioneIl valore compilato prevale senza conteggiare un conflitto
Esempio: enrichment di «Sanofi» con 2 modelli
Output di Claude
revenue: 42.2
gmp_status: true
description: “Sanofi is a global...”
Output di GPT-4
revenue: 44.1
gmp_status: true
description: “Sanofi SA is a...”
Risultato: gmp_status = concordato | revenue = conflitto (42.2 vs 44.1) | description = conflitto (testo diverso)

Passaggio 2: risoluzione dei conflitti

I conflitti vengono risolti con uno di due metodi, a seconda che sia stato selezionato un model di arbitration nella barra laterale.

Opzione A

Unione basata su regole

Vengono applicate regole deterministiche in base al tipo di dato di ciascun campo. Quasi sempre non è necessaria alcuna chiamata LLM: la risoluzione è immediata e gratuita. L'unica eccezione sono i numeri su cui i modelli divergono radicalmente, che nessuna regola può dirimere onestamente; si veda più avanti.

Tipo di campoRegolaMotivazione
StringaVoto a maggioranza; in caso di parità vince il valore più lungoIn genere, più dettagli sono meglio
NumeroValore del model più vicino alla medianaRobusto rispetto ai valori anomali, mai una media inventata
BooleanoMaggioranza; in caso di parità vince trueImpostazione predefinita conservativa
MultilinguaVoto a maggioranza per lingua, unione delle lingueOgni lingua risolta in modo indipendente
ArrayUnione basata sulle chiavi: gli elementi si raggruppano in base ai campi chiave, le varianti di scrittura vengono unificate, gli elementi corrispondenti vengono uniti campo per campoUna riga per ogni entity logica, senza perdere nulla
OggettoPer campo quando l'identità coincide; altrimenti si prende per intero l'oggetto di un solo modelloFondere due oggetti che descrivono entità diverse inventerebbe un terzo oggetto che nessuno dei due modelli ha restituito
Null vs ValorePreferisci il valore compilatoUn dato mancante è peggiore di qualsiasi valore

Criterio di spareggio: in caso di parità di voti prevale il valore del modello dal prezzo più alto (come indicatore indiretto della capacità), seguito dall'ordine alfabetico del nome del modello. Per un intero oggetto considerato in modo atomico, tra i due criteri si inserisce la completezza — il numero di foglie valorizzate: non essendoci nulla che dimostri quale entità sia quella reale, si preferisce il modello più forte e poi la risposta che porta più informazioni.

Gli oggetti annidati vengono uniti per intero, non mescolati

Unire un oggetto annidato campo per campo è sicuro solo finché entrambi i modelli descrivono la stessa cosa. Quando i campi di identità non lo dimostrano — chiavi diverse, oppure nessuna chiave e un reale disaccordo sottostante — l'oggetto diventa un unico conflitto e la versione di uno solo dei modelli viene presa alla lettera. Altrimenti la fusione assemblerebbe una chimera: l'indirizzo di un modello sull'azienda di un altro. Una conseguenza è deliberata, ma vale la pena conoscerla: il vincitore viene preso con i suoi vuoti inclusi, quindi un campo lasciato vuoto dal vincitore resta vuoto — il che può bloccare l'entità al varco di ammissione nel database. Il motivo viene riportato tra gli avvisi di validazione dell'esecuzione.

Quando i numeri divergono troppo per essere uniti

“Il più vicino alla mediana” è il criterio giusto per modelli che arrotondano in modo diverso ed è sbagliato per modelli che si contraddicono a vicenda: 0 contro 1854 non è una differenza di arrotondamento. Quando la dispersione relativa dei valori raggiunge il 20%, quel campo viene sottoposto a un arbitro LLM scelto automaticamente tramite la consueta selezione dei modelli della sua organizzazione, e la chiamata viene fatturata come qualsiasi altra. Tali campi sono contrassegnati come sottoposti automaticamente ad arbitraggio nella traccia di audit della fusione, così che un'unione che ha consumato token indichi sempre quali campi l'hanno causata.

Opzione B

Arbitraggio LLM

Quando si seleziona un modello di arbitrato nella barra laterale, i conflitti vengono inviati a un LLM per una risoluzione intelligente. L'arbitro riceve il contesto dell'entità, le descrizioni dei campi dello schema e tutti i valori in conflitto, quindi prende decisioni motivate.

Che cosa restituisce l'arbitro
Valore sceltoIl valore che considera più accurato
Modello di origineDa quale modello proviene il valore scelto
RagionamentoPerché ha scelto quel valore rispetto alle alternative
AttendibilitàQuanto è sicuro della decisione (alta, media, bassa)

Fallback: se il modello di arbitraggio fallisce (timeout, errore), il sistema ricorre automaticamente all'unione basata su regole in modo da ottenere sempre un risultato.

Passaggio 3: il risultato unito

Dopo la risoluzione dei conflitti, il sistema crea un unico risultato unito e lo memorizza come record di “arbitrato” nel database. Ogni risultato unito include una traccia di controllo che consente di ricostruire come è stato risolto ciascun conflitto.

Registro di audit (metadati di arbitrato)

Ogni risultato unito include metadati che documentano il processo di 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, ... }]

Lo stesso audit trail viene mostrato per qualsiasi record unito nella pagina Cronologia, nella relativa scheda Panoramica. Un record unito elenca i modelli che ha unito anziché un proprio modello — e quando l'unione è basata su regole non è stata effettuata alcuna chiamata LLM, quindi non comporta alcun prompt, alcun token né alcun costo.

Che cosa si vede nell'interfaccia

Al termine della fusione, la scheda “Unito” nel pannello dei risultati mostra:

1
Intestazione di riepilogo
Mostra il metodo di risoluzione (basato su regole o LLM) e un conteggio come “18 concordati / 5 risolti / 23 campi totali”.
2
JSON unito
L'output strutturato completo che combina i valori concordati e i conflitti risolti in un unico documento JSON.
3
Report dei conflitti
Schede espandibili per ogni conflitto che mostrano: il percorso del campo, il badge del metodo di risoluzione (Voto di maggioranza, Mediana, Unione, ecc.), tutti i valori del modello con quello scelto evidenziato e il testo di ragionamento se è stato usato l'arbitraggio LLM.

Fusione automatica nell'elaborazione in batch

Nell'arricchimento in batch, la fusione avviene automaticamente quando si selezionano due o più modelli. Non è necessario fare clic manualmente su “Unisci risultati”: non appena tutti i modelli hanno avuto esito positivo per un'entità, la fusione viene eseguita e il risultato unito appare accanto agli output dei singoli modelli. Un'esecuzione in cui un modello è fallito non viene fusa, deliberatamente: unire ciò che resta pubblicherebbe silenziosamente una risposta parziale come se fosse quella condivisa. Recuperi prima il modello mancante — ripetendo le sue competenze fallite l'esecuzione viene fusa automaticamente non appena torna completa.

Fusione in streaming: Durante l'arricchimento sia di singole entità che in batch, l'avanzamento della fusione viene trasmesso in streaming tramite Server-Sent Events. Vengono visualizzati in tempo reale gli eventi fusion_started, conflicts_detected e fusion_completed.

Basato su regole vs arbitraggio LLM: quando usare ciascuno

Basato su regole (istantaneo, quasi sempre gratuito)
  • Dati prevalentemente fattuali/numerici in cui la logica di voto funziona bene
  • Volumi elevati o elaborazione in batch in cui il costo è rilevante
  • Schema semplici con pochi conflitti previsti
  • Quando si desiderano risultati deterministici e riproducibili
Arbitraggio LLM (costo aggiuntivo)
  • Schemi complessi in cui il contesto è determinante per la risoluzione
  • Dati testuali (descrizioni, riepiloghi) dove il voto non è sufficiente
  • Quando servono decisioni spiegabili con relativo ragionamento
  • Enrichment critici in cui l'accuratezza vale il costo aggiuntivo