00-03-01 — Vetores, Embeddings e Atenção — Intuição sem Cálculo
TL;DR
Modelos representam tudo como vetores — listas de números onde a posição carrega significado. Embeddings são vetores onde proximidade = similaridade semântica (rei e rainha são vizinhos; rei e banana não). Atenção é o mecanismo que decide quais partes do contexto são relevantes para cada palavra — é o que faz "banco" em "sentei no banco do parque" apontar para assento, não financeiro. Esses três conceitos são 80% do que você precisa para entender Transformers.
O Problema de Representar Linguagem para Computadores
Antes de chegar a embeddings e atenção, precisamos do problema que eles resolvem. Computadores trabalham com números — mas palavras e frases não são números. Como você transforma "gato" em algo que um computador pode processar matematicamente?
A abordagem mais simples seria um índice: gato=1, cachorro=2, carro=3. Mas isso cria um problema imediato: para o computador, gato (1) é mais "próximo" de cachorro (2) do que de felino (4512), mesmo que semanticamente gato e felino sejam quase sinônimos. A representação não captura significado.
O insight central do ML moderno: em vez de um único número, use uma lista de números (um vetor) onde a posição de cada número carrega informação sobre o significado da palavra. E aprenda esses vetores a partir de dados, não defina manualmente.
Vetores: o Espaço onde o Significado Mora
Um vetor é simplesmente uma lista ordenada de números. Em geometria, um vetor 2D é um ponto no plano — [3, 4] significa 3 no eixo X, 4 no eixo Y. Modelos de linguagem trabalham com vetores de centenas ou milhares de dimensões, mas a intuição geométrica é a mesma.
O que importa para IA: a distância e direção entre vetores. Dois vetores próximos no espaço multidimensional representam conceitos similares. Dois vetores distantes representam conceitos diferentes.
Analogia concreta: imagine que você tem um mapa de cidades. Se Rio de Janeiro e São Paulo estão próximos no mapa, eles compartilham características (Brasil, costa, metrópole). Se você souber que "Paris é para França o que X é para Brasil", você pode encontrar X calculando direções no mapa. Embeddings funcionam exatamente assim — mas com palavras em vez de cidades, e em centenas de dimensões.
Embeddings: Vetores que Aprendem Significado
Dado o contexto de vetores, embeddings são vetores aprendidos a partir de dados que capturam relacionamentos semânticos. Cada palavra, frase, ou documento é representado como um ponto em um espaço de alta dimensão, onde a proximidade geométrica reflete similaridade de significado.
Como eles são aprendidos: o modelo é treinado em textos massivos com uma tarefa simples — prever qual palavra vem antes ou depois de uma determinada palavra. Para fazer isso bem, o modelo precisa aprender que "gato" aparece em contextos similares a "felino" e "bichano", mas raramente perto de "carro" ou "balancete". Essa co-ocorrência de contextos vira o vetor.
Embeddings modernos (OpenAI text-embedding-3, Azure text-embedding-ada) representam textos inteiros como vetores de 1536 ou 3072 dimensões. Eles são a base do RAG — você computa o embedding da pergunta do usuário, busca os documentos cujos embeddings são mais próximos, e usa esses documentos como contexto.
text-embedding-3-large via Azure OpenAI gera embeddings de 3072 dimensões. Azure AI Search armazena e busca esses vetores eficientemente. Em Semantic Kernel, ITextEmbeddingGenerationService abstrai a geração de embeddings com qualquer modelo configurado.
Atenção: o Mecanismo que Dá Contexto
Embeddings resolvem a representação de palavras individuais — mas linguagem é relacional. "Banco" significa coisas completamente diferentes em "o banco faliu" e "sentei no banco do jardim". Para entender "banco" no contexto correto, o modelo precisa olhar para as outras palavras da frase e decidir quais são relevantes.
Esse é exatamente o que o mecanismo de atenção faz. Para cada palavra, a atenção calcula um score de relevância para todas as outras palavras no contexto, e usa esses scores para criar uma representação contextualizada da palavra. Em "o banco faliu", "banco" presta atenção principalmente em "faliu" e ajusta sua representação para o sentido financeiro. Em "sentei no banco", presta atenção em "sentei" e ajusta para o sentido de assento.
A palavra "atenção" não é metáfora — é o nome técnico do mecanismo. O paper original (Vaswani et al., 2017) se chama "Attention is All You Need", e demonstrou que atenção sozinha, sem RNNs ou CNNs, era suficiente para superar o estado da arte em tradução automática.
Como os Três Conceitos se Conectam
Vetores, embeddings e atenção não são conceitos independentes — eles formam o pipeline de processamento de um Transformer:
- Input: texto bruto → tokens (palavras ou pedaços de palavras)
- Embeddings: cada token → vetor de alta dimensão (representação inicial)
- Atenção: para cada token, calcula scores de relevância para todos os outros tokens → cria representações contextualizadas (o embedding de "banco" muda com o contexto)
- Camadas de atenção empilhadas: repete o processo, refinando representações
- Output: representações finais → probabilidades sobre o próximo token
Embeddings na Prática: Busca Semântica em C#
// Semantic Kernel: gerar embedding e fazer busca semântica
var embeddingService = kernel.GetRequiredService
<ITextEmbeddingGenerationService>();
// Gerar embedding de um documento
var docEmbedding = await embeddingService.GenerateEmbeddingAsync(
"Política de reembolso de despesas de viagem da Impar");
// Gerar embedding da query do usuário
var queryEmbedding = await embeddingService.GenerateEmbeddingAsync(
"como faço para ser reembolsado por hotel?");
// Similaridade de cosseno: próximo de 1.0 = muito similar
// (Azure AI Search faz isso automaticamente — aqui é só a intuição)
float similarity = CosineSimilarity(docEmbedding, queryEmbedding);
// → ~0.87 (alta similaridade — a política de reembolso é relevante)
// Na prática, você não calcula manualmente — usa vector search:
var results = await collection.VectorizedSearchAsync(queryEmbedding,
new VectorSearchOptions { Top = 5 });
// Retorna os 5 documentos mais próximos semanticamente da query