Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Artigo Original: Resumo Estruturado sobre Embeddings em Aprendizado de Máquina

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

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.
2 respostas
solução!

Oi, Ricardo! Como vai?

Agradeço por compartilhar seus aprendizados com a comunidade Alura.

Gostei da sua análise detalhada sobre embeddings, principalmente quando você apresentou exemplos práticos usando spaCy, Hugging Face Transformers e NumPy, mostrando aplicações em busca semântica, recomendação e visualização de dados.

Dica: experimente criar pequenos notebooks de teste para cada técnica que mencionou, assim você pode visualizar os resultados dos embeddings e entender melhor como as distâncias vetoriais refletem a similaridade entre dados. Isso ajuda a fixar o conceito de forma prática.

Conte com o apoio do Fórum na sua jornada. Abraços e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Oi Monalisa,
Agradeço pela sua análise. Confesso que, no momento de aprendizado em que me encontro, a falta de uma estrutura física para desenvolver e criar códigos, especialmente os que são fundamentais para meus projetos, está pesando bastante.
Ricardo