Wat is een embedding? Een getallenreeks die de betekenis van tekst vastlegt, zodat 'factuur' en 'rekening' dicht bij elkaar liggen.
Een embedding is een lange reeks getallen die de betekenis van een stuk tekst vastlegt, gemaakt door een getraind model. Teksten die inhoudelijk bij elkaar horen krijgen reeksen die dicht bij elkaar liggen. 'factuur' en 'rekening' raken elkaar, 'factuur' en 'kapstok' niet. Zo'n reeks is geen leesbare tekst maar rekenmateriaal: er kun je mee zoeken, vergelijken en clusteren.
Wie een embedding maakt, geeft een stuk tekst aan een omzettingsmodel en krijgt een reeks getallen terug, vaak honderden posities lang. Geen enkele positie heeft voor mensen een betekenis op zichzelf; wat telt is de afstand tussen reeksen. Twee alinea's over betaling staan elkaar nabij, hoe verschillend hun formulering ook is. Zo ontstaat een kaart van betekenis waarin je niet op letters zoekt maar op onderwerp.
Dat maakt embeddings het smeermiddel onder moderne zoekfuncties. Een inkomende vraag wordt op dezelfde manier omgezet, waarna de dichtstbijzijnde stukken uit je documenten worden opgehaald. Dat is de zoekstap van RAG. In klantenservice groepeert het gelijksoortige tickets; in een drive vindt het documenten terug waarvan je de titel vergeten bent maar de inhoud herinnert. Overal waar betekenis telt in plaats van exacte woorden, zit zo'n reeks onder.
Twee beperkingen horen erbij. De omzetting is geen anonimisering: wie de originele tekst heeft, kan gelezen worden, en de reeks zelf onthoudt geen personen maar scheidt ze ook niet af. En de kwaliteit verschilt per omzettingsmodel, vooral bij Nederlandse tekst en jargon. Een model dat vaktaal slecht kent, legt ook vaktaal op de verkeerde plek op de kaart.
De moeite waard zijn ze zodra zoekgedrag onvoorspelbaar wordt: gebruikers die hun eigen woorden gebruiken, documenten die over hetzelfde gaan onder verschillende namen, vragen waarvoor letterlijk zoeken niets teruggeeft. Ook voor het ordenen van grote hoeveelheden tekst (duplicaten vinden, verwante zaken samennemen) zijn ze het meest bruikbare gereedschap dat er nu is.
Niet nodig zijn ze bij exacte gegevens: nummers, datums en statussen zoek je gewoon op, en een embedding toevoegen maakt dat niet beter. Let ook op de grens van de omzetting zelf. Een reeks vat de inhoud samen, maar rekent niet, redeneert niet en garandeert niets. Voor die taken heb je het taalmodel nodig, niet de kaart van betekenis.
We kiezen het omzettingsmodel bewust, getest op jouw soort tekst: Nederlands, jargon, korte fragmenten. De knipgrootte kiezen we samen met de zoekstrategie, want een te klein stukje verliest context en een te groot stukje mist. En we testen met echte vragen of de juiste stukken terugkomen. Als dat niet zo is, ligt de oplossing zelden in een ander merk maar meestal in knippen, filteren of combineren met letterlijk zoeken.
Nee, lezen niet: het is een reeks getallen zonder woorden. Terughalen is een andere vraag. Een embedding is geen versleuteling, en een gemotiveerde partij kan uit een reeks benaderen welke tekst erin zit. Behandel vectoren dus als vertrouwelijk materiaal, met dezelfde rechten als het origineel waarvan ze zijn afgeleid. Anoniem worden gegevens pas door bewust aanpassen van de tekst vóór de omzetting, niet door de omzetting zelf.
Doorgaans wel, maar niet elk omzettingsmodel is er even goed in, en juist jargon maakt het verschil zichtbaar. Een model dat branche-uitdrukkingen slecht kent, zet specialistische tekst op de verkeerde plek van de betekeniskaart, en dan kom je bij het zoeken dingen mis. Daarom testen we voor elk project met eigen voorbeelden hoe het gekozen model presteert op jouw woorden. Is dat niet sterk genoeg, dan helpt combineren met letterlijk zoeken vaak beter dan een ander merk.
Ja, per gewijzigd stuk wel: de reeks hoort bij de tekst zoals die op dat moment was. Een kleine aanpassing verandert de reeks weinig, maar een herschreven alinea kan beter opnieuw worden omgezet, anders zoekt een gebruiker nog langs de oude inhoud. In een werkende toepassing verloopt dat automatisch: document wijzigt, stukken opnieuw knippen, vectoren verversen. Precies dat onderhoud is de reden dat we elk zoekproject óók als onderhoudsopgave ontwerpen.
Als je gegevens al netjes gestructureerd zijn (nummers, datums, categorieën) of als de verzameling klein genoeg is om simpelweg mee te sturen met elke vraag. Ook een zoekfunctie op exacte woorden kan prima volstaan als gebruikers de vaste terminologie van de organisatie kennen en gebruiken. We adviseren liever geen laag dan een overbodige laag: de bouw is niet het probleem, het doorlopende onderhoud van knippen en verversen wel. Dat moet het terugverdienen waard zijn.
EIGHTY8