Lucas S. Vieira


Embeddings, Similaridade e RAG


Texto como números, busca e geração


Guilda de IA

📰 Fofocas da Semana

  • Claude Fable 5 / Mythos 5 banidos (12/06) — Gov. dos EUA emite diretiva de controle de exportação citando segurança nacional. Anthropic forçada a desativar ambos globalmente — nem clientes pagantes usam. Amazon (AWS) levou à Casa Branca após jailbreak de 3 palavras. Restrição se aplica a qualquer estrangeiro, incluindo funcionários da própria Anthropic. Opus 4.8 = fallback, mas com mais falsos positivos 🔒⚠️
    • Fable 5 era a versão "pública" do Mythos 5 (restrito a governo). Agora nenhum dos dois existe comercialmente
  • GLM-5.2 open-weight (13/06) — Zhipu/Z.ai lança 753B MoE (40B ativos), 1M contexto, MIT. SWE-bench Pro 62.1 (GPT-5.5 = 58.6). AIME 2026 = 99.2. Custo ~1/6 do GPT-5.5. Primeiro modelo chinês no top 3 global. "Novo DeepSeek moment" em coding 🔓
    • Lancado no mesmo dia do ban da Anthropic — contraste perfeito: fechamento vs abertura
  • Ornith-1.0 (25/06) — Família de LLMs de agentic coding open-source (MIT): 9B Dense, 31B Dense, 35B MoE, 397B MoE. Post-trained em cima de Gemma 4 e Qwen 3.5. SWE-Bench 82.4 (verified), Terminal-Bench 77.5. Self-improving RL: gera soluções + scaffolds. 🔓
    • ⚠️ Benchmaxxing: falha espectacularmente em SWE-Bench Verified Single-turn (fora do padrão de treino). Benchmarks otimizados pra autopromo, não pra uso real
  • Laneformer 2B (25/06) — Kog AI treina arquitetura própria do zero (6T tokens, Nemotron). 3.000 tokens/s em 8× AMD MI300X via Delayed Tensor Parallelism (DTP). HumanEval+ 45.1% greedy (Qwen3.5 2B = 31.1%), 65.0% com best-of-8 em 1.3s. Apache 2.0, pesos + recipe abertos 🔓
    • 3.000 tok/s requer 8× MI300X (enterprise). Relevância local = arquitetura inovadora (DTP), não roda em GPU consumer
  • LFM 2.5-350M (25/06) — Liquid AI solta 350M params treinado com 28T tokens + RL. Roda de GPU cloud a CPU barata. Versão Retrievers: embedding multilíngue (11 idiomas, 350M). Arquitetura LFM2 (Liquid Foundation Models) 🔓
  • GPT-5.6 Sol/Terra/Luna (26/06) — OpenAI lança 3 modelos em limited preview: Sol (frontier, next-gen), Terra (balanceado, dia a dia), Luna (rápido e barato, alto volume). Novo esquema de nomes: número = geração, nome = tier. Sol = "equivalente ao Mythos" em cybersecurity, por isso Trump admin pediu pra limitar rollout a parceiros aprovados pelo governo, "cliente por cliente" 🔒⚠️
    • Altman em memo interno: "não é nosso modelo preferido a longo prazo". Lançaram mesmo assim em preview restrito — 1 dia depois do pedido do governo
  • AI Incident Reporting Bill (25/06) — Rep. Nathaniel Moran (R-TX) propõe lei federal: devs de frontier AI devem reportar incidentes ao Commerce Dept em 7 dias. Incidentes graves (segurança nacional) → Congresso em 48h. Cobre: evadir oversight humano, roubo de weights, cyberattacks em infra crítica, CBRNE 🔒⚠️
    • Contexto: Anthropic acusa Alibaba de distilling industrial do Mythos — 25K contas fake, 30M interações. O "catch-it-early and sound-the-alarm bill"
    • Ironia: o fear-mongering dos labs de fronteira virou regulamentação pra todos — não escapou ninguém
  • Sakana Fugu (22/06) — Lab japonês lança LLM treinado pra orquestrar outros LLMs. Fugu = "one model to command them all": manda uma request, ele decide se responde direto ou monta equipe de especialistas. Baseado em 2 papers ICLR 2026 (Trinity + Conductor). Pitch geopolítico: "single-vendor dependency is a vulnerability" — se um provider cai por export control, Fugu roteia automaticamente. Fugu Ultra claima nível Fable 5 nos benchmarks, mas testes reais (Ethan Mollick) = 30 min por tarefa, resultados aquém do prometido 🐡
    • Não é modelo novo — é orquestração como produto. O "AI sovereignty" como pitch comercial

📌 Projeto Final

Vocês já têm as ferramentas pra construir seus próprios agentes!

Na aula que vem é a apresentação final — preparem algo pra mostrar!

Sugestões de projeto:

  • Agente tutor de uma matéria
  • Assistente de produtividade (tarefas, lembretes)
  • Agente de pesquisa com ferramentas web
  • Chatbot de atendimento com personalidade
  • Agente criativo (roteiros, poemas, brainstorm)

Comecem pelo que quiserem — o melhor projeto é o que vocês querem usar.

🔴 O problema: LLMs não sabem tudo

LLMs não conhecem:

  • Seus documentos pessoais
  • PDFs da empresa
  • Notas privadas
  • Informações recentes (pós-treinamento)

E agora?

🔴 A solução: RAG

RAG = Retrieval Augmented Generation

Buscar informações relevantes antes de gerar a resposta.

"RAG = buscar antes de responder."

Analogia

  • Sem RAG: aluno fazendo prova de memória
  • Com RAG: aluno fazendo prova com livro aberto

Fluxo RAG

  1. Chunking → divide documentos em pedaços
  2. Embeddings → transforma texto em vetores
  3. Vector Store → guarda os vetores
  4. Retrieval → busca pedaços relevantes
  5. Generation → LLM responde com contexto

Mas como funciona a "busca"?

O retrieval é o coração do RAG.

E a busca tem duas abordagens que se complementam:

  • Busca lexical — encontra palavras exatas
  • Busca semântica — encontra significados

Vamos ver cada uma separadamente, e depois juntar.

🟡 Busca Lexical: BM25

"Como o Google buscava antes de IA."

BM25 (Best Matching 25) é o algoritmo de busca lexical mais usado.

Está no Elasticsearch, no Lucene, no Sphinx…

E é mais inteligente do que parece.

A fórmula (não se assuste!)

score(q,D) = Σi IDF(qi) · f(qi,D) · (k1+1) / [ f(qi,D) + k1 · (1 − b + b · fieldLen / avgFieldLen ) ]

Parece assustador? Calma. Cada parte é bom senso. Vamos decompor:

🟢 IDF = Inverse Document Frequency — termos raros valem mais. "elefante" em poucos docs → IDF alto → vale mais. "the" em quase todos → IDF baixo → vale menos.

🔵 f(q,D) = quantas vezes o termo aparece no documento. Mais aparições = provavelmente mais relevante.

🟠 k₁ = saturação — a 1ª menção vale muito, a 10ª vale quase nada extra. "gato" 100 vezes ≠ 100× mais relevante que 1 vez. Default: k₁ = 1.2

🟣 b = quanto o tamanho do doc afeta o score. b = 0 → tamanho não importa. b = 1 → importa muito. Default: 0.75. Tweet com "gato" > livro de 300 páginas com "gato" 1 vez.

🔴 fieldLen/avgFieldLen = tamanho relativo à média. Doc curto acima da média → score sobe. Doc longo acima da média → score cai.

BM25 é bom senso codificado em matemática. Bom pra: nomes, termos técnicos, códigos, IDs. Mas não entende sinônimos.

🟢 Busca Semântica: Embeddings

E se a pessoa busca por "animal que faz miau" mas o documento diz "gato"?

BM25 não acha. Mas embeddings sim.

Cada texto vira um vetor — uma lista de números que captura significado.

Exemplo visual

Texto Vetor (simplificado)
"gato" [0.2, 0.8, 0.1]
"cachorro" [0.3, 0.7, 0.2]
"carro" [0.9, 0.1, 0.3]
Visualização 3D de embeddings

"gato" e "cachorro" são mais próximos! "carro" está longe.

Espaço vetorial

  • Textos com significado parecido = setas na mesma direção
  • Textos com significado diferente = setas em direções diferentes

"Mesma direção" = ângulo pequeno entre elas.

Similaridade por Cosseno

Conexão com Geometria Analítica!

\[\cos(\theta) = \frac{\vec{A} \cdot \vec{B}}{|\vec{A}| \cdot |\vec{B}|}\]

  • ângulo = 0° → cosseno = 1 → idênticos
  • ângulo = 90° → cosseno = 0 → independentes
  • ângulo = 180° → cosseno = -1 → opostos

🟣 Busca Híbrida: o melhor dos dois mundos

  • BM25 acha termos exatos (nomes, códigos, IDs)
  • Embeddings acham significados (paráfrases, conceitos)

Por que não usar os dois?

RRF (Reciprocal Rank Fusion) — junta os rankings das duas buscas.

\[\text{RRF}(d) = \sum_{m \in \text{métodos}} \frac{1}{k + \text{rank}_m(d)}\]

Cada método ordena os documentos. O RRF combina as posições.

Cada método vê um lado. Juntos, veem mais.

📓 Demo prática: FAISS

Vamos ver isso funcionando de verdade no Colab!

  • Modelo: nomic-embed-text-v2-moe (256 dim, Matryoshka)
  • Vector store: FAISS (Facebook AI Similarity Search)
  • Agente: gemma4:e2b-it-qat com ferramenta de busca

📓 Colab

Para lembrar

  1. RAG = buscar antes de responder
  2. BM25 = busca lexical (IDF, frequência, saturação, tamanho)
  3. Embeddings = texto como vetores (similaridade por cosseno)
  4. Busca híbrida = BM25 + embeddings + RRF
  5. FAISS = vector store rápido e simples pra demo

"Embeddings transformam significado em geometria. RAG transforma geometria em respostas."