Conteúdo da trilha
8 minNarração em inglês, legenda em portuguêsPodcast (RSS)
Capítulos
  1. 0:00Abertura
  2. 0:46A ideia
  3. 1:14Como funciona
  4. 2:03O que ele capta
  5. 2:42Onde ele engana
  6. 3:58Um desafio
  7. 4:45Onde eles aparecem
  8. 5:54Experimente
  9. 6:46Em produção
  10. 7:35Fechamento
Transcrição

Abertura

Uma central de ajuda tinha uma busca por palavra-chave. Um cliente digitou: não consigo entrar na minha conta. Zero resultados.

O artigo certo se chamava: como redefinir sua senha. Nenhuma palavra em comum. O mesmo assunto.

Então o time trocou a busca para embeddings, e aquela pergunta passou a achar o artigo certo. Duas semanas depois, um bug novo. Quem buscava cancelar assinatura recebia, em primeiro lugar: como assinar o plano anual.

Assunto parecido, intenção oposta. Esses dois casos mostram exatamente o que os embeddings captam, e onde eles enganam. E no fim desta aula, você vai saber quando confiar neles, e quando usar outra coisa.

A ideia

Um embedding é uma lista de números, um vetor, que representa o significado de um texto. Um modelo de embedding foi treinado para que textos com significado parecido virem vetores próximos uns dos outros.

Imagine um mapa enorme. Cada texto ganha um ponto nele. Redefinir senha e não consigo entrar na conta caem na mesma rua. Prazo de entrega por região cai num bairro completamente diferente.

Como funciona

Você começa com dois textos. A pergunta de um cliente e um artigo de ajuda, por exemplo.

O mesmo modelo de embedding processa os dois.

Cada texto vira um vetor, com centenas ou milhares de dimensões.

Um cálculo simples, normalmente a similaridade de cosseno, compara os dois vetores.

E o resultado diz o quão próximos estão os significados. Os significados, não as palavras.

Uma regra que muita gente aprende do jeito difícil. A pergunta e os documentos precisam passar pelo mesmo modelo. Cada modelo desenha um mapa diferente. Comparar um vetor de um modelo com vetores de outro é como comparar um endereço com o mapa de outro planeta. Então, se trocar o modelo de embedding, reconstrua o índice inteiro.

O que ele capta

Então, o que a similaridade capta bem? Sinônimos e paráfrases. Entrar na minha conta fica perto de fazer login, e de redefinir senha.

Idiomas diferentes, se o modelo for multilíngue. Reembolso fica perto de refund.

E o assunto geral. Textos sobre o mesmo tema se agrupam.

No atendimento brasileiro, isso aparece o tempo todo. Pix não caiu e transferência não creditada quase não têm palavras em comum. Elas falam da mesma dor. O embedding pega isso. A busca por palavra-chave sozinha, não.

Onde ele engana

Agora, onde ele engana. Negação e intenção. Cancelar assinatura e assinar um plano dividem o assunto, e o vetor vê o assunto primeiro.

Números e códigos. Pedido 4521 e pedido 4512 ficam quase idênticos. O vetor vê: isso é um número de pedido. Para identificadores, CNPJ e códigos de rastreio, filtre no banco de dados. Não por similaridade.

Termos raros do seu domínio. Siglas internas e nomes de produto podem ser desconhecidos para o modelo.

E textos longos demais. Um documento de vinte páginas vira um único vetor, e o significado de cada trecho se dilui. Por isso os documentos são divididos em pedaços antes de virar embedding.

Esse último é a armadilha clássica de quem está começando. O time transforma uma política de quarenta páginas num vetor só. Uma pergunta sobre prazo de troca de eletrônicos acerta um bolo que mistura férias, reembolso, devolução e código de ética. A similaridade pode até ser alta. Mas o trecho útil não está isolado. A divisão em pedaços existe para que cada vetor represente um assunto.

Um desafio

Uma pergunta para você. De volta à central de ajuda. Um cliente busca cancelar assinatura, e o primeiro resultado é como assinar o plano anual. O índice está quebrado? Qual é a leitura certa desse ranking?

O índice está bem. O embedding fez o trabalho dele. Agrupou o assunto assinatura. A intenção é que saiu invertida. Para desempatar, você precisa de um sinal além da similaridade. Palavra-chave, um filtro, reranking ou um classificador.

E trocar por um modelo melhor em português também não resolve. O mesmo acontece em inglês, com cancel e subscribe. O modelo pode mexer um pouco na ordem. O limite de intenção continua.

Onde eles aparecem

Então, onde os embeddings aparecem na prática? Busca semântica. Compare a pergunta com pedaços de documentos e pegue os mais próximos.

Busca para geração, o RAG. Use essa busca para escolher o que entra no contexto do modelo. É a próxima aula.

Agrupamento. Junte tickets ou feedbacks parecidos, sem rotular nada antes.

Roteamento barato. Compare a mensagem com exemplos de cada rota. Mas cuidado com empate. Uma mensagem como fui cobrado duas vezes pelo pedido 4521 fica bem entre cobrança e pedidos. Abaixo de um limite, mande para um classificador ou para uma pessoa, em vez de forçar o primeiro lugar.

E cache semântico. Reaproveite a resposta de uma pergunta muito parecida com uma já respondida. Ele herda a mesma armadilha. Como cancelo fica perto de como assino. Com um limite frouxo, o cache entrega a resposta errada. Então trate o limite como parte do contrato, e teste com casos de intenção oposta.

Experimente

Na página tem um experimento que roda no seu notebook, sem chave de API, com um modelo multilíngue pequeno e aberto. Você compara uma pergunta com quatro artigos de ajuda e imprime as notas.

Comece com não consigo entrar na minha conta, e veja redefinir senha sair em primeiro.

Depois troque a pergunta para quero cancelar minha assinatura, e veja onde cai o artigo do plano anual. Por fim, teste pedido 4521 contra pedido 4512. Os números vão mostrar, sozinhos, tudo o que esta aula explicou.

E um aviso. As notas que você vê são deste modelo. Não copie o limite de outra pessoa da internet como se fosse sagrado. Meça os seus próprios pares. Os que devem casar, e os que não podem casar.

Em produção

Então, o que muda nos seus desenhos? Busca só com embedding raramente basta. Combinar com busca por palavra-chave é um padrão chamado hybrid search. Lembra do Pix não caiu? Só com embedding, o artigo certo ficava em quinto. Ligar a palavra-chave levou ele para primeiro, porque Pix é um termo raro e valioso que o seu domínio precisa acertar.

Reordenar os primeiros resultados com um modelo se chama reranking.

O jeito de cortar os documentos em pedaços muda a qualidade da busca tanto quanto o modelo.

E identificadores, datas e valores ganham filtro exato no banco. Tire o número do pedido da pergunta, filtre por ele, e use similaridade só no texto livre que sobra.

Fechamento

Então, a ideia para levar. Embeddings colocam o significado num mapa, e por isso acham o artigo de senha sem nenhuma palavra em comum. Mas um mapa mostra proximidade, não direção. Cancelar e assinar são vizinhos, e dois números de pedido parecem gêmeos. Use significado onde significado importa, e filtro exato no resto.

Na próxima aula, a gente coloca os embeddings para trabalhar no padrão que ancora o modelo nos seus próprios documentos: o RAG. Até lá.

Fundamento

Embeddings

Embeddings

Embeddings é um fundamento de engenharia de IA para quem trabalha com LLMs. Texto virando vetor: o que a similaridade captura e onde ela engana.

Elemento
07/13
Nível
Iniciante
Leitura
4 min
Atualizado
Nesta página 5
  1. 01A situação
  2. 02O conceito
  3. 03Experimente
  4. 04O que isso muda
  5. 05Teste seu entendimento
  6. ··Perguntas rápidas

A situação

A busca da central de ajuda era por palavra-chave. O cliente digitava “não consigo entrar na minha conta” e recebia zero resultados, porque o artigo certo se chamava “Como redefinir sua senha”. Nenhuma palavra em comum, mesmo assunto.

O time trocou a busca por embeddings. A pergunta passou a achar o artigo certo. Duas semanas depois, chegou outro bug: quem buscava “cancelar assinatura” recebia, em primeiro lugar, o artigo “Como assinar o plano anual”. Parecido no assunto, oposto na intenção.

Os dois casos mostram o que embeddings capturam e onde eles enganam.

O conceito

Um embedding é uma lista de números (um vetor) que representa o sentido de um texto. Um modelo de embedding foi treinado para que textos com sentido parecido virem vetores próximos.

flowchart LR
  T1(["1. Texto A"]):::io --> E(["2. Modelo de embedding"]):::llm
  T2(["1. Texto B"]):::io --> E
  E --> V1["3. Vetor A"]:::tool
  E --> V2["3. Vetor B"]:::tool
  V1 --> S{"4. Similaridade"}
  V2 --> S
  S --> R(["5. Quão parecidos são"]):::io
  1. Você tem dois textos: uma pergunta e um documento, por exemplo.
  2. O mesmo modelo de embedding processa os dois.
  3. Cada texto vira um vetor com centenas ou milhares de dimensões.
  4. Uma conta simples, geralmente a similaridade de cosseno, compara os vetores.
  5. O resultado diz quão perto estão os sentidos, não as palavras.

O modelo de pergunta e o modelo de documento têm que ser o mesmo, ou um par treinado para trabalhar junto. Misturar um embedding de um provedor com outro de um segundo provedor produz números que não significam proximidade. Se você troca o modelo, reconstrói o índice inteiro.

O que a similaridade captura

  • Sinônimos e paráfrases. “Entrar na conta” fica perto de “fazer login” e de “redefinir senha”.
  • Idiomas diferentes, com modelos multilíngues. “Reembolso” fica perto de “refund”.
  • Assunto geral. Textos sobre o mesmo tema se agrupam.

No Brasil isso aparece o tempo todo no atendimento. “Pix não caiu” e “transferência não creditada” quase não compartilham palavras e falam da mesma dor. Embedding pega esse caso. Palavra-chave sozinha não pega.

Onde ela engana

  • Negação e intenção. “Cancelar assinatura” e “assinar plano” falam do mesmo assunto, e o vetor vê isso primeiro.
  • Números e códigos. “Pedido 4521” e “pedido 4512” ficam quase iguais. Para identificadores, use busca exata.
  • Termos raros do seu domínio. Siglas internas e nomes de produto podem ser desconhecidos para o modelo.
  • Textos longos demais. Um documento de 20 páginas vira um vetor só, e o sentido de cada trecho se dilui. Por isso documentos são quebrados em pedaços (chunking) antes de virar embedding.

CNPJ, número de NF-e e código de rastreio são o caso extremo dos números. A diferença entre dois CNPJs está em poucos dígitos; o vetor enxerga “é um CNPJ” e os acha parecidos. Filtro no banco, não similaridade.

A armadilha de quem começa é embeddar o PDF inteiro da política como um vetor só. A pergunta “qual o prazo de troca de eletrônicos?” bate num blob que mistura férias, reembolso, troca e código de ética. O número de similaridade até pode ser alto. O trecho útil não está isolado.

Checagem +20 XP de primeiraUm cliente busca 'cancelar assinatura' e o primeiro resultado é 'Como assinar o plano anual'. Qual é a leitura certa do ranking?

Onde embeddings aparecem

Uso Como
Busca semântica Compara a pergunta com os pedaços de documento e pega os mais próximos
RAG Usa a busca semântica para escolher o que entra no contexto do modelo
Agrupamento Junta tickets ou feedbacks parecidos sem rótulo prévio
Roteamento barato Compara a mensagem com exemplos de cada rota
Cache semântico Reaproveita a resposta de uma pergunta muito parecida com outra já respondida

Cache semântico herda a mesma armadilha. “Como eu cancelo?” perto de “Como eu assino?” pode devolver a resposta errada se o limiar de similaridade for frouxo. Trate o limiar como parte do contrato, e meça com casos de intenção oposta.

Experimente

Este experimento roda local, sem chave de API, com um modelo aberto e multilíngue: pip install sentence-transformers.

from sentence_transformers import SentenceTransformer, util

model = SentenceTransformer("sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2")

query = "não consigo entrar na minha conta"
docs = [
    "Como redefinir sua senha",
    "Como cancelar sua assinatura",
    "Como assinar o plano anual",
    "Prazo de entrega por região",
]

scores = util.cos_sim(model.encode(query), model.encode(docs))[0]
for doc, score in sorted(zip(docs, scores), key=lambda x: -x[1]):
    print(f"{score:.2f}  {doc}")

Depois troque a pergunta por “quero cancelar minha assinatura” e veja onde “Como assinar o plano anual” aparece. Por fim, teste “pedido 4521” contra “pedido 4512”. Os números vão mostrar sozinhos o que este texto explicou.

Os valores de cosseno que você vir são deste modelo, neste hardware. Não copie o 0,73 de alguém na internet como limiar sagrado. Meça os seus pares: os que devem coincidir e os que não devem.

Checagem +20 XP de primeiraVocê testou 'pedido 4521' contra 'pedido 4512' e a similaridade veio altíssima. O produto precisa achar o pedido certo. Qual busca entra na frente?

O que isso muda

  • Busca só por embedding raramente basta. Juntar com busca por palavra-chave é o padrão Busca Híbrida, e reordenar os resultados com um modelo é a Reordenação (reranking).
  • O tamanho e o recorte dos pedaços mudam a qualidade da busca tanto quanto o modelo de embedding. Veja Chunking Contextual.
  • Para identificadores, datas e valores, use filtro exato no banco, não similaridade.
  • Antes de montar RAG, confirme que você precisa: se o conteúdo cabe no contexto, mandar direto pode ser mais simples. Esse é o smell RAG Desnecessário.

Teste seu entendimento

Checagem +20 XP de primeiraA política de troca tem 40 páginas. O time gerou um embedding só para o PDF inteiro. Perguntas sobre eletrônicos devolvem um score alto e um trecho inútil. O que quebrou?

Checagem +20 XP de primeiraVocê troca o modelo de embedding e, no dia seguinte, a busca devolve artigos aleatórios. O índice antigo continuou no ar. Qual é a causa mais provável?

Checagem +20 XP de primeiraUm roteador barato compara a mensagem com três exemplos: fatura, pedido, outro. 'Fui cobrado duas vezes no cartão do pedido 4521' fica quase empatado entre fatura e pedido. O que você faz?

Checagem +20 XP de primeiraO artigo certo para 'Pix não caiu' só aparece quando a busca híbrida está ligada. Só embedding deixa o artigo na quinta posição. O que a palavra-chave está fazendo?

Perguntas rápidas

O que é Embeddings?

Embeddings é um fundamento de engenharia de IA para quem trabalha com LLMs. Texto virando vetor: o que a similaridade captura e onde ela engana.

Para ir além

Relações

Aparece nas trilhas 1
Buscar