04-02-01 — Modelos de embedding

⏱ 12 minFontes validadas em: 2026-04-29

TL;DR

Embedding model é o coração do RAG — ele transforma texto em vetores que permitem busca semântica. Para a maioria dos projetos Azure/OpenAI, text-embedding-3-small é o ponto de partida (barato, bom). Use text-embedding-3-large quando precisar de precisão máxima em retrieval. Benchmark independente: MTEB. Dimensionalidade menor = mais rápido, mas menos preciso.

O que é um embedding?

Um embedding é uma representação numérica de texto num espaço vetorial de alta dimensão. A ideia central: textos com significado similar devem ficar próximos nesse espaço, independentemente das palavras exatas usadas.

Exemplo prático:

  • "rescisão contratual" → vetor A
  • "encerramento do contrato" → vetor B
  • "término do acordo" → vetor C

Os vetores A, B e C ficam próximos no espaço. Uma busca por "como cancelar o contrato" os encontra todos, mesmo sem nenhuma palavra em comum.

💡 Insight

Isso é o que diferencia RAG de um CTRL+F sofisticado. Busca por keyword exige as palavras certas. Busca semântica via embeddings entende intenção e significado.

Os principais modelos

OpenAI / Azure OpenAI

ModeloDimensõesMax tokensCusto (por 1M tokens)Quando usar
text-embedding-3-small15368191$0.02Padrão — melhor custo-benefício
text-embedding-3-large30728191$0.13Alta precisão, corpus pequeno
text-embedding-ada-00215368191$0.10Legacy — evite em novos projetos
🏢 Microsoft

No Azure OpenAI, você deploya o modelo com um nome customizado (ex: "embedding-small"). Use esse nome no parâmetro model do SDK. O texto-embedding-3-small está disponível em todas as regiões Azure desde jan/2024.

Cohere Embed

O embed-english-v3.0 e embed-multilingual-v3.0 são competitivos no MTEB. Diferencial: suportam compressão de dimensionalidade (Matryoshka Representation Learning) e têm uma feature de input type (search_document vs search_query) que melhora retrieval assimétrico.

import cohere

co = cohere.Client("SUA_API_KEY")

# Na indexação — usar input_type="search_document"
doc_embeddings = co.embed(
    texts=chunks,
    model="embed-multilingual-v3.0",
    input_type="search_document"
).embeddings

# Na query — usar input_type="search_query"
query_embedding = co.embed(
    texts=[user_question],
    model="embed-multilingual-v3.0",
    input_type="search_query"
).embeddings[0]

Modelos open-source (self-hosted)

ModeloDimensõesDestaques
nomic-embed-text-v1.5768Gratuito, bom multilíngue, Apache 2.0
BAAI/bge-m31024Melhor open-source no MTEB multilíngue
intfloat/multilingual-e5-large1024Excelente para português
sentence-transformers/all-MiniLM-L6-v2384Ultra leve, bom para prototipagem

MTEB — o benchmark que importa

O Massive Text Embedding Benchmark (MTEB) é o padrão da indústria para comparar modelos de embedding. Avalia 56 datasets em 8 categorias (retrieval, classification, clustering, etc.).

O que olhar no MTEB para RAG:

  • Retrieval score: mais importante — mede nDCG@10
  • Multilingual score: crítico se você tem documentos em português
  • Latência p95: impacta tempo de indexação em batch
⚠️ Atenção

MTEB é benchmark genérico. Um modelo top-5 no MTEB pode ser mediocre no seu domínio específico (jurídico, médico, técnico). Sempre faça benchmark no seu próprio corpus antes de escolher o modelo para produção.

Dimensionalidade — tradeoffs

Dimensionalidade mais alta = representação mais rica = melhor retrieval. Mas tem custo:

  • Armazenamento: 1M chunks × 3072 dims × 4 bytes = ~12 GB vs 6 GB com 1536 dims
  • Velocidade de busca: ANN (approximate nearest neighbor) fica mais lento com dimensões maiores
  • Custo de API: text-embedding-3-large custa 6,5x mais que o small

A boa notícia: text-embedding-3 suporta Matryoshka Representation Learning — você pode truncar o vetor para dimensões menores (ex: 256) com degradação mínima de qualidade.

# Gerar embedding com dimensionalidade reduzida (MRL)
response = client.embeddings.create(
    input="texto do chunk",
    model="text-embedding-3-small",
    dimensions=256  # reduz de 1536 para 256 — 83% menor, ~5% piora no retrieval
)

Português e multilíngue

Para documentos em português, valide o modelo no seu corpus. Opções:

  1. text-embedding-3-small/large: suporte multilíngue razoável, incluindo português
  2. Cohere embed-multilingual-v3.0: treinado especificamente para 100+ idiomas
  3. BAAI/bge-m3: open-source, excelente para multilíngue, inclusive português

Como isso se conecta

Fontes

  1. OpenAI. New embedding models and API updates. openai.com/blog
  2. Muennighoff, N. et al. (2022). MTEB: Massive Text Embedding Benchmark. arxiv.org/abs/2210.07316
  3. Cohere. Embed API Reference. docs.cohere.com
  4. Kusupati, A. et al. (2022). Matryoshka Representation Learning. arxiv.org/abs/2205.13147