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 equacao que nao deveria funcionar
Considere esta operacao:
rei − homem + mulher ≈ rainha
E uma equacao aritmetica, como 5 − 2 + 4 = 7. So que fala de palavras.
E funciona. Nao porque alguem programou "rei" e "rainha" para se parecerem. Mas porque cada palavra foi transformada em uma lista de numeros — um vetor — e a algebra do significado vira algebra mesmo.
E uma das ideias mais contraintuitivas dos LLMs, e tambem uma das mais poderosas.
Do token a posicao
No capitulo anterior vimos que o texto vira uma sequencia de token IDs — inteiros como 5234 ou 91. Mas um inteiro sozinho nao tem estrutura. O token 5234 nao esta "perto" nem "longe" do token 5235. Eles so estao numerados.
Para que um modelo consiga calcular com palavras, ele precisa de uma representacao mais rica. A solucao: associar a cada token um vetor de cerca de 768, 1024 ou 4096 numeros reais. E isso que chamamos de embedding.
No inicio do treinamento, esses vetores sao aleatorios. Pouco a pouco, ao prever milhoes de proximas palavras, o modelo aprende a organiza-los para que palavras de significado proximo tenham vetores proximos.
Ninguem escreveu essa regra. Ela emerge da tarefa de predicao.
Por que funciona
Pense no que significa prever bem a palavra depois de "O rei falou com sua...". Boas respostas sao filha, esposa, mae, rainha — nao motor ou algoritmo. Um modelo que prediz bem essas continuacoes precisa saber que essas palavras sao substituiveis naquele contexto.
A forma mais economica de memorizar essa equivalencia, quando voce tem bilhoes de parametros e bilhoes de frases, e agrupar "filha", "esposa", "mae", "rainha" na mesma regiao do espaco vetorial. O gradiente empurra nessa direcao a cada iteracao, sem que nenhum humano precise rotular nada.
Embeddings nao sao projetados. Sao o rastro geometrico da tarefa de predicao.
Manipule o espaco
O espaco abaixo e uma caricatura em duas dimensoes — embeddings reais tem centenas. Mas as propriedades essenciais estao ali: clusters semanticos, vizinhanca, aritmetica 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.
Tres coisas para observar:
- Os clusters aparecem sem que tenham sido nomeados. Passe por
gatoe voce veracachorro,rato,leao. Passe poralegriae veraamor,medo,tristeza. As categorias nao existem nos dados — existem na geometria. - Algumas direcoes tem sentido. O vetor que vai de
homemamulhere mais ou menos o mesmo que vai dereiarainha, ou depaiamae. Essa regularidade permite a aritmetica. - As distancias sao relativas, nao absolutas. Que
gatoesteja a distancia 0.32 decachorronao significa nada sozinho. O que importa e que esteja mais perto decachorrodo que depaoouraiva.
A ilusao 2D
Em modelos reais, um embedding geralmente tem entre 768 e 4096 dimensoes. Por que tantas?
Porque em 2D somos obrigados a fazer compromissos. gato precisa ficar perto de cachorro (animais domesticos), de rato (mamiferos), de tigre (felinos), de passaro (animal). Todas essas "proximidades" puxam em direcoes diferentes — e em 2D entram em conflito.
Com 768 dimensoes, cada faceta do significado pode ter sua propria direcao. A palavra gato pode ficar perto de cachorro no eixo "animal domestico", perto de tigre no eixo "felino", perto de rato no eixo "pequeno mamifero". O espaco e grande o suficiente para essas relacoes coexistirem sem serem esmagadas.
Humanos acham que nao da para visualizar 768 dimensoes. Embeddings nao pedem isso: eles apenas as usam para organizar categorias sem colisao.
Medir a proximidade: similaridade cosseno
Quando dizemos que duas palavras estao "proximas" no espaco dos embeddings, como medimos isso na pratica? Nao com a distancia euclidiana classica. Com a similaridade cosseno.
A ideia: olhar para o angulo entre os dois vetores, nao para o comprimento deles. Dois vetores apontando na mesma direcao tem similaridade cosseno 1, independentemente da magnitude. Dois vetores ortogonais dao 0. Dois opostos, −1.
cos(u, v) = (u · v) / (||u|| × ||v||)
Por que essa medida e nao outra? Porque a norma de um embedding (seu comprimento) varia por razoes que nao tem relacao com o significado — frequencia da palavra, profundidade da camada. A direcao, sim, codifica o significado. A similaridade cosseno isola o que importa.
E tambem essa medida que move toda a busca semantica moderna: bases de dados vetoriais (Pinecone, pgvector, Chroma...) indexam milhoes de vetores e encontram os mais proximos de uma consulta em um piscar de olhos. Voltaremos a isso no capitulo 10 (RAG).
Consequencias
Essa representacao geometrica tem efeitos surpreendentes:
- Erros ortograficos sao robustos.
bom diaebom daipodem ter embeddings proximos, entao o modelo os "entende" quase do mesmo jeito, embora no nivel dos tokens sejam diferentes. - Vieses se encaixam. Se no corpus de treinamento
enfermeiraaparece mais no feminino emedicono masculino, a aritmetica dos embeddings refletira isso. medico − homem + mulher pode dar enfermeira. Muito trabalho entra na correcao desses vieses — voltaremos a isso no capitulo 8. - Tudo se torna calculavel. Depois que o significado vira vetor, podemos somar, projetar, medir angulos. E exatamente o que o mecanismo seguinte faz.
O proximo passo
Sua palavra virou um vetor. A palavra ao lado tambem. E a anterior. Como o modelo, a partir dessa sequencia de vetores, decide que em "O medico mandou a enfermeira para casa dela porque **ela**...", o pronome ela se refere a enfermeira e nao ao medico?
A resposta esta no proximo capitulo: a atencao, o mecanismo que permite a cada token olhar para todos os outros antes de decidir quem importa.
Atualizado em