Embeddings: o que são e para que servem
Embedding transforma texto em vetor de números onde proximidade é significado. Entenda como funciona, cosine similarity e por que sustenta busca semântica e RAG.
Você joga um texto num modelo de IA e ele "entende" do que se trata. Mas computador não entende texto: entende número. Então existe um passo intermediário, invisível, que transforma palavras, frases ou documentos inteiros em listas de números. Esse passo se chama embedding, e ele é a peça que faz busca semântica, RAG e recomendação funcionarem por baixo do pano. Quem entende embedding desmistifica metade do hype de IA.
Este artigo explica o que é um embedding, como se mede proximidade entre dois deles e para que isso serve no dia a dia de quem constrói produtos.
O que é um embedding
Um embedding é a representação de um pedaço de conteúdo — texto, imagem ou áudio — como um vetor de números num espaço de muitas dimensions. "Vetor" aqui é só uma lista de números. "Muitas dimensions" quer dizer que essa lista é longa: 384, 768, 1536 números, dependendo do modelo.
A ideia central é simples e poderosa: a posição de cada coisa nesse espaço carrega significado. Conteúdos com sentido parecido ficam próximos; conteúdos diferentes ficam longe. "Cachorro" e "cão" caem praticamente no mesmo ponto. "Cachorro" e "engrenagem hidráulica" ficam em cantos opostos. O modelo não guarda as palavras — guarda coordenadas que codificam o significado delas.
O exemplo clássico que dá intuição é a aritmética de vetores: pegar o vetor de "rei", subtrair o de "homem", somar o de "mulher", e chegar perto do vetor de "rainha".
rei - homem + mulher ≈ rainha
Isso não é mágica: é o resultado de o modelo ter aprendido, a partir de bilhões de exemplos de texto, que a relação entre "rei" e "homem" é parecida com a relação entre "rainha" e "mulher". Essa estrutura fica codificada na geometria do espaço.
Como se mede proximidade
Se significado vira distância, precisamos de uma forma de medir distância. A medida mais usada para embeddings é a cosine similarity: ela olha o ângulo entre dois vetores, não o tamanho deles. Dois vetores apontando para a mesma direção têm cosine similarity perto de 1 (muito parecidos); perpendiculares dão 0 (sem relação); opostos dão -1.
Na prática um embedding é algo assim:
texto: "filhote de cachorro"
vetor: [0.12, -0.04, 0.88, 0.31, -0.17, ...] (mais 1531 números)
cosine(a, b) = dot(a, b) / (norma(a) * norma(b))
cosine("cachorro", "cão") ≈ 0.94 # quase iguais
cosine("cachorro", "engrenagem") ≈ 0.08 # nada a ver
A razão de usar cosine em vez de distância em linha reta é que ela ignora a "intensidade" do vetor e foca só na direção — que é onde mora o significado. Um texto curto e um texto longo sobre o mesmo assunto apontam para a mesma direção, mesmo que tenham magnitudes diferentes.
Para que servem na prática
O motivo de embeddings estarem em todo lugar é que, uma vez que significado virou geometria, vários problemas difíceis viram "achar os vetores mais próximos". Os usos principais:
Busca semântica. Em vez de procurar a palavra exata, você embedda a pergunta do usuário e procura os documentos cujos vetores ficam mais perto. Alguém busca "como cancelar minha assinatura" e encontra um artigo intitulado "Encerrando seu plano", mesmo sem nenhuma palavra em comum. É busca por significado, não por string.
RAG (retrieval-augmented generation). É a aplicação mais quente hoje. Antes de pedir uma resposta ao modelo de linguagem, você usa embeddings para recuperar os trechos mais relevantes da sua base de conhecimento e os injeta no prompt. Se você quer entender o ciclo completo de recuperação e geração, vale ler o que é RAG e como ele resolve o problema de alucinação — embeddings são a engrenagem de recuperação que faz o RAG funcionar.
Recomendação. Itens parecidos têm vetores parecidos. "Quem leu isto também leu aquilo" pode ser implementado como vizinhos mais próximos no espaço de embeddings.
Clustering e deduplicação. Agrupar milhares de tickets de suporte por tema, ou detectar que dois textos dizem a mesma coisa com palavras diferentes, vira uma questão de medir distâncias.
Classificação. Embedda exemplos rotulados, embedda o item novo, veja de qual grupo ele fica mais perto.
Modelos, dimensions e onde guardar
Embeddings não nascem do nada: vêm de um modelo de embedding, treinado especificamente para colocar significado parecido em pontos próximos. Modelos diferentes produzem vetores de dimensions diferentes — 384 num modelo leve, 768 ou 1536 nos maiores. Mais dimensions costuma significar mais nuance capturada, ao custo de mais memória e mais processamento por comparação.
Um detalhe que pega muita gente: você não pode misturar embeddings de modelos diferentes. Cada modelo desenha seu próprio espaço; um vetor do modelo A não tem relação com um vetor do modelo B. Se você trocar de modelo, precisa reembeddar tudo.
Antes de embeddar um texto, vale entender o que de fato está virando vetor. Rodar o documento por um analisador de frequência de termos mostra quais palavras dominam o conteúdo — útil para perceber, por exemplo, que metade do seu texto é boilerplate de rodapé que vai diluir o significado no embedding.
Para guardar e buscar milhões de vetores rápido, usa-se um vector database (Pinecone, Qdrant, Weaviate, pgvector no Postgres). Esses bancos são otimizados para a operação "ache os k vetores mais próximos deste aqui" sem comparar contra todos um por um.
Os limites: embedding não "entende"
Aqui vai a parte que o marketing de IA omite. Um embedding não entende nada. Ele mede proximidade num espaço aprendido por correlação estatística. Isso tem consequências concretas.
A qualidade depende inteiramente do modelo e do domínio. Um modelo treinado em texto genérico da internet pode ir mal em jargão médico, jurídico ou de engenharia, porque nunca viu esses termos em contexto suficiente. Proximidade no espaço também pode ser enganosa: "não recomendo este produto" e "recomendo este produto" são quase idênticos em palavras e podem cair perigosamente perto, embora signifiquem o oposto. Negação é um calcanhar de Aquiles clássico.
Embeddings também não raciocinam, não fazem contas e não checam fatos. Eles dizem "estes dois textos parecem falar do mesmo assunto" — nada além disso.
Perguntas frequentes
Qual a diferença entre embedding e token?
Token é uma unidade em que o texto é fatiado antes de entrar no modelo — geralmente um pedaço de palavra. Embedding é o vetor de números que representa o significado de um token, de uma frase ou de um documento inteiro. Tokenização vem primeiro; o embedding é o resultado de processar esses tokens.
Preciso de GPU para gerar embeddings?
Para gerar grandes volumes rapidamente, GPU ajuda muito. Mas modelos de embedding pequenos rodam tranquilamente em CPU para volumes modestos, e há APIs hospedadas (OpenAI, Cohere, Voyage) que geram embeddings sob demanda sem você manter infraestrutura. Para um protótipo, comece pela API.
Quantas dimensions o meu embedding deveria ter?
Depende do trade-off entre qualidade e custo. Vetores de 384 dimensions são baratos de guardar e comparar e bastam para muitas tarefas de busca. Vetores de 1536 capturam mais nuance, úteis em domínios complexos, mas pesam mais no vector database. Comece pequeno, meça a qualidade da recuperação e suba só se precisar.
Embeddings funcionam em outras línguas além do inglês?
Sim, desde que o modelo seja multilíngue. Bons modelos multilíngues colocam "cachorro" e "dog" perto no mesmo espaço, o que permite busca translíngue: perguntar em português e recuperar documentos em inglês. Modelos treinados só em inglês vão mal fora dele.
O que levar deste artigo
Embedding é a ponte entre texto e matemática. Ele pega significado — algo que computador não manipula — e transforma em coordenadas que computador adora: distância, ângulo, vizinho mais próximo. É exatamente isso que faz busca semântica e RAG funcionarem, e é por isso que entender embedding vale mais do que decorar buzzwords. Comece com um modelo pronto via API, meça a qualidade da recuperação no seu domínio real e lembre sempre: o vetor mede proximidade, não verdade.
- 01 Portfólio de desenvolvedor: o que colocar (e o que cortar) Recrutador olha seu portfólio por vinte segundos. Um projeto terminado e no ar vence dez clones de tutorial. O que incluir, o que cortar e por que o README é metade da impressão.
- 02 Como modelar tabelas sem criar um banco impossível de manter Normalização sem dogma, uma coluna por fato, foreign keys de verdade e tipos honestos: como desenhar um schema que sobrevive ao tempo e evita os anti-padrões caros.