Resumo Estruturado sobre Embeddings em Aprendizado de Máquina
**Por Ricardo Costa Val do Rosario e Microsoft Copilot 365
1. Embeddings são vetores densos que traduzem objetos como palavras, frases ou imagens em pontos num espaço
de alta dimensão.
2. Nesse espaço, a distância entre vetores reflete relações semânticas ou estruturais entre os itens originais.
3. Eles permitem que algoritmos de IA identifiquem itens semelhantes e realizem buscas semânticas de forma eficiente.
4. Vamos saber um pouco mais neste artigo Original.
Como Funcionam
1. Cada objeto é convertido em um vetor de números reais, tipicamente com centenas de dimensões.
2. Durante o treinamento, modelos ajustam esses vetores para que unidades semanticamente próximas fiquem
fisicamente próximas no espaço vetorial.
3. A similaridade entre vetores costuma ser medida via cosseno ou distância Euclidiana.
Principais Técnicas
1. Word2Vec:
Aprende embeddings de palavras com base em janelas de contexto.
2. GloVe:
Combina estatísticas globais de concorrência com otimização de vetores.
3. Modelos Transformers (BERT, GPT)
Geram embeddings contextuais, variando conforme a posição e uso do token no texto.
Aplicações Práticas
1. Busca Semântica:
Encontra documentos com significado parecido ao da consulta.
2. Recomendação:
Sugere produtos ou conteúdo alinhado ao perfil do usuário.
3. Detecção de Anomalias:
Identifica padrões atípicos ao comparar embeddings de dados de monitoramento.
4. Agrupamento e Visualização:
Projeta dados de alta dimensão em 2D/3D para análise exploratória.
Exemplos Práticos
Exemplo 1: Embeddings de Palavras com spaCy
- Neste exemplo, extraímos embeddings de palavras e calculamos similaridade entre dois termos.
import spacy
nlp = spacy.load("pt_core_news_md")
token1 = nlp("gato")[0]
token2 = nlp("cachorro")[0]
similarity = token1.similarity(token2)
print(f"Similaridade entre gato e cachorro: {similarity:.2f}")
Exemplo 2: Embeddings de Sentenças com Hugging Face Transformers
- Aqui usamos um modelo pré-treinado para embedding de sentenças e comparamos duas frases.
from transformers import AutoTokenizer, AutoModel
import torch
import torch.nn.functional as F
tokenizer = AutoTokenizer.from_pretrained("sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2")
model = AutoModel.from_pretrained("sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2")
def embed(text):
inputs = tokenizer(text, return_tensors="pt", truncation=True)
outputs = model(**inputs)
vec = outputs.last_hidden_state.mean(dim=1)
return F.normalize(vec)
v1 = embed("Aprendizado de máquina é divertido")
v2 = embed("Modelos de IA são fascinantes")
score = F.cosine_similarity(v1, v2).item()
print(f"Similaridade de sentenças: {score:.2f}")
Exemplo 3: Recomendação Simples com Similaridade de Vetores
- Utilizamos NumPy para comparar embeddings fictícios de usuários e produtos.
import numpy as np
# Vetores de exemplo (usuário e três produtos)
user = np.array([0.2, 0.8, 0.5])
products = np.array([
[0.1, 0.9, 0.4],
[0.7, 0.1, 0.3],
[0.3, 0.8, 0.6]
])
# Similaridade Cosseno
cos_sim = lambda a, b: a.dot(b) / (np.linalg.norm(a) * np.linalg.norm(b))
scores = [cos_sim(user, p) for p in products]
best_idx = int(np.argmax(scores))
print(f"Produto mais recomendado: índice {best_idx}, similaridade {scores[best_idx]:.2f}")
Próximos Passos
1. Integre um banco de dados vetorial (por exemplo, FAISS ou Pinecone) para armazenar e consultar
embeddings em larga escala.
2. Ajuste e fine-tune um modelo Transformers em seu domínio de interesse para obter embeddings mais precisos.
3. Explore pipelines de RAG (Retrieval-Augmented Generation) combinando embeddings e LLMs para criação
de respostas contextuais.