De pagina Semantische ID’s

Elke verrijking die een semantische ID oplost, hergebruikt een concept dat je organisatie al kent of maakt een nieuw concept aan. Op de pagina Semantische ID's wordt die groeiende woordenschat iets wat je kunt bekijken: doorblader hem, meet hoe dicht twee vermeldingen echt bij elkaar liggen, voeg met de hand termen toe, beantwoord de vragen die de identiteitsbeoordelaar voor je achterlaat, zet buiten gebruik wat je niet meer wilt, en verplaats het geheel naar een ander embeddingmodel.

De pagina openen

Je vindt de pagina onder /semantic-ids in de zijbalk, en ze is pas nuttig zodra je organisatie een embeddingmodel heeft en minstens één schema met een semantisch ID — concepten worden aangemaakt door verrijkingen, niet door de pagina.

Wie wat mag doen

  • •Editor — bladeren, vergelijken, exporteren, een tekst controleren, een concept toevoegen, concepten verwijderen.
  • •Eigenaar / beheerder — daarnaast concepten aanmaken via een import (en daarmee een nieuw concepttype openen, als het bestand dat nodig heeft), hele concepttypes leegmaken en het embeddingmodel migreren.

De conceptentabel lezen

Elke rij is één concept: de canonieke tekst (de identiteitstekst waarmee het is aangemaakt), het concepttype (de ruimte waarin het leeft — standaard de naam van het entiteitstype), hoeveel records het gebruiken en wanneer het is aangemaakt. Filter op tekst, op een willekeurig aantal concepttypen, op de schema's die erin schrijven, of op een minimaal gebruik om de items te vinden die je aandacht verdienen. Schema's kiezen is een snelkoppeling naar hun concepttypen — en omdat een type gedeeld wordt, zie je ook de concepten die een ander schema in datzelfde type heeft aangemaakt. Weergave exporteren downloadt precies wat de filters laten zien.

  1. 1Aantal aliassen op de canonieke rij
  2. 2Een spelling die door de identiteitsbeoordelaar is geabsorbeerd
De +1-chip is het aantal aliassen: één concept, meerdere schrijfwijzen, één gebruikstotaal. Een vorm die de arbiter heeft opgenomen krijgt auto — de arbiter wordt per verschijningsvorm ooit maar één keer betaald.
Als je een rij selecteert, meet de kolom Gelijkenis alles af tegen die rij en wordt dat concept rechts geopend.

Gelijkenis wordt alleen binnen één ruimte gemeten. Vectoren zijn alleen vergelijkbaar binnen hetzelfde concepttype en embeddingmodel. Rijen buiten de ruimte van het geselecteerde concept tonen —, wat “niet vergelijkbaar” betekent — nooit “0%”.

Termen toevoegen: de curatielus

Soms ken je de woordenlijst al voordat de data binnenkomt — een lijst met gerechten, statussen, productfamilies. De Cureren-balk is gemaakt om die lijst in te typen: stel het bereik één keer in op een concepttype — dat bereik komt in het adres van de pagina, dus /semantic-ids/<concept type> is een directe link naar dat deel — en herhaal dan waarde typen → Controleren → Toevoegen. Enter controleert, een tweede Enter voegt toe, en het veld wordt leeggemaakt en houdt de focus, zodat een woordenlijst van vijftig termen een paar minuten typen is, zonder de muis aan te raken.

Niets herleidt deze tekst boven de drempelwaarde, dus Concept toevoegen staat klaar. De tabel rangschikt nu elk concept op gelijkenis met wat je hebt getypt.

Controleren is een proefrun van de echte resolutieladder — dezelfde die een verrijking doorloopt — dus het oordeel is geen schatting. En omdat je voor dat oordeel al hebt betaald, dient het meteen als duplicaatbewaking: dekt een bestaand concept je tekst op of boven de drempel, dan blijft Concept toevoegen uitgeschakeld.

Een exacte treffer kost helemaal niets — geen modelaanroep. Bij een bijna-match krijg je in plaats daarvan het bestaande concept met zijn score te zien.

Die weigering is bewust: een tweelingconcept boven de drempelwaarde zou nooit een herleiding kunnen winnen en zou toekomstige matches onvoorspelbaar over de twee items verdelen. De schuifregelaar Drempelwaarde naast het veld bepaalt waar die grens ligt voor je controles — hoger voor strenger, lager om agressiever samen te voegen.

Het vocabulaire hoeft ook niet vanuit een verrijking te beginnen: met Nieuw concepttype… (in de paginawerkbalk, editor en hoger) geef je een type een naam en kies je het embeddingmodel waarin de concepten ervan komen te leven — standaard het model van je organisatie. De curatiebalk wordt er meteen op afgestemd en het type wordt samen met het eerste concept dat je toevoegt aan het vocabulaire toegevoegd; een type dat al bestaat behoudt zijn model, want een vocabulaire tussen modellen verplaatsen is precies waar de migratie voor bedoeld is.

Het embeddingmodel is de enige vraag die je niet later kunt stellen: een type houdt het model waarmee het is geopend, en het verplaatsen ervan is een migratie.

De beoordelingswachtrij

Niets belandt in Beoordelen alleen omdat het op elkaar lijkt. Elk paar hier is iets waarover de identiteitsbeoordelaar heeft beslist en dat hij aan jou overlaat: hij wist het niet (Onzeker), hij vond twee van je concepten gelijk aan één binnenkomende tekst (Lijkt dubbel), of hij scheidde er twee die vrijwel identiek meten (Apart gehouden) — dat laatste krijg je te zien zodat je kunt bevestigen dat hij de voor de hand liggende kandidaat niet over het hoofd zag. Elke rij bevat de eigen zin van de beoordelaar die uitlegt wat de doorslag gaf.

Twee heel verschillende oordelen naast elkaar: twee namen voor één tarbotgerecht, en twee echt verschillende chocoladedesserts. De beoordelaar vindt de vragen; jij beantwoordt ze.

Vergelijken → springt terug naar de tabel met dat concept geselecteerd, zodat je ziet wat er verder in de buurt staat voordat je beslist. Samenvoegen… vouwt het ene in het andere — de schrijfwijzen van de verliezer worden aliassen van de winnaar, zodat het paar overal samenkomt en samen blijft. Negeren sluit de vraag af wanneer het echt om twee dingen gaat. De gebruikstellingen laten zien welke van de twee de data daadwerkelijk verkiest.

De impact wordt geteld voordat je bevestigt: opnieuw gekoppelde records en de databasewijzigingen die de samenvoeging stroomafwaarts in de wachtrij zet.

Eén concept bekijken

In het rechterpaneel zie je de ID van het concept (kopieerbaar — je database koppelt hierop), de genormaliseerde tekst, het embeddingmodel erachter en de records die ernaar zijn herleid. Het geselecteerde concept maakt deel uit van het paginaadres, dus de URL in je adresbalk is een directe link terug — te delen met een collega of om in een ticket te bewaren. Twee weergaven plaatsen het tussen zijn buren.

Baanweergave — de afstand tot het midden is de gelijkenis, dus de stippellijn is de drempel zelf: alles daarbinnen zou naar dit concept worden herleid.
Conceptkaart (3D) — een optionele weergave van de hele ruimte. De kleur is de meting; de positie geeft alleen een indruk van de clustervorm, en daarom wordt er geen drempelbol getekend.

Waarom positie geen waarheid is

1536 dimensies platslaan tot 3 kan afstanden niet behouden, en de weergave overdrijft hoe compact clusters zijn. Beide weergaven kleuren elk punt volgens dezelfde gelijkenisschaal, dus lees de kleur, niet de afstand. De eerste kaart van een sessie kost een paar seconden om op te bouwen; daarna gaat het direct.

Gekoppelde records

Bij elk gekoppeld record zie je de score waarmee het hier is herleid. Een — betekent dat de ID al in de invoer zat en is doorgegeven, dus er is nooit iets vergeleken — de gratis, ondubbelzinnige route die in de gids over semantische ID’s wordt beschreven.

Een vocabulaire importeren en exporteren

Importeren & oplossen haalt een hele CSV-kolom door dezelfde ladder en geeft bij elke rij aan wat ermee zou gebeuren — er geldt geen limiet op de bestandsgrootte; grote bestanden worden opgelost in batches van 1000, met live voortgang. Het bestand wordt in je browser verwerkt — alleen de waarden zelf worden verstuurd.

Een run die alleen matcht schrijft niets weg en is dus een getrouwe voorvertoning van wat je volgende verrijking met dezelfde waarden zou doen.
ResultaatWat het betekent
exactDezelfde tekst bestaat al, genormaliseerd — gratis, geen modelaanroep.
matchedEen andere formulering is boven de drempel herleid tot een bestaand concept.
would_mintNiets kwam dicht genoeg in de buurt; een verrijking zou hier een nieuw concept aanmaken.
mintedHetzelfde geval, met aanmaken ingeschakeld — het concept bestaat nu (alleen eigenaar).

Het concepttype typ je, je kiest het niet. Een bestand is een volkomen normale manier om een vocabulaire te beginnen, dus het veld stelt de ruimtes voor die je al hebt en accepteert tegelijk een naam die je nog niet hebt — en zegtnieuw wanneer dat zo is. Een nieuwe naam stelt de ene vraag die later niet meer gesteld kan worden: in welk embeddingmodel de concepten gaan leven. Beantwoord die hier en de ruimte wordt aangemaakt met de eerste waarde die de import aanmaakt; daarna is een vocabulaire tussen modellen verplaatsen een migratie.

Twee dingen voorkomen dat een vergissing een tweede vocabulaire wordt: als je de naam typt van een ruimte die je al hebt, wordt die geselecteerd, ongeacht hoofdletters, en een naam die één of twee letters van een bestaande afligt, wordt gesignaleerd met een correctie in één klik. Tegen een echt nieuwe ruimte valt niets te vergelijken, dus een run met alleen matchen antwoordt “elke waarde zou worden aangemaakt” zonder ook maar één rij te embedden — en rekent daar niets voor.

De herleide rijen download je als aparte CSV, zodat een import ook puur als audit kan dienen: welke van onze 900 leveranciersnamen zijn al bekend, en welke zouden een nieuwe identiteit openen? Exports werken andersom en vernoemen het bestand naar de filters waarmee het is gemaakt, zodat een map vol exports zichzelf blijft verklaren.

Concepten verwijderen

Verwijderen is veilig op een manier die voor de meeste data niet geldt: het vocabulaire bouwt zichzelf weer op, omdat de volgende verrijking gewoon opnieuw aanmaakt wat ze nodig heeft. Wat niet terugkomt, is de convergentie met de ID’s die je al hebt opgeslagen, en het dialoogvenster vermeldt dat met echte aantallen voordat je bevestigt.

Elk type benoemt de embeddingruimte waarin het leeft — twee types op verschillende modellen zijn nooit vergelijkbaar, en daarom is de telling zo uitgesplitst.
Records behouden het ID dat ze al hebben; nieuwe verrijkingen van hetzelfde ding maken een ander ID aan. Downstream databases zien dat als een nieuwe rij.

Na zo’n wijziging is het behouden van de oude concepten juist de riskante keuze, niet de voorzichtige: identiteiten die uit de nieuwe sleutels zijn opgebouwd, kunnen alsnog binnen de drempel van de oude vectoren vallen en er stilletjes door worden opgeslokt, waarna je ID’s overhoudt die geen van beide dingen betekenen.

Het embeddingmodel wijzigen

Vectoren van twee verschillende modellen zijn niet vergelijkbaar, dus van model wisselen betekent dat elk concept opnieuw geëmbed moet worden. Zodra er concepten bestaan, is deze migratie de enige toegestane manier om dat te doen — en daarom weigert de embeddingmodel-instelling van de organisatie om vanzelf te veranderen.

Eén embeddingruimte tegelijk. Concept-ID’s veranderen nooit, dus records, entiteiten, exports en database syncs blijven al die tijd geldig.

Eerst een proefrun

De preview laat zien wat het opnieuw embedden kost en welke conceptparen waarschijnlijk zullen botsen — in de nieuwe ruimte binnen elkaars drempelwaarde belanden en voortaan samen herleid worden. Daarbij worden de realistische kandidaten gemeten in plaats van elk paar, en dat wordt er ook bij vermeld.

Geen pauze, geen venster om in de gaten te houden

Verrijkingen blijven in de oude ruimte herleiden terwijl de nieuwe vectoren ernaast worden opgebouwd; concepten die intussen ontstaan, worden in een latere ronde meegenomen. De omschakeling gebeurt in één stap aan het eind, waarbij ook het standaard-embeddingmodel van je organisatie wordt omgezet. Onderbreken is ongevaarlijk — als je opnieuw start, gaat het verder waar het gestopt is.

Wat de pagina kost

Controles, toevoegingen en imports worden net als elk ander embeddinggebruik in rekening gebracht, en exacte treffers kosten niets omdat ze nooit bij een model terechtkomen. Bladeren, vergelijken, de baanweergave, de 3D-kaart, exporteren en verwijderen zijn gratis. Alle interactieve uitgaven van een dag worden samengevoegd tot één regel in je credithistorie, zodat het overzicht leesbaar blijft in plaats van vol te lopen met fracties van een cent.