PRODPlataforma BaaS europeia soberanaAbra o painel →

IA nativa · 7 minutos de leitura

Tamanho de incorporação: dimensões 768, 1536 ou 3072?

Affane Daylami · Fondateur · 3 de abril de 2026

Voltar ao blog

A escolha entre as dimensões 768, 1536 e 3072 não é um ajuste cosmético. Ele define o volume de armazenamento do seu banco de dados vetorial, o tipo de índice que pode ser utilizado e o preço pago por cada chamada de API. A própria OpenAI documenta a lacuna de qualidade entre seus dois modelos atuais: text-embedding-3-small, em 1.536 dimensões nativas, atingiu 62,3% no benchmark MTEB, em comparação com 64,6% para text-embedding-3-large em 3.072 dimensões nativas. Um ganho real, mas que é pago em outro lugar do que você imagina.

Este texto em inglês foi gerado automaticamente a partir do original em francês e ainda não foi revisado.
Esta página foi traduzida automaticamente. A versão em inglês é oficial.

Este artigo é baseado na documentação oficial publicada pela OpenAI, no feedback da equipe coletado nas discussões da comunidade de desenvolvedores OpenAI e no comportamento verificado no código Aurabase, que roteia nativamente essas classes de três dimensões para três colunas de vetores distintas. Cada figura externa é datada e fornecida; para a metodologia que aplicamos às nossas próprias medições, consulte nosso pilar de metodologia de benchmark .

O essencial
  • As dimensões 1536 continuam sendo a escolha mais equilibrada para a maioria dos casos: incorporação de texto nativo-3-pequeno ou incorporação de texto truncado-3-grande, sem sair do suporte HNSW nativo do pgvector.
  • 3072 dimensões (text-embedding-3-large) oferece a pontuação MTEB mais alta publicada pela OpenAI (64,6% vs. 62,3%), mas excede o limite de dimensão de 2000 do tipo vector do pgvector: o índice HNSW requer uma conversão para halfvec.
  • Truncar uma incorporação via parâmetro OpenAI dimensions (técnica Matryoshka) reduz o armazenamento e acelera a busca, mas não reduz o preço: isso depende do modelo consultado, não do tamanho do vetor retornado.
  • Graças ao armazenamento halfvec (2 bytes por dimensão), um vetor de 3072 dimensões ocupa o mesmo espaço bruto em disco no Aurabase que um vetor 1536 no clássico vector (4 bytes por dimensão): aproximadamente 6 KB.
  • Aurabase suporta nativamente exatamente 3 classes de dimensão, 768, 1536 e 3072, cada uma em sua própria coluna (marcada em aura-ai/src/embeddings/mod.rs): nenhum campo de dimensão livre.
#
Visão geral

768, 1536 ou 3072: o que cada nível realmente muda

Claramente, escolher entre text-embedding-3-small e text-embedding-3-large equivale primeiro a escolher entre 1536 e 3072 dimensões nativas, antes mesmo de falar em truncamento. A tabela abaixo resume os fatos verificáveis ​​nos três níveis que o pgvector reconhece nativamente no lado da indexação e na rota do Aurabase.

Critério768 dimensões1536 dimensões3072 dimensões
Modelo(s) relacionado(s)Truncamento OpenAI ou modelo legado/código aberto (nativo)text-embedding-3-small (nativo) ou truncado 3-largeincorporação de texto-3-grande (nativo)
Pontuação média do MTEBnão lançado nativamente pela OpenAI neste tamanho62,3 %64,6 %
Preço indicativo do OpenAI / 1 milhão de tokensdepende do modelo consultado, não do tamanhoUS$ 0,02 (pequeno) ou US$ 0,13 (grande truncado)US$ 0,13 (incorporação de texto 3 grandes)
Peso bruto armazenado/vetor3 KB (float32)6 KB (float32)12 KB (vetor) ou 6 KB (halfvec, Aurabase)
Índice pgvector HNSW nativosimsimnão: é necessário lançar halfvec (>2.000 dims)
Coluna Aurabase (código verificado)incorporação_768incorporação_1536incorporação_3072

Fontes: OpenAI, blog oficial “Novos modelos de incorporação e atualizações de API”, 25 de janeiro de 2024 (pontuações MTEB e preços de lançamento, verifique na página de preços atual antes de usar); aura-ai/src/embeddings/mod.rs, Aurabase (suporte a colunas e índices, verificado em 24 de agosto de 2026).

#
Armazenamento

O impacto no armazenamento: o cálculo que muda tudo

Uma incorporação é armazenada como uma matriz de números de ponto flutuante. No pgvector, o tipo clássico vector codifica cada dimensão em 4 bytes (float32): 768 dimensões, portanto, pesam cerca de 3 KB de dados brutos por vetor, 1536 dimensões em torno de 6 KB e 3072 dimensões em torno de 12 KB, mesmo antes de contar o cabeçalho pgvector e a sobrecarga da página Postgres.

É aqui que entra o tipo halfvec de pgvector, que codifica cada dimensão em 2 bytes (float16) em vez de 4. Um vetor de 3072 dimensões armazenado em halfvec pesa cerca de 6 KB: exatamente o peso de um vetor de 1536 dimensões armazenado no clássico vector.

3KB
768 sol
vetor, float32 (4 bytes/dim)
6KB
1536 Sol
vetor, float32: mesmo peso que 3072 em halfvec
12KB
3072 sol
vetor clássico, float32 (antes de lançar halfvec)

Consequência direta e não intuitiva: no Aurabase, passar de 1536 para 3072 dimensões não dobra o armazenamento real em disco, uma vez que a coluna embedding_3072 é consultada por meio de uma conversão halfvec. O custo adicional real das dimensões 3072 não é, portanto, principalmente o disco: é o preço do modelo OpenAI associado e a saída do suporte de índice nativo do tipo vector, detalhado na seção seguinte.

#
vetor pg/HNSW

Por que as dimensões 3072 mudam o tipo de índice no pgvector

O tipo vector de pgvector não permite construir um índice HNSW ou IVFFlat além de 2.000 dimensões. As dimensões 3072, portanto, excedem esse limite: nenhuma consulta de pesquisa vetorial em uma coluna vector(3072) pode contar com um índice aproximado, ela recorre a uma varredura sequencial completa, inutilizável na escala de um corpus RAG em produção.

O código Aurabase trata esse caso explicitamente: a coluna embedding_3072 é convertida em halfvec(3072) em cada inserção e consulta de pesquisa, um tipo que o pgvector pode indexar até 4.000 dimensões. As colunas 768 e 1536 permanecem nativas vector, não convertidas, pois não se aproximam do limite.

embeddings/mod.rs (extrait simplifié)rust
// Para 3072 (>2000), HNSW não indexa o tipo `vector` → converte halfvec
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(...), // dimensão não suportada
    }
}

Este detalhe também explica por que uma dimensão de incorporação não listada em [768, 1536, 3072] falha explicitamente no lado do Aurabase, em vez de ser aceita e depois mal indexada: o nome da coluna sempre vem de uma lista de permissões fixa, nunca de um valor livre enviado pelo cliente. Para se aprofundar na construção de um índice HNSW no Postgres além deste caso específico, consulte nosso artigo Índice HNSW e pesquisa de vetor Postgres.

#
Custo da API

Reduzindo a dimensão sem perder tudo: truncamento Matryoshka da OpenAI

A partir de janeiro de 2024, a API Embeddings da OpenAI aceita um parâmetro dimensions que encurta o vetor retornado sem invocar novamente um modelo diferente. A técnica é chamada de Aprendizagem de Representação Matryoshka: o modelo é treinado para concentrar informações úteis nas primeiras dimensões do vetor, de modo que um truncamento perca precisão gradualmente, e não abruptamente.

A OpenAI ilustra a eficácia desta técnica com um exemplo específico em seu anúncio: text-embedding-3-large, truncado para apenas 256 dimensões, ainda excede a pontuação MTEB do antigo text-embedding-ada-002 usado em seu tamanho total de 1.536 dimensões (fonte: OpenAI, blog oficial, 25 de janeiro de 2024). Um vetor 12 vezes menor com desempenho melhor que um vetor completo neste benchmark específico.

llm/openai.rs (extrait, requête d'embedding)rust
let body = json!({
    "model": self.embed_model,       // por exemplo "incorporação de texto-3-grande"
    "input": text,
    "dimensions": self.embed_dimensions, // trunca 3072 → o valor configurado
});

Ponto importante, e muitas vezes mal compreendido: truncar não reduz o preço cobrado. A OpenAI cobra com base no modelo consultado, não no tamanho do vetor retornado, uma vez que o custo real é o cálculo realizado no texto de entrada. Solicitar 1.536 dimensões de text-embedding-3-large custa, portanto, o mesmo preço que suas 3.072 dimensões nativas (fonte: OpenAI, blog oficial, 25 de janeiro de 2024); apenas a velocidade de armazenamento e pesquisa muda.

Esta é justamente a escolha padrão do Aurabase, verificada em config/mod.rs: o modelo configurado por padrão é text-embedding-3-large, mas a dimensão de saída configurada por padrão é 1536, não 3072. O serviço, portanto, paga pela representação do modelo amplo, truncado para permanecer em uma coluna vector indexável em HNSW nativo, sem o cast halfvec necessário para 3072.

#
Decisão

Qual dimensão escolher de acordo com seu caso de uso

As dimensões 1536 continuam sendo o ponto de partida razoável para a maioria dos projetos RAG ou de pesquisa semântica: a pontuação MTEB de text-embedding-3-small (62,3%) permanece próxima da do modelo grande, o armazenamento permanece leve e o tipo clássico vector de índices pgvector em HNSW sem qualquer configuração específica.

3.072 dimensões justifica-se quando o corpus é ambíguo ou técnico, onde a lacuna de qualidade entre 62,3% e 64,6% se traduz em resultados de pesquisa visivelmente melhores em suas próprias consultas, e não no benchmark geral OpenAI. Vários feedbacks da equipe registrados nas discussões da comunidade de desenvolvedores OpenAI apontam nesta direção: o ganho de 3.072 dimensões é medido caso a caso, não pode ser assumido.

As dimensões 768 são especialmente adequadas quando o volume tem precedência sobre as nuances: um corpus grande onde o orçamento de armazenamento ou cálculo é a restrição real, ou o uso de um modelo de incorporação legado já em dimensões nativas 768.

Uma regra simples antes de decidir

Não defina a dimensão antes de medir a qualidade da pesquisa em uma amostra representativa de seu próprio corpus, não apenas na pontuação geral do MTEB publicada pela OpenAI. O MTEB calcula a média de dezenas de tarefas heterogêneas; seu corpus RAG é apenas um.

Essa escolha de dimensão faz parte de uma pilha RAG maior, embeddings, índice HNSW, pesquisa híbrida, que nossa página Native AIdocumenta.

#
Perguntas frequentes

O que nos perguntam com mais frequência

Podemos alterar o tamanho de um corpus já indexado sem reindexar tudo?+
Aurabase filtra cada pesquisa semântica por modelo exato E dimensão (colunaembedding_model + coluna dedicada à dimensão). Um corpus indexado em 1.536 dimensões torna-se invisível para uma pesquisa realizada em 3.072, e vice-versa: a mudança de dimensão requer a reindexação do corpus na nova classe.
Gêmeos permite que você vá além de 3.072 dimensões?+
O cliente Gemini da Aurabase limita explicitamente a dimensão em 3072 (outputDimensionality). 3072 é o teto comum às três classes suportadas pela Aurabase, todos os fornecedores combinados.
Você deve sempre escolher dimensões 3072 para obter melhores resultados?+
Não necessariamente. A diferença na pontuação MTEB entre 1536 e 3072 (62,3% versus 64,6% de acordo com OpenAI) permanece modesta em face da mudança arquitetônica implícita em 3072: liberação do suporte nativo HNSW do tipo vector, conversão obrigatória de halfvec e preço do modelo amplo. O ganho deve ser verificado em seu corpus antes de justificar esse custo.
text-embedding-3-small ou text-embedding-3-large para um projeto RAG em produção?+
Depende do orçamento e da natureza do corpus, não é uma regra universal. Text-embedding-3-small (1536 dimensões nativas) cobre a maioria dos casos com custo mais baixo; text-embedding-3-large é justificado em um corpus ambíguo onde o ganho de precisão é medido concretamente em suas próprias consultas de teste, não apenas na pontuação geral do MTEB.
#
Em resumo

A escolha certa não é a maior, é a melhor medida

As dimensões 768, 1536 e 3072 não são divididas em um único eixo. 3072 ganha na pontuação MTEB publicada pela OpenAI, mas deixa o suporte HNSW nativo do pgvector e paga o preço do modelo grande, qualquer que seja a dimensão solicitada. 1536 continua sendo o saldo padrão mais comum, inclusive na Aurabase. 768 atende casos em que o volume tem precedência sobre as nuances.

O parâmetro dimensions da OpenAI muda a questão a ser feita: não é mais “qual modelo escolher”, mas “qual truncamento aceitar, para qual ganho medido em meu corpus”. Antes de finalizar uma escolha na produção, teste a qualidade da pesquisa em uma amostra real, não apenas em um benchmark geral. Nosso guia pipeline RAG com pgvector detalha a configuração completa, desde a ingestão até a pesquisa híbrida.

PRONTO PARA IMPLEMENTAR?

Seu back-end em cinco minutos.

Não é necessário cartão de crédito · 500 MB grátis · 50.000 MAU