Capítulo 03 · Embeddings · 10 min
O espaço do significado
Palavras em um espaço geométrico. Rei − Homem + Mulher = Rainha, e outros milagres vetoriais.
Uma equação que não deveria funcionar
Considere esta operação:
rei − homem + mulher ≈ rainha
É uma equação aritmética, como 5 − 2 + 4 = 7. Só que fala de palavras.
E funciona. Não porque alguém programou "rei" e "rainha" para se parecerem. Mas porque cada palavra foi transformada em uma lista de números — um vetor — e a álgebra do significado vira álgebra mesmo.
É uma das ideias mais contraintuitivas dos LLMs, e também uma das mais poderosas.
Do token a posição
No capítulo anterior vimos que o texto vira uma sequência de token IDs — inteiros como 5234 ou 91. Mas um inteiro sozinho não tem estrutura. O token 5234 não está "perto" nem "longe" do token 5235. Eles só estão numerados.
Para que um modelo consiga calcular com palavras, ele precisa de uma representação mais rica. A solução: associar a cada token um vetor de várias centenas a vários milhares de números reais: 768 para um modelo pequeno, 4096 para um modelo intermediário, 12.288 para o GPT-3, 16.384 para o Llama 3 405B. É isso que chamamos de embedding.
No início do treinamento, esses vetores são aleatórios. Pouco a pouco, ao prever milhões de próximas palavras, o modelo aprende a organizá-los para que palavras de significado próximo tenham vetores próximos.
Ninguém escreveu essa regra. Ela emerge da tarefa de predição.
Por que funciona
Pense no que significa prever bem a palavra depois de "O rei falou com sua...". Boas respostas são filha, esposa, mãe, rainha — não motor ou algoritmo. Um modelo que prediz bem essas continuações precisa saber que essas palavras são substituíveis naquele contexto.
A forma mais econômica de memorizar essa equivalência, quando você tem bilhões de parâmetros e bilhões de frases, é agrupar "filha", "esposa", "mãe", "rainha" na mesma região do espaço vetorial. O gradiente empurra nessa direção a cada iteração, sem que nenhum humano precise rotular nada.
Embeddings não são projetados. São o rastro geométrico da tarefa de predição.
Manipule o espaço
O espaço abaixo é uma caricatura em duas dimensões — embeddings reais têm centenas. Mas as propriedades essenciais estão ali: clusters semânticos, vizinhança, aritmética vetorial.
Cada ponto é uma palavra projetada em um espaço de significado. Os vizinhos compartilham um tema — não uma ortografia. A seta mostra a aritmética vetorial que torna possível Rei − Homem + Mulher = Rainha.
Três coisas para observar:
- Os clusters aparecem sem que tenham sido nomeados. Passe por
gatoe você verácachorro,rato,leão. Passe poralegriae veráamor,medo,tristeza. As categorias não existem nos dados — existem na geometria. - Algumas direções têm sentido. O vetor que vai de
homemamulheré mais ou menos o mesmo que vai dereiarainha, ou depaiamãe. Essa regularidade permite a aritmética. Uma ressalva honesta: essa propriedade foi descoberta nos embeddings estáticos do tipo word2vec (2013), uma palavra = um vetor fixo. Na tabela de embeddings de um LLM ela ainda existe, mas bem mais ruidosa — a intuição continua correta, a igualdade é aproximada. - As distâncias são relativas, não absolutas. Que
gatoesteja a distância 0.32 decachorronão significa nada sozinho. O que importa é que esteja mais perto decachorrodo que depãoouraiva.
A ilusão 2D
Em modelos reais, um embedding tem entre 768 e 16.384 dimensões conforme o tamanho do modelo. Por que tantas?
Porque em 2D somos obrigados a fazer compromissos. gato precisa ficar perto de cachorro (animais domésticos), de rato (mamíferos), de tigre (felinos), de pássaro (animal). Todas essas "proximidades" puxam em direções diferentes — e em 2D entram em conflito.
Com 768 dimensões, cada faceta do significado pode ter sua própria direção. A palavra gato pode ficar perto de cachorro no eixo "animal doméstico", perto de tigre no eixo "felino", perto de rato no eixo "pequeno mamífero". O espaço é grande o suficiente para essas relações coexistirem sem serem esmagadas.
Humanos acham que não dá para visualizar 768 dimensões. Embeddings não pedem isso: eles apenas as usam para organizar categorias sem colisão.
Medir a proximidade: similaridade cosseno
Quando dizemos que duas palavras estão "próximas" no espaço dos embeddings, como medimos isso na prática? Não com a distância euclidiana clássica. Com a similaridade cosseno.
A ideia: olhar para o ângulo entre os dois vetores, não para o comprimento deles. Dois vetores apontando na mesma direção têm similaridade cosseno 1, independentemente da magnitude. Dois vetores ortogonais dão 0. Dois opostos, −1.
cos(u, v) = (u · v) / (||u|| × ||v||)
Por que essa medida é não outra? Porque a norma de um embedding (seu comprimento) varia por razões que não têm relação com o significado — frequência da palavra, profundidade da camada. A direção, sim, codifica o significado. A similaridade cosseno isola o que importa.
É também essa medida que move toda a busca semântica moderna: bases de dados vetoriais (Pinecone, pgvector, Chroma...) indexam milhões de vetores e encontram os mais próximos de uma consulta em um piscar de olhos. Voltaremos a isso no capítulo 10 (RAG).
Consequências
Essa representação geométrica tem efeitos surpreendentes:
- Erros ortográficos costumam passar. Escreva
bom daiem vez debom diae o modelo entende assim mesmo. Cuidado com a explicação, ela é contraintuitiva: não é porque os dois embeddings de partida se parecem. O tokenizador cortadaiem pedaços que nada tem a ver com os dedia, e seus vetores de entrada não têm relação. É atravessando as camadas, olhando o contexto ao redor, que o modelo aproxima progressivamente as duas representações. A robustez não vem da tabela de embeddings: ela é reconstruída pelo caminho. - Vieses se encaixam. Se no corpus de treinamento
enfermeiraaparece mais no feminino emédicono masculino, a aritmética dos embeddings refletirá isso. médico − homem + mulher pode dar enfermeira. Muito trabalho entra na correção desses vieses — voltaremos a isso no capítulo 8. - Tudo se torna calculável. Depois que o significado vira vetor, podemos somar, projetar, medir ângulos. É exatamente o que o mecanismo seguinte faz.
O próximo passo
Sua palavra virou um vetor. A palavra ao lado também. E a anterior. Como o modelo, a partir dessa sequência de vetores, decide que em "O médico mandou a enfermeira para casa dela porque **ela**...", o pronome ela se refere à enfermeira e não ao médico?
A resposta está no próximo capítulo: a atenção, o mecanismo que permite a cada token olhar para todos os outros antes de decidir quem importa.
Atualizado em