Paul Gomes
· 7 min de leitura

Embeddings e busca vetorial: a matemática que conecta significado

Como embeddings transformam texto em vetores, o que a similaridade semântica realmente mede e onde a busca vetorial falha na prática.

Paul Gomes

Paul Gomes

Autor

Quando um sistema de busca entende que “cachorro” e “cão” querem dizer a mesma coisa, mas que “banco” na frase “sentei no banco” e “banco” na frase “abri conta no banco” são coisas diferentes, não há mágica acontecendo. Há geometria. Todo o campo de embeddings se resume a uma aposta ousada: significado pode ser tratado como posição no espaço. Palavras, frases e documentos viram pontos, e a proximidade entre esses pontos passa a valer como proximidade de sentido. Essa aposta funciona surpreendentemente bem. Ela também falha de maneiras específicas, e entender essas falhas é mais útil do que celebrar os acertos.

O que é, de fato, um embedding

Um embedding é um vetor: uma lista ordenada de números. Um modelo recebe um texto e devolve, digamos, algumas centenas ou alguns milhares de números reais. Cada número é uma coordenada num espaço de alta dimensão. O texto “café da manhã” não tem significado nenhum para o computador; o vetor que o representa, sim, no sentido de que ele ocupa uma região do espaço que fica perto de “torrada”, “xícara” e “primeira refeição”, e longe de “planilha fiscal”.

A pergunta óbvia é: de onde vêm esses números? Eles não são atribuídos à mão. São aprendidos. Durante o treino, o modelo ajusta os vetores para que a estrutura do espaço reflita padrões de uso na língua. A intuição fundadora, que vem da linguística distribucional, é a de que uma palavra é caracterizada pela companhia que mantém. Palavras que aparecem em contextos parecidos acabam com vetores parecidos. Não porque alguém ensinou o modelo o que “café” significa, mas porque “café” e “chá” aparecem cercados das mesmas palavras vizinhas milhões de vezes.

Vale distinguir duas gerações. Os embeddings estáticos clássicos davam um vetor fixo por palavra: “banco” tinha sempre o mesmo vetor, contexto nenhum. Os embeddings contextuais modernos, produzidos por arquiteturas Transformer, geram o vetor levando em conta a frase inteira. É por isso que hoje “banco” de sentar e “banco” de dinheiro podem ocupar regiões diferentes do espaço: o mecanismo de atenção deixa cada token influenciar a representação dos outros antes de o vetor final ser produzido.

Por que direção importa mais que distância

Se o significado é posição, como se mede semelhança? A medida dominante é a similaridade de cosseno, que compara o ângulo entre dois vetores, não a distância entre suas pontas. Dois textos são considerados semanticamente próximos quando seus vetores apontam para a mesma direção, independentemente de quão longos sejam.

Essa escolha não é arbitrária. O comprimento de um vetor de embedding costuma carregar informação pouco interessante para busca, como frequência ou tamanho do texto, enquanto a direção carrega o conteúdo semântico. Ao olhar só para o ângulo, você pergunta “esses dois textos apontam para o mesmo lugar do espaço de sentido?” em vez de “esses dois textos têm a mesma magnitude?”. É a pergunta certa. Um parágrafo longo e uma frase curta sobre o mesmo assunto podem ter magnitudes bem diferentes e ainda assim apontar quase na mesma direção.

A famosa aritmética vetorial, do tipo em que subtrair “homem” e somar “mulher” a “rei” te leva para perto de “rainha”, é uma consequência dessa geometria. Ela sugere que certas relações semânticas viram direções consistentes no espaço. É um resultado real e elegante, mas convém não idolatrá-lo: essas analogias funcionam para algumas relações e escorregam feio em outras, e a limpeza do exemplo clássico esconde quanto ruído existe no caso geral.

O que a busca vetorial realmente faz

Busca vetorial é o que acontece quando você para de casar palavras e passa a casar posições. Na busca tradicional por palavra-chave, “carro barato” não encontra um documento que fala só em “automóvel econômico”, porque não há sobreposição de termos. Na busca vetorial, os dois textos viram vetores próximos e o casamento acontece pelo sentido, não pela grafia.

Operacionalmente, você transforma cada documento da base em vetor uma vez e guarda tudo. Na hora da consulta, transforma a pergunta em vetor e procura os vetores mais próximos. O problema é que comparar a consulta com milhões de vetores um a um sai caro. É aqui que entram os índices de vizinhos aproximados: estruturas que sacrificam a garantia de encontrar o vizinho exato em troca de encontrar vizinhos muito bons muito depressa. O “aproximado” é deliberado. Aceita-se errar de vez em quando na margem para ganhar ordens de grandeza em velocidade. Para a maioria das aplicações, o vizinho quase mais próximo é indistinguível do mais próximo.

É esse mecanismo que sustenta a recuperação em sistemas de RAG. O modelo de linguagem não vasculha sua base de conhecimento; um recuperador vetorial traz os poucos trechos mais próximos da pergunta e só eles entram no contexto. A qualidade da resposta fica refém da qualidade dessa recuperação, e a qualidade da recuperação fica refém de quão bem o embedding capturou o sentido do que foi perguntado.

Onde a similaridade semântica quebra

Aqui mora a parte que quase ninguém conta direito. Similaridade de embedding não é sinônimo de relevância. São coisas correlacionadas, não idênticas, e a diferença explica boa parte das frustrações práticas.

Primeiro, embeddings capturam similaridade de tópico com muito mais facilidade do que capturam a resposta a uma pergunta. “Quais os efeitos colaterais do medicamento X?” tem vetor pertíssimo de “quais os benefícios do medicamento X?”, porque as duas frases falam quase das mesmas coisas. O espaço vê tópico partilhado; o usuário queria intenção oposta. A geometria que aproxima assuntos parecidos é a mesma que confunde perguntas de sinal contrário.

Segundo, negação e pequenas mudanças lógicas mal aparecem no espaço. “O contrato foi assinado” e “o contrato não foi assinado” descrevem realidades opostas com vetores vizinhos, porque quase todas as palavras coincidem. Embedding é fraco justamente onde a semântica depende de um operador lógico e não do vocabulário.

Terceiro, há o descasamento entre como a pergunta é escrita e como a resposta é escrita. Uma dúvida coloquial e o parágrafo técnico que a responde podem usar vocabulários tão diferentes que seus vetores ficam mais longe do que deveriam. É por isso que sistemas sérios raramente confiam só no vetor: combinam busca vetorial com busca por palavra-chave e passam os candidatos por um reordenador mais caro e mais preciso, que julga cada par pergunta-documento em conjunto em vez de comparar dois vetores calculados isoladamente.

Quarto, e mais estrutural: um embedding comprime um texto inteiro num único ponto. Um documento que trata de três assuntos vira uma média, um vetor que não representa bem nenhum dos três. Fragmentar bem os textos antes de indexar costuma mexer mais no resultado final do que trocar o modelo de embedding. A decisão de engenharia mais barata é também uma das mais decisivas.

Um espaço, muitos vieses

Como os vetores herdam padrões estatísticos dos dados de treino, eles herdam também as associações embutidas nesses dados, inclusive as indesejadas. Se determinadas profissões aparecem historicamente ligadas a um gênero, essa ligação vira geometria e reaparece nas analogias e nas buscas. O embedding não tem opinião; ele reflete a distribuição que viu. Tratar o espaço vetorial como um retrato neutro do significado é um erro. Ele é um retrato do uso, com todos os vícios do uso.

A opinião do autor

Embeddings são uma das ideias mais bonitas da IA aplicada porque transformam um problema filosófico intratável, o que é significado, num problema de engenharia com o qual dá para trabalhar: proximidade num espaço. Essa tradução é o que os torna úteis. É também o que os limita, e a limitação costuma ser subestimada por quem vende busca vetorial como se ela “entendesse” texto.

Ela não entende. Ela mede vizinhança de uso, e vizinhança de uso é um proxy bom, não perfeito, de relevância. Minha posição prática é simples: trate o embedding como um primeiro filtro barato e generoso, nunca como juiz final. Recupere largo com o vetor, refine com métodos que enxergam o que o vetor não enxerga, negação, intenção, lógica. Quem monta pipeline de recuperação apostando que a similaridade de cosseno resolve sozinha vai colher exatamente o tipo de erro que a geometria não avisa que está cometendo, respostas confiantes sobre o tópico certo e o sentido errado. A matemática conecta significado de verdade. Só não conecta significado inteiro.