Een vector-embedding is een rij getallen die de betekenis van iets vastlegt, een woord, een zin, een afbeelding, in een vorm die een computer kan vergelijken. Twee dingen met een vergelijkbare betekenis krijgen vergelijkbare getallen, dus nabijheid in deze getallenruimte staat voor nabijheid in betekenis.

Stel je een kaart voor waarop elk restaurant op keuken staat. Italiaanse zaken clusteren in de ene hoek, sushibars in de andere, en een nieuwe zaak landt naast de zaken waar hij op lijkt. Een embedding doet dat met betekenis in plaats van met geografie: ‘dokter’ en ‘arts’ landen dicht bij elkaar, terwijl ‘banaan’ ver weg ligt. Die afstand maakt semantisch zoeken mogelijk, en je meet hem met cosinusgelijkenis, de hoek tussen twee van die getallenrijen.

Een echte kaart heeft maar twee richtingen, noord en oost. Een embedding heeft er honderden, soms meer dan duizend. Elk daarvan vangt een andere nuance van betekenis, veel meer dan een mens kan benoemen. Door die extra ruimte kan een embedding ‘oever van de rivier’ van ‘bank op de hoek’ onderscheiden, ook al lijken de woorden op elkaar. Het model leerde uit miljarden zinnen dat het ene bij water hoort en het andere bij geld, en zette ze in verschillende delen van de ruimte.

De getallen zelf komen uit een getraind model en worden opgeslagen zodat ze snel doorzoekbaar zijn, vaak met duizenden of miljoenen tegelijk. Los van elkaar zien ze er betekenisloos uit. Hun waarde zit volledig in hoe ze ten opzichte van elkaar liggen. Wissel je van model, dan veranderen de getallen mee, dus je moet je zoekopdracht embedden met hetzelfde model als je data.

Bij TopDevs gebruiken we vector-embeddings om zoekfuncties en AI-assistenten te bouwen die begrijpen wat een gebruiker bedoelt, niet alleen de exacte woorden die hij typte. Daardoor voelen de antwoorden een stuk relevanter.