0Pricing
AI Engineering Academy · Aula

O que são embeddings vetoriais?

Entenda como as redes neurais mapeiam textos para vetores densos em um espaço de alta dimensionalidade, por que textos semanticamente semelhantes produzem vetores próximos e o que a similaridade de cosseno mede.

O que são embeddings vetoriais? é uma aula grátis de AI Engineering Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Engineering Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Engineering Academy inclui 4 aulas no total.

O significado por trás dos números

Um embedding vetorial é uma lista de números (um vetor) que representa o significado de um trecho de texto. Em vez de armazenar palavras como strings brutas, as redes neurais aprendem a codificar o significado semântico em matrizes numéricas densas. Dois textos com significado semelhante produzirão vetores próximos nesse espaço de alta dimensionalidade.

Espaço vetorial de alta dimensionalidade

Os embeddings modernos normalmente têm 768 a 3072 dimensões. Cada dimensão captura algum aspecto latente do significado — tópicos, sentimento, estilo e relações — sem ser programada explicitamente. O resultado é um espaço geométrico rico, no qual as relações semânticas se tornam distâncias mensuráveis.

Por exemplo, text-embedding-3-small produz vetores com 1536 dimensões, enquanto text-embedding-3-large produz vetores com 3072 dimensões.

Como as redes neurais aprendem embeddings

Os modelos de embedding são treinados com enormes corpora de texto para prever palavras ausentes (modelagem de linguagem mascarada) ou distinguir pares semanticamente semelhantes de pares diferentes. Durante o treinamento, a rede ajusta milhões de pesos até que textos semelhantes naturalmente formem agrupamentos no espaço vetorial aprendido.

É por isso que os embeddings são chamados de representações densas — cada dimensão carrega informação, ao contrário das codificações esparsas one-hot, nas quais a maioria dos valores é zero.

Similaridade de cosseno: medindo a proximidade

A similaridade de cosseno mede o ângulo entre dois vetores, retornando um valor entre -1 e 1. Uma pontuação 1 significa que os vetores apontam exatamente na mesma direção (significado idêntico), 0 significa que são ortogonais (sem relação) e -1 significa que apontam em direções opostas.

Ela é preferível à distância euclidiana para textos porque ignora a magnitude do vetor e se concentra exclusivamente na direção, sendo resistente a diferenças no comprimento do texto.

import numpy as np

def cosine_similarity(vec_a, vec_b):
    dot_product = np.dot(vec_a, vec_b)
    norm_a = np.linalg.norm(vec_a)
    norm_b = np.linalg.norm(vec_b)
    return dot_product / (norm_a * norm_b)

# Example with tiny 3D vectors
v1 = np.array([0.8, 0.2, 0.5])
v2 = np.array([0.9, 0.1, 0.4])
print(cosine_similarity(v1, v2))  # Close to 1.0

Por que a similaridade semântica é importante

A pesquisa tradicional por palavras-chave falha quando os usuários fazem paráfrases: pesquisar por automóvel não encontra documentos sobre carros. Os embeddings vetoriais resolvem esse problema porque textos semanticamente equivalentes são mapeados para vetores próximos, independentemente das palavras exatas usadas.

Isso possibilita a pesquisa semântica, na qual você encontra o resultado mais relevante com base no significado, e não na sobreposição de palavras — uma capacidade fundamental para os sistemas RAG.

Visualizando o vetor de embedding

Imagine traçar frases em um mapa 2D (uma analogia simplificada). Frases sobre aprendizado de máquina se agrupam em uma região, frases sobre culinária se agrupam em outra e frases sobre esportes formam um terceiro agrupamento. Os embeddings vetoriais criam esse mapa em milhares de dimensões.

Relações famosas, como rei - homem + mulher ≈ rainha, são operações aritméticas reais nesse espaço — as operações vetoriais codificam analogias semânticas.

Gerando um embedding simples

A API de embeddings da OpenAI aceita texto e retorna uma lista de números de ponto flutuante. Uma única chamada à API pode gerar o embedding de uma frase ou de um parágrafo inteiro. O vetor retornado tem uma dimensão fixa, independentemente do tamanho da entrada.

Importante: entradas mais longas não produzem vetores maiores — elas continuam produzindo o mesmo vetor de tamanho fixo, mas textos muito longos podem perder detalhes específicos porque o modelo comprime tudo nesse espaço fixo.

from openai import OpenAI

client = OpenAI()  # uses OPENAI_API_KEY from environment

response = client.embeddings.create(
    model='text-embedding-3-small',
    input='Vector embeddings capture semantic meaning.'
)

embedding = response.data[0].embedding
print(f'Dimensions: {len(embedding)}')  # 1536
print(f'First 5 values: {embedding[:5]}')

Gerando embeddings de vários textos de uma vez

Você pode gerar embeddings de várias strings em uma única chamada à API passando uma lista ao parâmetro input. Isso é muito mais eficiente do que fazer uma solicitação por texto, pois reduz as viagens de ida e volta pela rede e permite que a API agrupe o processamento.

A resposta contém um objeto de embedding para cada entrada, na mesma ordem, para que você possa combiná-los com seus textos originais usando zip.

from openai import OpenAI

client = OpenAI()

texts = [
    'Python is a programming language.',
    'Snakes are reptiles.',
    'Machine learning requires data.'
]

response = client.embeddings.create(
    model='text-embedding-3-small',
    input=texts
)

for text, result in zip(texts, response.data):
    print(f'{text[:30]}... -> {len(result.embedding)}D vector')

Produto escalar versus similaridade de cosseno

Se seus embeddings forem normalizados por L2 (vetores unitários com magnitude 1), o produto escalar será igual à similaridade de cosseno. Os modelos de embedding da OpenAI retornam vetores normalizados, portanto você pode usar qualquer uma das métricas — o produto escalar é ligeiramente mais rápido de calcular.

No entanto, ao combinar embeddings de modelos ou fontes diferentes que talvez não estejam normalizados, calcule sempre a similaridade de cosseno explicitamente para evitar resultados enganosos.

import numpy as np

def normalize(vec):
    return vec / np.linalg.norm(vec)

v1 = normalize(np.array([3.0, 4.0, 0.0]))
v2 = normalize(np.array([4.0, 3.0, 0.0]))

# For unit vectors: dot product == cosine similarity
dot = np.dot(v1, v2)
print(f'Dot product: {dot:.4f}')  # same as cosine sim

Embeddings versus codificação one-hot

A codificação one-hot representa cada palavra como um vetor com exatamente um 1 e todos os outros valores iguais a 0. Um vocabulário de 50.000 palavras produz vetores com 50.000 dimensões quase totalmente preenchidos por zeros — o que é muito ineficiente.

Os embeddings densos usam de 768 a 3072 dimensões, mas cada dimensão carrega informação real. O espaço é 10 a 20 vezes menor e, ainda assim, captura muito mais nuances, incluindo sinônimos, analogias e significado composicional, que a codificação one-hot não consegue capturar.

Casos de uso comuns dos embeddings

Além da pesquisa semântica, os embeddings viabilizam muitas aplicações práticas:

  • Pesquisa semântica — encontrar documentos pelo significado, não por palavras-chave
  • Sistemas de recomendação — sugerir itens semelhantes aos que o usuário apreciou
  • Agrupamento — agrupar documentos por tópico automaticamente
  • Classificação — fornecer embeddings a um classificador linear
  • Deduplicação — detectar conteúdo quase duplicado

Todos os sistemas RAG dependem de embeddings para associar consultas dos usuários a trechos de documentos relevantes.

Verificação rápida

Teste sua compreensão dos conceitos de Engenharia de IA desta lição.

Recapitulação da lição

Nesta lição, você aprendeu que: os embeddings vetoriais codificam o significado semântico como matrizes numéricas densas; a similaridade de cosseno mede a proximidade semântica comparando as direções dos vetores; e a API de embeddings da OpenAI converte texto em vetores de tamanho fixo em uma única chamada. A seguir, exploraremos como gerar e comparar embeddings usando os modelos da OpenAI na prática.

Perguntas Frequentes

A aula “O que são embeddings vetoriais?” é grátis?

Sim — o texto completo de “O que são embeddings vetoriais?” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Engineering Academy, atualize para CoddyKit PRO. O curso de AI Engineering Academy inclui 4 aulas no total.

O que vou aprender em “O que são embeddings vetoriais?”?

Entenda como as redes neurais mapeiam textos para vetores densos em um espaço de alta dimensionalidade, por que textos semanticamente semelhantes produzem vetores próximos e o que a similaridade de c… Você pratica AI Engineering Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar AI Engineering Academy?

Nenhuma experiência prévia é necessária. AI Engineering Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “O que são embeddings vetoriais?”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de AI Engineering Academy?

Sim. Cada aula de AI Engineering Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. O que são embeddings vetoriais?
  2. Gerando embeddings com a OpenAI
  3. Busca semântica com NumPy
  4. Agrupando e visualizando embeddings
← Voltar para AI Engineering Academy