Ogni arricchimento che risolve un ID semantico riutilizza un concetto che la Sua organizzazione conosce già oppure ne conia uno nuovo. La pagina ID semantici è il luogo in cui questo vocabolario in crescita diventa consultabile: lo può sfogliare, misurare quanto due voci siano davvero vicine, aggiungere termini a mano, rispondere alle domande che il giudice di identità Le lascia, ritirare ciò che non desidera più e migrare l'intero insieme su un altro modello di embedding.
Si trova in /semantic-ids nella barra laterale ed è utile solo quando la sua organizzazione dispone di un modello di embedding e di almeno uno schema che contiene un ID semantico: i concetti vengono creati dagli arricchimenti, non dalla pagina.
Ogni riga corrisponde a un concetto: il suo testo canonico (il testo identitario che lo ha creato per primo), il suo tipo di concetto (lo spazio in cui risiede — per impostazione predefinita il nome del tipo di entity), quanti record lo utilizzano e la data di creazione. Filtri per testo, per un numero qualsiasi di tipi di concetto, per gli schema che vi scrivono oppure per un utilizzo minimo, così da individuare le voci che meritano la sua attenzione. Selezionare gli schema è una scorciatoia per i relativi tipi di concetto e, poiché un tipo è condiviso, vengono mostrati anche i concetti creati da un altro schema nello stesso tipo. Esporta vista scarica esattamente ciò che i filtri stanno mostrando.
La similarità viene misurata solo all'interno di un unico spazio. I vettori sono confrontabili soltanto nell'ambito dello stesso tipo di concetto e dello stesso modello di embedding. Le righe esterne allo spazio del concetto selezionato mostrano —, che significa «non confrontabile» e mai «0%».
A volte il vocabolario è noto prima che arrivino i dati: un elenco di piatti, stati, famiglie di prodotti. La barra Cura è pensata proprio per digitare quell'elenco: si delimita l'ambito a un tipo di concetto una sola volta — l'ambito confluisce nell'indirizzo della pagina, quindi /semantic-ids/<concept type> è un collegamento diretto a quella porzione — poi si ripete digita un valore → Verifica → Aggiungi. Invio verifica, un secondo Invio aggiunge, e il campo si svuota mantenendo il focus: così un vocabolario di cinquanta termini richiede pochi minuti di digitazione, senza toccare il mouse.
Il controllo è una simulazione della vera scala di risoluzione — la stessa che esegue un arricchimento — quindi il suo verdetto non è una stima. E poiché quel verdetto è già stato pagato, funge anche da protezione contro i duplicati: quando un concetto esistente copre il testo alla soglia o al di sopra di essa, Aggiungi concetto resta disattivato.
Il rifiuto è voluto: un gemello al di sopra della soglia non potrebbe mai vincere una risoluzione e distribuirebbe in modo imprevedibile le corrispondenze future tra le due voci. Il cursore Soglia accanto al campo stabilisce dove si colloca questo limite per le sue verifiche: alzarlo per essere più severi, abbassarlo per unificare in modo più aggressivo.
Nemmeno il vocabolario deve necessariamente partire da un arricchimento: Nuovo tipo di concetto… (nella barra degli strumenti della pagina, dal ruolo editor in su) assegna un nome a un tipo e sceglie il modello di embedding in cui risiederanno i suoi concetti — per impostazione predefinita il modello della propria organizzazione. La barra di curatela viene subito circoscritta a quel tipo e il tipo entra a far parte del vocabolario con il primo concetto aggiunto; un tipo già esistente mantiene il proprio modello, poiché lo spostamento di un vocabolario da un modello a un altro è proprio ciò a cui serve la migrazione.
Nulla finisce in Revisione solo perché sembra simile. Ogni coppia qui presente è una decisione che il giudice di identità ha lasciato a Lei: non è riuscito a stabilirlo (Incerto), ha trovato due dei Suoi concetti equivalenti a un unico testo in ingresso (Sembra duplicato) oppure ne ha separati due dal punteggio quasi identico (Tenuti distinti) — quest'ultimo caso Le viene proposto per confermare che non abbia trascurato il candidato ovvio. Ogni riga riporta la frase con cui il giudice spiega cosa ha determinato la decisione.
Confronta → riporta alla tabella con quel concetto selezionato, così può vedere cos'altro gli sta vicino prima di decidere. Unisci… fonde l'uno nell'altro: le grafie del perdente diventano alias del vincitore, così la coppia converge ovunque e resta convergente. Ignora chiude la questione quando i due sono davvero due cose distinte. I conteggi di utilizzo indicano quale dei due i dati preferiscono effettivamente.
Il pannello di destra mostra l’ID del concetto (copiabile — è il valore su cui il database esegue le join), il suo testo normalizzato, il modello di embedding che lo genera e i record risolti su di esso. Il concetto selezionato fa parte dell’indirizzo della pagina, quindi l’URL nella barra degli indirizzi è un collegamento diretto ad esso — condivisibile con un collega, o da conservare in un ticket. Due viste lo collocano tra i concetti vicini.
Comprimere 1536 dimensioni in 3 non può preservare le distanze e la disposizione esagera la compattezza dei cluster. Entrambe le viste colorano ogni punto secondo la stessa scala di similarità: occorre quindi leggere il colore, non la distanza. La prima mappa di una sessione richiede qualche secondo per essere disposta; le successive sono istantanee.
Ogni record collegato mostra il punteggio con cui è stato risolto qui. Un — significa che l'ID è arrivato nell'input ed è stato trasmesso così com'è, quindi non è stato confrontato nulla: il percorso gratuito e privo di ambiguità descritto nella guida agli ID semantici.
Importa e risolvi esegue un'intera colonna CSV attraverso la stessa scala e annota ogni riga con ciò che le accadrebbe — non esiste alcun limite di dimensione del file; i file di grandi dimensioni vengono risolti in batch da 1000 con avanzamento in tempo reale. Il file viene analizzato nel browser — vengono inviati solo i valori.
| Esito | Che cosa significa |
|---|---|
exact | Lo stesso testo, normalizzato, esiste già: gratuito, senza chiamata al modello. |
matched | Una formulazione diversa è stata risolta in un concetto esistente al di sopra della soglia. |
would_mint | Nessun risultato era sufficientemente simile: qui un arricchimento creerebbe un nuovo concetto. |
minted | Lo stesso caso, con la creazione attivata: il concetto ora esiste (solo per il proprietario). |
Il tipo di concetto si digita, non si seleziona. Un file è un modo del tutto normale per avviare un vocabolario: il campo suggerisce quindi gli spazi già esistenti pur accettando un nome che non lo è — e indicanuovo quando è così. Un nome nuovo pone l'unica domanda che non è possibile porre in seguito: in quale modello di embedding vivranno i suoi concetti. Risponda qui e lo spazio verrà creato con il primo valore coniato dall'importazione; in seguito, spostare un vocabolario tra modelli è una migrazione.
Due accorgimenti impediscono che una svista diventi un secondo vocabolario: digitando il nome di uno spazio già esistente lo si seleziona, indipendentemente dalle maiuscole, e un nome che dista una o due lettere da uno esistente viene segnalato con una correzione a un clic. Con uno spazio effettivamente nuovo non c'è nulla con cui confrontare: un'esecuzione di solo confronto risponde quindi “ogni valore verrebbe creato” senza calcolare l'embedding di una sola riga — e senza alcun addebito.
Le righe risolte si scaricano in un CSV dedicato, quindi un'importazione può essere usata anche come semplice verifica: quali dei nostri 900 nomi di fornitori sono già noti e quali aprirebbero una nuova identità? Le esportazioni funzionano in senso inverso e assegnano al file il nome dei filtri con cui sono state generate, così una cartella di esportazioni resta autodescrittiva.
L'eliminazione è sicura in un modo in cui la maggior parte delle eliminazioni di dati non lo è: il vocabolario si ricostruisce da sé, perché l'arricchimento successivo conia semplicemente ciò che gli serve. Ciò che non torna è la convergenza con gli ID già memorizzati, e la finestra di dialogo lo indica con numeri reali prima della conferma.
Dopo una modifica del genere, conservare i vecchi concetti è la scelta rischiosa, non quella prudente: le identità composte a partire dalle nuove chiavi possono comunque ricadere entro la soglia dei vecchi vettori ed esserne assorbite silenziosamente, lasciando ID che non significano né una cosa né l'altra.
I vettori provenienti da due modelli diversi non sono confrontabili: cambiare modello significa ricalcolare l’embedding di ogni concetto. Una volta creati i concetti, questa migrazione è l’unico modo previsto per farlo — ed è il motivo per cui l’impostazione del modello di embedding dell’organizzazione non cambia da sola.
L'anteprima indica quanto costerà il nuovo embedding e quali coppie di concetti rischiano di collidere, ovvero di ritrovarsi entro la soglia l'una dall'altra nel nuovo spazio e iniziare a risolversi insieme. Vengono misurati i candidati realistici anziché tutte le coppie, e ciò viene indicato esplicitamente.
Gli arricchimenti continuano a risolversi nel vecchio spazio mentre i nuovi vettori vengono costruiti accanto ad esso; i concetti coniati nel frattempo vengono recuperati da un passaggio successivo. Il cambio avviene in un unico passaggio finale, che modifica anche il modello di embedding predefinito dell'organizzazione. Interromperlo è innocuo: riavviando, l'operazione riprende da dove si era fermata.
Controlli, aggiunte e importazioni vengono addebitati come qualsiasi altro utilizzo di embedding, mentre le corrispondenze esatte non costano nulla perché non raggiungono mai un modello. Sfogliare, confrontare, l'orbita, la mappa 3D, l'esportazione e l'eliminazione sono gratuiti. La spesa interattiva di un'intera giornata viene raccolta in un'unica voce nella cronologia dei crediti, così il registro resta leggibile invece di riempirsi di frazioni di centesimo.