Een embedding in AI is een numerieke vector, oftewel een lijst van kommagetallen, die tekst of andere gegevens weergeeft in een wiskundige ruimte waarin vergelijkbare betekenissen dicht bij elkaar liggen. Machinelearningmodellen gebruiken vectorembeddings om de verwantschap tussen concepten te meten, semantisch zoeken mogelijk te maken en relevante context op te halen in RAG-systemen.
Wanneer ik embeddings uitleg aan engineers die hun eerste zoekpipeline bouwen, vraag ik hen zich een kaart voor te stellen waarop onderwerpen de plaats van geografie innemen. Zoeken op trefwoorden controleert of twee tekenreeksen exact dezelfde letters delen. Dat werkt niet als het ene document hond zegt en het andere puppy. Een vectorembedding overbrugt die kloof door betekenis om te zetten in coördinaten, zodat software ideeën met eenvoudige meetkunde kan vergelijken.
Hoe geeft een vectorembedding betekenis weer?
Een vectorembedding geeft betekenis weer door complexe invoer, zoals woorden, zinnen of afbeeldingen, om te zetten in coördinaten binnen een meerdimensionale embeddingruimte. Volgens de AI-definitiewoordenlijst van Stanford HAI plaatsen embeddings vergelijkbare elementen dicht bij elkaar in een wiskundige ruimte. Woorden als hond en puppy krijgen daardoor vectoren dicht bij elkaar, terwijl hond en toast ver uit elkaar liggen.
In de embeddinggids van OpenAI wordt een embedding gedefinieerd als een vector van kommagetallen waarvan de afstand de verwantschap tussen tekstreeksen meet. Een kleine afstand tussen twee vectoren wijst op een sterke verwantschap en een grote afstand op een zwakke verwantschap. IBM Think beschrijft hetzelfde principe voor verschillende gegevenstypen: vectorembeddings zetten niet-wiskundige invoer zoals tekst of afbeeldingen om in numerieke arrays die machinelearningmodellen kunnen verwerken, zodat meer vergelijkbare objecten uit de echte wereld meer vergelijkbare vectoren krijgen.
De Machine Learning Crash Course van Google noemt drie praktische eigenschappen van embeddingruimten die bepalen hoe engineers ermee werken:
- Projectie naar minder dimensies: Modellen projecteren hoogdimensionale ruwe invoer vaak naar een dichtere embeddingruimte met minder dimensies, waarin afstand wiskundig als relatieve gelijkenis kan worden berekend.
- Ondoorzichtige afzonderlijke coördinaten: Afzonderlijke dimensies in een aangeleerde embedding zijn zelden te interpreteren als duidelijke, handmatig benoemde concepten. De betekenis zit in de gecombineerde positie en richting van alle getallen in de array.
- Taakspecificiteit: Embeddings worden meestal voor specifieke taken getraind. Een vectorruimte die is geoptimaliseerd voor semantisch zoeken in tekst verschilt daarom van een ruimte die is getraind voor productaanbevelingen.
Omdat vectoren verwantschap coderen in plaats van exacte spelling, noemt OpenAI zes veelvoorkomende productietaken voor embeddings: zoeken (resultaten rangschikken op relevantie voor de zoekopdracht), clustering, aanbevelingen, anomaliedetectie, diversiteitsmeting en classificatie (een tekenreeks aan het dichtstbijzijnde label koppelen).
Woord-, zins- en documentembeddings uitgelegd
Woord-, zins- en documentembeddings verschillen in de hoeveelheid tekst die een model tot één vector comprimeert. De juiste granulariteit bepaalt of je systeem afzonderlijke termen, korte gebruikersvragen of passages van meerdere alinea’s volgt.
Woordembeddings
Een woordembedding is een dichte vector die aan één woord of AI-token wordt toegekend. Statische woordembeddings zoals word2vec, dat Tomas Mikolov en collega’s in 2013 introduceerden, kennen aan elk woord in een woordenschat één vaste globale vector toe. Zoals de Machine Learning Crash Course van Google uitlegt, gaan modellen die zijn getraind om de context rond een woord te voorspellen ervan uit dat woorden in vergelijkbare contexten verwante betekenissen hebben.
Statische woordembeddings hebben een bekende beperking: één vector moet alle betekenissen van een woord tegelijk weergeven, zoals bank als financiële instelling en bank als zitmeubel. Google merkt ook op, onder verwijzing naar Deep Learning with Python van François Chollet, dat statische woordembeddings vaak aantallen dimensies zoals 256, 512 of 1024 gebruikten.
Zinsembeddings
Een zinsembedding zet een volledige woordgroep of zin om in één vector in plaats van afzonderlijke vectoren voor elk woord te produceren. IBM merkt op dat zinsembeddings de gecombineerde semantische betekenis van een volledige woordgroep vastleggen en vaak worden gebruikt om gebruikersvragen te coderen in zoek- en vraag-antwoordsystemen. Door de hele zin te coderen kun je tekenreeksen onderscheiden die dezelfde woorden in een andere volgorde bevatten.
Documentembeddings
Een documentembedding geeft een langere passage, een artikelonderdeel of een volledig documentchunk weer als één vector. Een eenvoudige basisaanpak combineert woordvectoren door het gemiddelde te nemen, al gaan daarbij vaak structuur en nuance verloren. Speciaal ontwikkelde tekstembeddingmodellen coderen de hele passage in één stap. In echte zoeksystemen comprimeren teams zelden een heel boek tot één vector; ze splitsen lange bestanden in kleinere chunks en genereren per chunk één embedding.
| Type embedding | Granulariteit van invoer | Typische vectoreenheid | Belangrijkste rol en beperking |
|---|---|---|---|
| Woordembedding | Eén woord of token | Eén vector per woordenschatelement | Legt gelijkenis tussen termen vast; statische modellen zoals word2vec voegen alle woordbetekenissen samen in één vector |
| Zinsembedding | Woordgroep of enkele zin | Eén vector per vraag of regel | Legt intentie op woordgroepniveau vast; vaak gebruikt voor zoekopdrachten en vraagbeantwoording |
| Documentembedding | Passage of documentchunk | Eén vector per chunk of document | Ondersteunt zoeken in een corpus; lange documenten moeten meestal vóór het maken van embeddings worden opgesplitst |
Wat betekenen embeddingdimensies?
Embeddingdimensies meten de lengte van een vector: het aantal kommagetallen dat een model voor elke invoer uitvoert. Grotere vectoren hebben meer capaciteit om subtiele semantische verschillen te coderen, terwijl kleinere vectoren het geheugengebruik, de indexgrootte en de rekenkracht voor vergelijkingen verminderen.
De embeddingmodellen van de derde generatie van OpenAI illustreren deze afweging. Volgens de officiële documentatie van OpenAI zijn de standaarduitvoerlengtes op 14 november 2026 1536 dimensies voor text-embedding-3-small en 3072 dimensies voor text-embedding-3-large. Beide modellen accepteren de optionele parameter dimensions in het API-verzoek, waarmee ontwikkelaars een kortere vector kunnen aanvragen zonder dat de embedding zijn vermogen om concepten weer te geven verliest.
OpenAI heeft beide modellen van de derde generatie zo getraind dat getallen aan het einde netjes kunnen worden verwijderd. Volgens de embeddinggids van OpenAI presteert text-embedding-3-large ingekort tot 256 dimensies op 14 november 2026 nog steeds beter op de MTEB-benchmark dan een niet-ingekorte text-embedding-ada-002-embedding van 1536 dimensies. Als een vectordatabase een harde bovengrens van 1024 dimensies oplegt, kunnen ontwikkelaars volgens OpenAI text-embedding-3-large nog steeds aanroepen met dimensions ingesteld op 1024. Ze ruilen dan een beetje nauwkeurigheid in voor compatibiliteit en minder opslagruimte.
Ontwikkelaars die vectoren na ontvangst via een API handmatig inkorten, moeten daarna L2-lengtenormalisatie toepassen. De parameter dimensions direct bij het maken van de embedding meegeven voorkomt handmatige nabewerking en is de door OpenAI aanbevolen werkwijze.
Hoe vergelijkt cosinusgelijkenis embeddings?
Cosinusgelijkenis vergelijkt twee embeddingvectoren door de cosinus van de hoek ertussen te meten. Omdat cosinusgelijkenis de richting in de embeddingruimte beoordeelt in plaats van de ruwe vectorgrootte, scoren twee passages die in dezelfde semantische richting wijzen hoog, ook als hun lengtes verschillen.
Voor algemene vectoren loopt cosinusgelijkenis van -1 tot 1:
- 1: Beide vectoren wijzen in exact dezelfde richting, wat maximale gelijkenis aangeeft.
- 0: Beide vectoren staan loodrecht op elkaar, wat ongecorreleerde betekenissen aangeeft.
- -1: Beide vectoren wijzen in tegengestelde richtingen.
De euclidische afstand biedt een alternatieve maat door de afstand in een rechte lijn tussen twee punten in de embeddingruimte te meten. Op de vraag welke afstandsfunctie ontwikkelaars moeten kiezen, beveelt de embedding-FAQ van OpenAI expliciet cosinusgelijkenis aan, met de kanttekening dat de keuze van de maat bij OpenAI-vectoren meestal weinig verschil maakt. Elke embedding die de API van OpenAI teruggeeft is al genormaliseerd tot lengte 1. Daardoor is cosinusgelijkenis gelijk aan het inwendig product en leveren cosinusgelijkenis en euclidische afstand identieke zoekrangschikkingen op.
Hoe worden embeddings in RAG gebruikt?
Embeddings maken retrieval-augmented generation (RAG) mogelijk door de vraag van een gebruiker te vergelijken met opgeslagen documentchunks voordat een taalmodel een antwoord schrijft. In plaats van alleen te vertrouwen op feiten die tijdens voortraining zijn onthouden, doorzoekt een RAG-pipeline privé- of actuele tekstverzamelingen met behulp van vectorgelijkenis.
In overeenstemming met de richtlijnen van OpenAI voor vraagbeantwoording en tekstzoekopdrachten volgt een standaard RAG-pipeline vijf stappen:
- Verdeel het corpus in chunks: Splits lange brondocumenten op in kleinere passages, zodat elke vector één gericht idee weergeeft. Specifieke splitsingsstrategieën staan in onze gids over documenten opdelen voor RAG.
- Maak embeddings van chunks en indexeer ze: Stuur elke chunk naar een embeddingmodel en sla de resulterende vectoren samen met hun brontekst op. OpenAI raadt aan vectoren in een vectordatabase op te slaan om snel in grote verzamelingen te zoeken.
- Maak een embedding van de gebruikersvraag: Haal de binnenkomende vraag door exact hetzelfde embeddingmodel, zodat de vraag in dezelfde wiskundige ruimte terechtkomt als de geïndexeerde chunks.
- Haal de dichtstbijzijnde buren op: Bereken gelijkenisscores, zoals cosinusgelijkenis of het inwendig product van genormaliseerde vectoren, en haal de best passende chunks op.
- Geef context aan het model: Voeg de opgehaalde tekstchunks toe aan de prompt van het taalmodel, zodat het een op je bronmateriaal gebaseerd antwoord kan genereren.
Chunkgrootte en ophaaldrempels variëren sterk afhankelijk van documentstructuur en vraagpatronen. Teams moeten splitsingsstrategieën daarom op hun daadwerkelijke corpus testen in plaats van op één universele chunkgrootte te vertrouwen.
OpenAI-embeddingmodellen, limieten en prijzen
De embedding-API van OpenAI biedt op 14 november 2026 drie belangrijke tekstmodellen met vaste tokenlimieten en prijzen per token. Ontwikkelaars genereren vectoren door een POST https://api.openai.com/v1/embeddings-verzoek met input en model te sturen, met optioneel dimensions (bij modellen van de derde generatie) en encoding_format (standaard float, of base64).
Voor alle drie genoemde OpenAI-embeddingmodellen gelden dezelfde verzoeklimieten: maximaal 8.192 tokens per afzonderlijke invoer, maximaal 2.048 items per invoerarray en in totaal maximaal 300.000 tokens over alle invoer in één API-aanroep. Lege tekenreeksen worden geweigerd. Om tokens lokaal te tellen vóór verzending adviseert OpenAI de codering cl100k_base met tiktoken. Alle drie modellen ondersteunen ook de Batch API van OpenAI.
| Model | Standaarddimensies | Maximaal aantal invoertokens | Prijs per 1 miljoen tokens (14 november 2026) | Geschat aantal pagina’s per dollar (~800 tokens/pagina) | Door OpenAI gepubliceerde MTEB-score |
|---|---|---|---|---|---|
text-embedding-3-small |
1536 | 8.192 | $0.02 | 62.500 | 62.3% |
text-embedding-3-large |
3072 | 8.192 | $0.13 | 9.615 | 64.6% |
text-embedding-ada-002 |
1536 | 8.192 | $0.10 | 12.500 | 61.0% |
Deze cijfers komen rechtstreeks van de prijspagina van OpenAI en uit de embeddinggids per 14 november 2026. OpenAI beschrijft text-embedding-3-small als een verbeterde opvolger van text-embedding-ada-002 en positioneert text-embedding-3-large als zijn meest capabele model voor zowel Engelstalige als niet-Engelstalige taken. Beschouw de MTEB-percentages hierboven uitsluitend als benchmarks die OpenAI op deze datum zelf in zijn documentatie heeft gepubliceerd, niet als een actuele, onafhankelijke ranglijst van alle embeddingaanbieders in de branche.
FAQ
Wat is het verschil tussen een vectorembedding en een token?
Een token is een stukje invoertekst, zoals een woord of deel van een woord, dat een model leest en waarvoor het kosten berekent. Een vectorembedding is de dichte array van kommagetallen die het model uitvoert om de betekenis van één of meer tokens weer te geven. Je kunt maximaal 8.192 tokens aan een OpenAI-embeddingmodel doorgeven om één vector te ontvangen.
Vermindert de dimensions-parameter van OpenAI de nauwkeurigheid van embeddings?
Een vector inkorten met de parameter dimensions ruilt een beetje nauwkeurigheid in voor lagere opslag- en rekenkosten. OpenAI stelt dat zijn modellen van de derde generatie zo zijn getraind dat getallen aan het einde kunnen worden verwijderd met behoud van de representatie van concepten. Op 14 november 2026 meldt OpenAI dat een text-embedding-3-large-vector van 256 dimensies op MTEB nog steeds beter presteert dan een niet-ingekorte text-embedding-ada-002-vector van 1536 dimensies.
Moet ik cosinusgelijkenis of euclidische afstand gebruiken voor OpenAI-embeddings?
Cosinusgelijkenis is de door OpenAI aanbevolen maat, hoewel beide functies identieke rangschikkingen geven voor OpenAI-vectoren. Omdat OpenAI-embeddings zijn genormaliseerd tot lengte 1, is cosinusgelijkenis wiskundig gelijk aan het inwendig product en behoudt de euclidische afstand exact dezelfde volgorde. Voor algemene niet-genormaliseerde vectoren uit andere bronnen isoleert cosinusgelijkenis de hoek in plaats van de grootte.
Kennen embeddingmodellen recente gebeurtenissen?
De embeddingmodellen van de derde generatie van OpenAI, text-embedding-3-small en text-embedding-3-large, hebben geen kennis van gebeurtenissen na september 2021. OpenAI merkt in zijn embedding-FAQ op dat deze kennisgrens embeddings doorgaans minder beperkt dan tekstgeneratiemodellen, hoewel bepaalde domeinspecifieke vragen of vragen over de periode na die grens nog steeds minder goede overeenkomsten kunnen opleveren.
Van wie zijn de embeddings die via de OpenAI API worden gegenereerd?
Volgens de officiële FAQ van OpenAI zijn klanten eigenaar van zowel de invoer die zij versturen als de uitvoervectoren die OpenAI-modellen genereren, inclusief embeddings. OpenAI stelt dat dit eigendom geldt voor zijn embedding-eindpunten, terwijl gebruikers verantwoordelijk blijven om ervoor te zorgen dat hun gebruik van de API voldoet aan de toepasselijke wetgeving.



