Embeddings: Como transformar textos em vetores

📜 O Grimório dos Vetores: A Alquimia dos Embeddings

Bem-vindo, Engenheiro de IA. Você acaba de abrir um dos capítulos mais fundamentais da nossa Formação. Se as LLMs (Large Language Models) são o "cérebro" da inteligência artificial, os Embeddings são a "percepção sensorial" desse cérebro. Sem eles, a máquina lê apenas caracteres; com eles, ela compreende significados.


⚡ 1. O Hook: O Problema do "Rei" e da "Rainha"

Imagine que você está construindo um sistema de recomendação para a Amazon ou a Netflix. Se um usuário busca por "Notebook Gamer", e seu sistema busca apenas a palavra exata, ele ignorará resultados como "Laptop de alta performance", pois as palavras são diferentes.

O problema: Computadores não entendem palavras, eles entendem números. A solução: Transformar a palavra "Notebook" em uma lista de números (um vetor) onde a posição desses números represente a "essência" do objeto.

Se "Notebook" e "Laptop" estiverem geometricamente próximos nesse espaço matemático, a máquina "entende" que eles são semanticamente a mesma coisa. Isso é um Embedding.


🏛️ 2. A Base Teórica: A Autoridade do Conhecimento

Para dominarmos essa arte, devemos recorrer ao artigo seminal de Tomas Mikolov (ex-Google), que introduziu o Word2Vec em 2013.

Mikolov provou que é possível realizar "álgebra de palavras". A equação mais famosa da história dos embeddings é: 👉 Vetor("Rei") - Vetor("Homem") + Vetor("Mulher") ≈ Vetor("Rainha")

Isso demonstrou que as redes neurais conseguem capturar relações hierárquicas e conceituais (gênero, pluralidade, capital de países) apenas analisando a vizinhança das palavras em bilhões de textos.


🧭 3. A Jornada do Conhecimento (Do Básico ao Avançado)

🟢 Nível 1: O que é, afinal, um Vetor?

Um embedding é a representação de um conceito em um espaço multidimensional. - One-Hot Encoding (O jeito antigo): Cada palavra é um índice único. Se você tem 10.000 palavras, a palavra "Gato" seria um vetor com 9.999 zeros e um único número 1. Ineficiente e sem significado. - Dense Embeddings (O jeito moderno): A palavra "Gato" vira algo como [0.12, -0.59, 0.88, ...]. Cada dimensão representa uma característica latente (ex: "felino", "doméstico", "peludo").

🟡 Nível 2: Como medimos a "Distância" entre Ideias?

Se transformamos tudo em vetores, como sabemos se dois textos são parecidos? Usamos a Similaridade de Cosseno. Em vez de medir a distância em linha reta, medimos o ângulo entre dois vetores. Se o ângulo é 0°, as palavras são idênticas. Se é 90°, são irrelevantes entre si.

🔴 Nível 3: Do Word2Vec aos Contextual Embeddings (BERT e GPT)

No Word2Vec, a palavra "Banco" teria sempre o mesmo vetor, seja um banco de sentar ou um banco financeiro. Modelos modernos como o BERT (Google) e o GPT (OpenAI) utilizam Atenção (Attention) para criar embeddings contextuais. O vetor da palavra "Banco" muda dinamicamente dependendo das palavras ao redor.


💻 4. Laboratório Prático: Transformando Texto em Números

Vamos utilizar a biblioteca scikit-learn para criar um modelo simples de similaridade.

Instrução: Copie e cole o código abaixo no terminal interativo (Pyodide Playground) para ver a magia da matemática acontecendo.

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

# 1. Nosso pequeno corpus de conhecimento
documentos = [
    "O gato gosta de leite",
    "O felino aprecia laticínios",
    "O céu está azul hoje",
    "O clima está ensolarado"
]

# 2. Transformando textos em vetores (usando TF-IDF como simplificação de embedding)
vectorizer = TfidfVectorizer()
vetores = vectorizer.fit_transform(documentos)

# 3. Comparando a frase 0 ("O gato gosta de leite") com as outras
similaridades = cosine_similarity(vetores[0], vetores)

print("Análise de Similaridade:")
for i, score in enumerate(similaridades[0]):
    print(f"Frase 0 vs Frase {i}: {score:.4f} - Texto: {documentos[i]}")

# Insight: Note que a Frase 0 e 1 terão maior similaridade que a 0 e 2.

❓ 5. FAQ (People Also Ask)

Q: Qual a diferença entre Embedding e Tokenização? R: A tokenização é o processo de quebrar o texto em pedaços (tokens). O embedding é o processo de atribuir um valor numérico (vetor) a cada um desses tokens para que a máquina entenda o significado.

Q: Quantas dimensões um embedding geralmente possui? R: Depende do modelo. Modelos simples podem ter 100-300 dimensões. Modelos robustos como os da OpenAI (text-embedding-3-small) podem ter 1.536 dimensões ou mais.

Q: Onde os embeddings são armazenados? R: Em bancos de dados especializados chamados Vector Databases (como Pinecone, Milvus ou Weaviate), que permitem buscas ultra-rápidas por "vizinhos mais próximos" (Nearest Neighbors).


Terminal Interativo (Pyodide)
Aguardando execução...