PRODSoeverein Europees BaaS-platformOpen Dashboard →

Native AI · 7 min gelezen

Inbeddingsgrootte: afmetingen 768, 1536 of 3072?

Affane Daylami · Fondateur · 3 april 2026

Terug naar blog

De keuze tussen de afmetingen 768, 1536 en 3072 is geen cosmetische aanpassing. Het bepaalt het opslagvolume van uw vectordatabase, het type index dat kan worden gebruikt en de prijs die voor elke API-aanroep wordt betaald. OpenAI documenteert zelf de kwaliteitskloof tussen zijn twee huidige modellen: text-embedding-3-small, in 1536 native dimensies, bereikte 62,3% op de MTEB-benchmark, vergeleken met 64,6% voor text-embedding-3-large in 3072 native dimensies. Een echte winst, maar wel een die elders wordt betaald dan je zou denken.

Deze Engelse tekst is automatisch gegenereerd op basis van het Franse origineel en is nog niet beoordeeld.
Deze pagina is automatisch vertaald. De Engelse versie is gezaghebbend.

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.

De essentie
  • 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 vector type: de HNSW-index vereist een cast naar halfvec.
  • 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 klassieke vector (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.
#
Overzicht

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.

Criterium768 afmetingen1536 afmetingen3072 afmetingen
Gerelateerde model(len)OpenAI-truncatie, of een verouderd/open source (native) modeltekst-inbedding-3-klein (native) of afgekapt 3-groottekst-embedding-3-groot (native)
Gemiddelde MTEB-scoreniet native uitgebracht door OpenAI op dit formaat62,3 %64,6 %
Indicatieve OpenAI-prijs / 1M-tokenshangt 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 / vector3 KB (float32)6 KB (float32)12 KB (vector) of 6 KB (halfvec, Aurabase)
Native HNSW pgvector-indexjajanee: gegoten halfvec vereist (>2000 dimmen)
Aurabase-kolom (geverifieerde code)embedding_768inbedding_1536inbedding_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).

#
Opslag

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.

3 KB
768 zon
vector, float32 (4 bytes/dim)
6 KB
1536 zon
vector, float32: hetzelfde gewicht als 3072 in halfvec
12 KB
3072 zon
klassieke vector, float32 (vóór cast halfvec)

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.

#
pgvector / HNSW

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.

embeddings/mod.rs (extrait simplifié)rust
// Voor 3072 (>2000) indexeert HNSW het type `vector` → cast halfvec niet
fn vec_query_parts(dims: usize) -> AuraResult<(&'static str, &'static str, &'static str)> {
    match dims {
        768  => Ok(("embedding_768",  "", "::vector")),
        1536 => Ok(("embedding_1536", "", "::vector")),
        3072 => Ok(("embedding_3072", "::halfvec(3072)", "::halfvec(3072)")),
        other => Err(...), // niet-ondersteunde afmeting
    }
}

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.

#
API-kosten

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.

llm/openai.rs (extrait, requête d'embedding)rust
let body = json!({
    "model": self.embed_model,       // bijv. "tekst-embedding-3-groot"
    "input": text,
    "dimensions": self.embed_dimensions, // kapt 3072 af → de geconfigureerde waarde
});

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.

#
Besluit

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.

Een eenvoudige regel voordat u beslist

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.

#
Veelgestelde vragen

Wat ons het vaakst wordt gevraagd

Kunnen we de grootte van een reeds geïndexeerd corpus wijzigen zonder alles opnieuw te indexeren?+
Nee. Aurabase filtert elke semantische zoekopdracht op exact model EN dimensie (kolomembedding_model + kolom gewijd aan de dimensie). Een corpus geïndexeerd in 1536 dimensies wordt onzichtbaar voor een zoekopdracht uitgevoerd in 3072, en omgekeerd: een veranderende dimensie vereist herindexering van het corpus onder de nieuwe klasse.
Staat Gemini toe dat je verder gaat dan 3072 dimensies?+
Nee. De Gemini-client van Aurabase beperkt de dimensie expliciet tot 3072 (outputDimensionality). 3072 is het gemeenschappelijke plafond voor de drie door Aurabase ondersteunde klassen, alle leveranciers samen.
Moet je altijd kiezen voor 3072 afmetingen voor het beste resultaat?+
Niet noodzakelijkerwijs. Het verschil in MTEB-score tussen 1536 en 3072 (62,3% versus 64,6% volgens OpenAI) blijft bescheiden in het licht van de architectonische verandering die door 3072 wordt geïmpliceerd: release van native HNSW-ondersteuning van het type vector, verplichte cast van halfvec en de prijs van het brede model. De winst moet op uw corpus worden geverifieerd voordat deze kosten worden gerechtvaardigd.
text-embedding-3-small of text-embedding-3-large voor een RAG-project in productie?+
Het hangt af van het budget en de aard van het corpus, en niet van een universele regel. Text-embedding-3-small (1536 oorspronkelijke afmetingen) dekt de meeste gevallen tegen lagere kosten; text-embedding-3-large is gerechtvaardigd op een dubbelzinnig corpus waarbij de winst in nauwkeurigheid concreet wordt gemeten op basis van uw eigen testquery's, en niet alleen op basis van de algemene MTEB-score.
#
Samengevat

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.

KLAAR VOOR IMPLEMENTATIE?

Uw backend in vijf minuten.

Geen creditcard vereist · 500 MB gratis · 50.000 MAU