Dit artikel is gebaseerd op de officiële documentatie gepubliceerd door OpenAI, op teamfeedback verzameld in discussies in de OpenAI-ontwikkelaarsgemeenschap, en op het gedrag dat is geverifieerd in de Aurabase-code, die deze driedimensionale klassen standaard naar drie verschillende vectorkolommen stuurt. Elke externe figuur is gedateerd en afkomstig; voor de methodologie die we toepassen op onze eigen metingen, zie onze benchmarkmethodologiepijler.
- 1536-dimensies blijven voor de meeste gevallen de meest evenwichtige keuze: native text-embedding-3-small, of afgeknotte text-embedding-3-large, zonder af te wijken van de native HNSW-ondersteuning van pgvector.
- 3072 dimensies (text-embedding-3-large) biedt de hoogste MTEB-score gepubliceerd door OpenAI (64,6% versus 62,3%), maar overschrijdt de dimensielimiet van 2000 van pgvector's
vectortype: de HNSW-index vereist een cast naarhalfvec. - Het afkappen van een inbedding via de OpenAI
dimensions-parameter (Matryoshka-techniek) vermindert de opslagruimte en versnelt het zoeken, maar verlaagt de prijs niet: dit hangt af van het opgevraagde model, niet van de grootte van de geretourneerde vector. - Dankzij
halfvec-opslag (2 bytes per dimensie) neemt een 3072-dimensionale vector dezelfde ruwe schijfruimte in beslag bij Aurabase als een 1536-vector in de klassiekevector(4 bytes per dimensie): ongeveer 6 KB. - Aurabase ondersteunt native exact 3 dimensieklassen, 768, 1536 en 3072, elk in een eigen kolom (aangevinkt in
aura-ai/src/embeddings/mod.rs): geen vrij dimensieveld.
768, 1536 of 3072: wat elk niveau echt verandert
Het is duidelijk dat de keuze tussen text-embedding-3-small en text-embedding-3-large eerst neerkomt op het kiezen tussen 1536 en 3072 native dimensies, voordat er zelfs maar over truncatie wordt gesproken. De onderstaande tabel vat de verifieerbare feiten samen op de drie niveaus die pgvector van nature herkent aan de indexzijde, en die Aurabase-route.
| Criterium | 768 afmetingen | 1536 afmetingen | 3072 afmetingen |
|---|---|---|---|
| Gerelateerde model(len) | OpenAI-truncatie, of een verouderd/open source (native) model | tekst-inbedding-3-klein (native) of afgekapt 3-groot | tekst-embedding-3-groot (native) |
| Gemiddelde MTEB-score | niet native uitgebracht door OpenAI op dit formaat | 62,3 % | 64,6 % |
| Indicatieve OpenAI-prijs / 1M-tokens | hangt af van het gevraagde model, niet van de maat | $ 0,02 (klein) of $ 0,13 (groot afgeknot) | $ 0,13 (tekst-insluiting-3-groot) |
| Bruto opgeslagen gewicht / vector | 3 KB (float32) | 6 KB (float32) | 12 KB (vector) of 6 KB (halfvec, Aurabase) |
| Native HNSW pgvector-index | ja | ja | nee: gegoten halfvec vereist (>2000 dimmen) |
| Aurabase-kolom (geverifieerde code) | embedding_768 | inbedding_1536 | inbedding_3072 |
Bronnen: OpenAI, officiële blog “Nieuwe embeddingmodellen en API-updates”, 25 januari 2024 (MTEB-scores en lanceringsprijzen, controleer voor gebruik de huidige prijspagina); aura-ai/src/embeddings/mod.rs, Aurabase (kolommen en indexondersteuning, geverifieerd op 24 augustus 2026).
De impact op opslag: de berekening die alles verandert
Een inbedding wordt opgeslagen als een array van drijvende-kommagetallen. In pgvector codeert het klassieke vector-type elke dimensie op 4 bytes (float32): 768 dimensies wegen daarom ongeveer 3 KB aan ruwe gegevens per vector, 1536 dimensies ongeveer 6 KB en 3072 dimensies ongeveer 12 KB, zelfs voordat de pgvector-header en de Postgres-pagina overhead worden geteld.
Dit is waar het halfvec type pgvector in beeld komt, dat elke dimensie codeert in 2 bytes (float16) in plaats van 4. Een 3072-dimensionale vector opgeslagen in halfvec weegt ongeveer 6 KB: precies het gewicht van een 1536-dimensionale vector opgeslagen in de klassieke vector.
Direct en niet-intuïtief gevolg: bij Aurabase verdubbelt het gaan van 1536 naar 3072 dimensies niet de werkelijke opslag op schijf, aangezien de kolom embedding_3072 wordt opgevraagd via een halfveccast. De echte extra kosten van 3072-dimensies zijn daarom niet in de eerste plaats de schijf: het zijn de prijs van het bijbehorende OpenAI-model en de uitvoer van native indexondersteuning van het type vector, zoals beschreven in de volgende sectie.
Waarom 3072 dimensies het indextype veranderen onder pgvector
Met het type pgvector vector is het niet mogelijk een HNSW- of IVFFlat-index te bouwen die groter is dan 2000 dimensies. 3072-dimensies overschrijdt daarom deze limiet: geen enkele vectorzoekopdracht op een vector(3072)-kolom kan vertrouwen op een geschatte index, deze valt terug op een volledige sequentiële scan, onbruikbaar op de schaal van een RAG-corpus in productie.
De Aurabase-code behandelt dit geval expliciet: de kolom embedding_3072 wordt bij elke invoeg- en zoekopdracht omgezet naar halfvec(3072), een type dat pgvector tot 4000 dimensies kan indexeren. Kolommen 768 en 1536 blijven native vector, ongecast, omdat ze de limiet niet naderen.
Dit detail verklaart ook waarom een inbeddingsdimensie die niet wordt vermeld in [768, 1536, 3072] expliciet mislukt aan de Aurabase-kant, in plaats van te worden geaccepteerd en vervolgens slecht geïndexeerd: de kolomnaam komt altijd van een vaste toelatingslijst, nooit van een gratis waarde die door de klant is verzonden. Om dieper in te gaan op het bouwen van een HNSW-index op Postgres buiten dit specifieke geval, zie ons artikel HNSW-index en Postgres vector zoeken.
De dimensie verkleinen zonder alles te verliezen: de Matryoshka-truncatie van OpenAI
Vanaf januari 2024 accepteert de Embeddings API van OpenAI een parameter dimensions die de geretourneerde vector verkort zonder opnieuw een ander model aan te roepen. De techniek heet Matryoshka Representation Learning: het model is getraind om nuttige informatie in de eerste dimensies van de vector te concentreren, zodat een afknotting geleidelijk aan nauwkeurigheid verliest in plaats van abrupt.
OpenAI illustreert de effectiviteit van deze techniek met een specifiek voorbeeld in de aankondiging: text-embedding-3-large, ingekort tot slechts 256 dimensies, overtreft nog steeds de MTEB-score van de oude text-embedding-ada-002, gebruikt op volledige grootte van 1536 dimensies (bron: OpenAI, officiële blog, 25 januari 2024). Een vector die 12 keer kleiner is en beter presteert dan een volledige vector, op deze specifieke benchmark.
Belangrijk punt, en vaak verkeerd begrepen: afkappen verlaagt de aangerekende prijs niet. OpenAI brengt kosten in rekening op basis van het opgevraagde model, niet op basis van de grootte van de geretourneerde vector, aangezien de werkelijke kosten de berekening zijn die op de invoertekst wordt uitgevoerd. Het opvragen van 1536 dimensies uit text-embedding-3-large kost daarom dezelfde prijs als de 3072 oorspronkelijke dimensies (bron: OpenAI, officiële blog, 25 januari 2024); alleen de opslag- en zoeksnelheid veranderen.
Dit is precies de standaardkeuze van Aurabase, geverifieerd in config/mod.rs: het standaard geconfigureerde model is text-embedding-3-large, maar de standaard geconfigureerde uitvoerdimensie is 1536, niet 3072. De service betaalt daarom voor de weergave van het brede model, afgekapt om op een indexeerbare vector-kolom in native HNSW te blijven, zonder de halfvec-cast die vereist is naar 3072.
Welke dimensie u moet kiezen op basis van uw gebruiksscenario
1536-dimensies blijven het redelijke uitgangspunt voor de meeste RAG- of semantische zoekprojecten: de MTEB-score van text-embedding-3-small (62,3%) blijft dicht bij die van het grote model, de opslag blijft licht en de klassieke vector-type pgvector-indexen in HNSW zonder enige specifieke configuratie.
3072-dimensies zijn gerechtvaardigd als het corpus dubbelzinnig of technisch is, waarbij de kwaliteitskloof tussen 62,3% en 64,6% zich vertaalt in zichtbaar betere zoekresultaten op uw eigen zoekopdrachten, niet op de algemene OpenAI-benchmark. Verschillende teamfeedback die is opgenomen in de discussies in de OpenAI-ontwikkelaarsgemeenschap wijzen in deze richting: de winst van 3072 dimensies wordt van geval tot geval gemeten en kan niet worden aangenomen.
768-dimensies zijn vooral geschikt wanneer volume voorrang heeft op nuance: een groot corpus waarbij het opslag- of berekeningsbudget de echte beperking is, of het gebruik van een oud inbeddingsmodel dat al in 768 native dimensies aanwezig is.
Stel de dimensie pas in nadat u de zoekkwaliteit hebt gemeten op een representatieve steekproef van uw eigen corpus, en niet alleen op de algemene MTEB-score die door OpenAI is gepubliceerd. De MTEB voert gemiddeld tientallen heterogene taken uit; uw RAG-corpus is er slechts één.
Deze dimensiekeuze maakt deel uit van een grotere RAG-stack, insluitingen, HNSW-index, hybride zoeken, die onze pagina Native AIdocumenten.
Wat ons het vaakst wordt gevraagd
De juiste keuze is niet de beste, maar de best gemeten
De afmetingen 768, 1536 en 3072 zijn niet verdeeld over één enkele as. 3072 wint in MTEB-score gepubliceerd door OpenAI, maar verlaat de eigen HNSW-ondersteuning van pgvector en betaalt de prijs van het grote model, ongeacht de uiteindelijk gevraagde dimensie. 1536 blijft het meest voorkomende standaardsaldo, ook bij Aurabase. 768 dient gevallen waarin volume voorrang heeft op nuance.
De parameter dimensions van OpenAI verandert de te stellen vraag: het is niet langer "welk model ik moet kiezen", maar "welke inkorting moet ik accepteren, voor welke winst wordt gemeten op mijn corpus". Voordat u een keuze maakt tijdens de productie, test u de zoekkwaliteit op een echt monster, en niet alleen op een algemene benchmark. Onze gids RAG-pijplijn met pgvector beschrijft de volledige installatie, van opname tot hybride zoeken.