Na tokenisatie is elk token slechts een getal - een index in een vocabulaire. Maar index 4.821 vertelt het model niets over betekenis. Hoe weet AI dat "koning" en "koningin" verwant zijn, of dat "bank" zowel een zitmeubel als een financiële instelling kan betekenen? Het antwoord is embeddings.
De naïeve aanpak representeert elk woord als een vector met één 1 en duizenden 0-en. "Kat" zou [0, 0, 1, 0, ..., 0] kunnen zijn en "hond" [0, 0, 0, 1, ..., 0].
Dit heeft twee fatale gebreken:
Een embedding koppelt elk token aan een dichte vector van bijvoorbeeld 256 of 768 dimensies. In tegenstelling tot one-hot vectoren worden deze dimensies geleerd tijdens het trainen en coderen ze betekenis.
Woorden die in vergelijkbare contexten worden gebruikt, komen dicht bij elkaar in deze ruimte. "Puppy" landt dicht bij "kitten." "Londen" landt dicht bij "Parijs." De meetkunde van de ruimte is de betekenis.
Het Word2Vec-artikel uit 2013 toonde iets opmerkelijks aan. Getraind op grote tekstcorpora vertonen de geleerde vectoren rekenkundige relaties:
vector("koning") − vector("man") + vector("vrouw") ≈ vector("koningin")
De richting van "man" naar "vrouw" vangt het concept van geslacht. Het toevoegen ervan aan "koning" leidt naar "koningin." Dit is niet geprogrammeerd - het ontstaat uit patronen in taal.
Sign in to join the discussion
Andere voorbeelden: Parijs − Frankrijk + Italië ≈ Rome, groter − groot + klein ≈ kleiner.
Word2Vec werd in 2013 gecreëerd door Tomáš Mikolov bij Google. Het artikel heeft meer dan 40.000 citaties en wordt beschouwd als een van de meest invloedrijke NLP-artikelen ooit. Het toonde aan dat eenvoudige neurale netwerken die op ruwe tekst werden getraind, verbazingwekkende semantische relaties konden leren.
Moderne modellen gebruiken verschillende embeddingsgroottes:
| Model | Embeddingdimensies | |-------|-------------------| | Word2Vec | 100–300 | | BERT | 768 | | GPT-3 | 12.288 | | OpenAI text-embedding-3-large | 3.072 |
Meer dimensies vangen fijnere onderscheidingen, maar vereisen meer geheugen en rekenkracht. Zie het als het beschrijven van een persoon: 3 dimensies (lengte, gewicht, leeftijd) geven een ruwe schets; 768 dimensies schetsen een gedetailleerd portret.
Wat demonstreert de beroemde vergelijking 'koning − man + vrouw ≈ koningin'?
Woordembeddings representeren individuele woorden, maar we moeten vaak hele zinnen of documenten vergelijken. Zinsembeddings (van modellen zoals Sentence-BERT of de embedding-API van OpenAI) comprimeren een hele passage tot één enkele vector.
"Hoe reset ik mijn wachtwoord?" en "Ik ben mijn inloggegevens vergeten" zouden zeer vergelijkbare zinsembeddings hebben, ook al delen ze bijna geen woorden. De embedding vangt de intentie, niet alleen het vocabulaire.
Om twee embeddings te vergelijken, gebruiken we cosinus-gelijkenis - de cosinus van de hoek tussen twee vectoren. Het varieert van −1 (tegenovergesteld) tot +1 (identieke richting).
Cosinus-gelijkenis negeert de grootte van de vector en richt zich puur op de richting - en daar zit de betekenis.
"Liefde" en "haat" zijn tegengestelden in betekenis, maar hebben mogelijk een matige cosinus-gelijkenis omdat ze in vergelijkbare contexten voorkomen (emoties, relaties). Wat zegt dit over de beperkingen van embeddings die puur op woordco-occurrentie zijn getraind?
Een vectordatabase slaat miljoenen embeddings op en haalt de meest vergelijkbare razendsnel op. In plaats van zoeken op trefwoorden ("vind documenten met 'machine learning'"), zoek je op betekenis ("vind documenten over AI-onderwijs").
Populaire vectordatabases zijn onder andere:
Deze databases gebruiken algoritmen zoals HNSW (Hierarchical Navigable Small World) om miljarden vectoren in milliseconden te doorzoeken.
Welk voordeel heeft vectorzoeken ten opzichte van traditioneel zoeken op trefwoorden?
RAG is een van de belangrijkste patronen in moderne AI. Het combineert vectorzoeken met taalmodellen:
RAG stelt taalmodellen in staat om vragen te beantwoorden over jouw specifieke data - bedrijfsdocumenten, productcatalogi, onderzoeksartikelen - zonder hertraining. Het vermindert hallucinaties drastisch omdat het model echte bronnen heeft om naar te verwijzen.
Welke rol speelt de vectordatabase in een RAG-systeem?
Embeddings vormen de basis van talloze systemen in de praktijk:
Spotify gebruikt audio-embeddings om nummers aan te bevelen. Elk nummer wordt geëmbed op basis van zijn akoestische eigenschappen, en aanbevelingen komen van het vinden van nabijgelegen vectoren - nummers die "vergelijkbaar klinken" in de embeddingsruimte.
Als je elk product in een webwinkel zou embedden, hoe zou je dan een aanbevelingssysteem kunnen bouwen dat zegt "klanten die dit item bekeken, vonden misschien ook..." zonder afhankelijk te zijn van aankoopgeschiedenis?