2 pontos por GN⁺ 2025-05-13 | 1 comentários | Compartilhar no WhatsApp
  • Embeddings oferecem potencial para avanços revolucionários na escrita técnica atualmente
  • Têm a característica de retornar um array numérico de dimensão fixa, independentemente do tamanho do texto de entrada
  • Esse array numérico torna possível a comparação matemática entre textos arbitrários
  • Embeddings calculam distâncias de acordo com o significado do texto em um espaço multidimensional, permitindo vários usos, como recomendações por relação, análise semântica e mais
  • No futuro, espera-se que sites de documentação técnica ampliem novos casos de uso em ferramentas e na comunidade ao disponibilizar dados de embeddings

Visão geral da tecnologia de embeddings baseada em machine learning

  • Na área de machine learning, ao contrário dos modelos de geração de texto, os embeddings têm potencial para causar um impacto revolucionário na escrita técnica
  • Nos últimos anos, o uso de embeddings se tornou muito mais acessível
  • Com embeddings, redatores técnicos podem realizar comparações e análises semânticas entre diferentes textos

Construindo uma intuição sobre embeddings

  • Embeddings recebem um texto como entrada (palavra, frase, vários documentos etc.) e retornam um array numérico de tamanho fixo
  • Independentemente do comprimento do texto de entrada, sempre é gerado um array de dados com o mesmo tamanho
  • Isso cria a possibilidade de comparação matemática até mesmo entre textos arbitrários de comprimentos diferentes

Como gerar embeddings

  • É possível gerar embeddings com apenas algumas linhas de código por meio dos principais provedores de serviço
  • O tamanho do array do embedding varia conforme o modelo usado; no caso do Gemini, são retornados 768 valores, e no caso do Voyage AI, 1024
  • Como o significado dos embeddings muda completamente dependendo do provedor ou do modelo, não há compatibilidade entre eles

Custo e impacto ambiental

  • A geração de embeddings em si não tem custo elevado
  • Estima-se que o processo consuma menos recursos computacionais do que modelos de geração de texto, embora sejam necessárias mais informações sobre o impacto ambiental

Critérios para escolher um modelo de embedding

  • O modelo mais adequado varia de acordo com a capacidade de suportar grandes volumes de dados de entrada
  • O voyage-3 da Voyage AI oferece o maior limite de entrada em 2024
  • É importante escolher o modelo de acordo com o objetivo de uso e as necessidades

O conceito de espaço multidimensional

  • Cada valor do array numérico do embedding corresponde a uma coordenada em um espaço multidimensional, e as características do texto são representadas por sua posição semântica nesse espaço
  • Por exemplo, operações como king - man + womanqueen mostram a possibilidade de representar relações semânticas
  • As características de cada dimensão no espaço de embeddings são, em sua maioria, obscuras e abstratas
  • Esse processo permite que a máquina aprenda significado e faça inferência semântica sobre texto

Comparação e armazenamento de embeddings

  • Os embeddings gerados são armazenados em um banco de dados ou similar para cada texto, como por exemplo cada página
  • É possível determinar a similaridade semântica calculando a distância matemática entre dois embeddings, usando álgebra linear
  • Com bibliotecas como NumPy e scikit-learn, o esforço para implementar fórmulas complexas é pequeno

Exemplos de aplicação de embeddings

  • Em sites de documentação técnica, embeddings são usados de forma eficaz em recursos de recomendação de páginas relacionadas
  • Depois de gerar embeddings para cada página, é possível recomendar documentos semanticamente relacionados entre páginas com alta similaridade numérica
  • Sempre que o conteúdo de uma página muda, basta atualizar o embedding, o que traz grande eficiência
  • Em aplicações reais na documentação do [Sphinx], foi confirmado um desempenho positivo

Comunidade e possibilidades de dados abertos

  • No futuro, sites de documentação poderão fornecer dados de embeddings por meio de REST APIs ou well-known URIs
  • Isso permitirá que a comunidade desenvolva diversas ferramentas e serviços de aplicação

Considerações finais

  • É interessante ter a oportunidade de relacionar o conceito de espaços com centenas de dimensões ao trabalho do dia a dia
  • Com a adoção de embeddings, é possível esperar avanços transformadores na manutenção de documentação e na expansão de funcionalidades

1 comentários

 
GN⁺ 2025-05-13
Comentários no Hacker News
  • Olá, gostaria de agradecer por você ter escrito este texto
    Informo que houve uma discussão parecida há 6 meses
    Dizer que “embeddings são subestimados” serviu para enfatizar que eles são uma ferramenta útil mais para redatores técnicos do que para quem trabalha com machine learning
    Reconheço que neste texto faltam detalhes sobre como exatamente usar embeddings na redação técnica
    Estou preparando projetos e posts de blog sobre o uso de embeddings
    Embeddings são importantes porque podem ajudar a resolver 3 problemas difíceis de resolver na redação técnica

    • Para o problema de os usuários não conseguirem encontrar facilmente a informação que querem, experimentei aplicar “semantic scrolling” como camada de UX para que as pessoas possam vivenciar embeddings publicamente
      Em vez de busca, é possível passear pelos clusters em uma estrutura de árvore com <details>/<summary>
      [1] é o ponto de partida, e [2] é a coleção completa (livros, filmes, música, animação etc.)
      Também compartilho os links

    • Seria bom estruturar o conteúdo para que o post pareça mais atraente para redatores técnicos do que para especialistas em machine learning
      Por exemplo, seria bom explicar com mais detalhes a parte de “descobrir conexões entre textos em uma escala antes impossível”
      Se os exemplos de aplicação vierem mais no começo, isso deve comunicar melhor a ideia aos leitores

    • Como exemplo de aplicação direta de embeddings à redação técnica, recomendo um artigo relacionado
      Forneço o link

    • Li este texto e fiquei curioso sobre como estava a qualidade dos resultados
      Mesmo sem chegar a evals como o pessoal de machine learning gosta, eu gostaria de saber se, em linhas gerais, os resultados pareceram razoáveis

    • Li o texto, mas não encontrei uma explicação do que é um “embedding”
      No terceiro parágrafo se fala sobre como usá-lo, mas falta uma definição do próprio embedding no começo

    • Para iniciantes, o texto parece básico demais
      Depois de ler, não obtive nenhuma informação nova nem insight
      Se ao menos tivesse mostrado um gostinho de um caso de uso central de embeddings, eu teria ficado mais animado para o próximo texto
      De todo modo, obrigado por compartilhar

  • Outra vantagem de embeddings e busca por embeddings é que dá para implementar no lado do cliente com pouca carga
    Modelos ONNX podem ser carregados e executados com transformer.js
    Também é possível criar um índice como hnsw e hospedá-lo estaticamente
    Eu mesmo fiz uma demo open source
    Basta representar o índice como um arquivo parquet consultável e consultar com duckdb
    Com Github Pages, isso pode ser feito de graça ou quase de graça

    • Poder fazer embeddings em JS no lado do cliente é uma descoberta nova para mim
      Parece que isso vai abrir novas aplicações para sites de documentação
      Passei a prestar atenção em Parquet e Polars por causa de um texto que li antes

    • Eu tinha curiosidade sobre esse tipo de implementação
      Tenho evitado adotar busca baseada em embeddings por preocupação com a latência
      Se o modelo ficar local e renderizar ali mesmo, queria saber como a qualidade se compara à da OpenAI/Google
      Gratuito/imediato é uma vantagem

    • Seria bom explicar em detalhes o que está acontecendo na demo
      Não estou entendendo bem o resultado

  • Eu gostaria que a parte “embeddings retornam sempre um array de números do mesmo tamanho, independentemente do tamanho do texto de entrada, então qualquer texto pode ser comparado matematicamente com qualquer outro” fosse explicada com mais clareza
    Funções de hash também produzem saídas do mesmo tamanho independentemente do tamanho da entrada, mas essa comparação matemática é totalmente diferente da comparação com embeddings
    É preciso enfatizar que a qualidade de um embedding é determinada pelo processo de treinamento
    Não existe “embedding universal” que permita comparações significativas para textos arbitrários

    • Agradeço o feedback e informo que estou lendo artigos relacionados, como Gecko, NV-Embed e Gemini Embedding, então pretendo revisar o texto para deixá-lo mais preciso
      Também compartilho os links
  • Embeddings, assim como hashes, comprimem entradas grandes em uma representação, mas, ao contrário de hashes, embeddings têm significado intrínseco
    Nesse caso, fico curioso se existe pesquisa sobre “quebrar” embeddings, gerando de volta um texto de significado parecido
    Também parece possível incluir, na avaliação do próximo token na saída de um LLM, a similaridade com embeddings ou mudanças de direção
    Assim como o autor mencionou operações entre vetores de embedding, imagino se seria possível aplicar uma “álgebra de significado” também a textos grandes como parágrafos inteiros ou livros
    Fico curioso se seria possível vetorizar um conceito central como “afinidade” e somá-lo a um texto existente

    • “Gerar de volta um texto semanticamente parecido a partir de embeddings” é chamado de embedding inversion ou Universal Zero-shot Embedding Inversion
      Também há artigos relacionados, e o uso de embeddings do CLIP em diffusion para imagens é conectado a isso

    • Embeddings, grosso modo, cumprem um papel semelhante ao de fuzzy hashes

    • Não sou especialista da área, mas há também pesquisas sobre inference-time intervention que podem ser relacionadas
      Anexo um link para um artigo

  • A frase “é possível alcançar avanços de altíssimo nível na redação técnica usando embeddings” não é concreta o suficiente e, como leitor, não me ajuda
    Em geral, nunca senti necessidade de um widget de “páginas semelhantes” ao ler ou escrever documentação técnica

    • A tese está no segundo parágrafo
      Embeddings permitem que redatores técnicos encontrem conexões entre textos de formas antes impossíveis de descobrir
      Reconheço que o post não conseguiu mostrar essa tese na prática com exemplos
      Acho que embeddings podem resolver vários problemas difíceis da redação técnica, e pretendo tratar de exemplos diretos depois

    • Deixando de lado documentos relacionados, documentação técnica se beneficia muito de uma busca excelente
      Embeddings são especialmente úteis para “fuzzy matching” e conseguem encontrar, na prática, a funcionalidade desejada mesmo quando o usuário não lembra exatamente das palavras
      Uma abordagem híbrida, misturando busca por palavra-chave e busca por similaridade vetorial, é eficiente
      Gostaria de ver mais exemplos concretos de uso

  • A analogia com um mapa bidimensional é um bom ponto de partida para facilitar o entendimento, mas embeddings operam em centenas ou milhares de dimensões
    Também não está claro que significado cada dimensão tem, e o exemplo ‘king - man + woman = queen’ não acontece porque existe uma “dimensão de gênero”, mas porque existe uma “direção específica”
    Em n dimensões, existem exponencialmente muitas direções quase ortogonais
    É por isso que é possível acomodar bilhões de conceitos em um espaço de 1000 dimensões

    • Em artigos reais do arXiv, se você colocar 1000 palavras masculinas em embeddings, não vai encontrar com precisão 950 palavras femininas
      Cerca de 20 até se agrupam visivelmente, mas, como há muitas dimensões, ao projetar qualquer coisa pode parecer “correta”
      Quando N cresce, os resultados tendem a ficar ambíguos
      Embeddings baseados em transformers consideram o contexto, então são muito superiores aos antigos word vectors
      Mesmo na busca em texto completo, embeddings sensíveis a contexto resolvem de forma eficaz problemas da recuperação de informação que vinham sendo tentados havia 50 anos, como o tratamento de sinônimos

    • Agradeço a crítica detalhada e reconheço que foi um erro conceitual explicar como se uma dimensão única mapeasse um conceito um a um
      Vou refinar a explicação junto com o funcionamento da similaridade por cosseno e revisar o post
      Sinto que a qualidade do meu raciocínio melhorou graças ao comentário

    • Enfatizo que a expressão correta não é “dimensões quase ortogonais”, e sim “direções quase ortogonais”

    • Tenho curiosidade sobre a Johnson-Lindenstrauss lemma e, junto com isso, sobre a precisão da preservação de distâncias e manutenção da dimensionalidade em embeddings
      Para preservar distâncias com erro de 10%, seriam necessárias cerca de 18 mil dimensões
      Também indico um link da Wikipédia

    • Aponto que, mais precisamente, não se trata de “dimensões quase ortogonais”, e sim de “direções quase ortogonais”

    • Se dimensões individuais correspondessem a conceitos significativos, por exemplo uma dimensão de gênero, seria fácil perceber que a diferença entre “king” e “queen” existe apenas numa única dimensão
      Se cada conceito tivesse uma dimensão diferente, daria para rastrear intuitivamente os conceitos por essa diferença

    • Apresento um bom artigo sobre o conceito de vetores quase ortogonais
      Compartilho o link

    • Pergunto se o princípio seria tratar cada dimensão como binária e assim codificar 2^n direções, ou se estou entendendo errado

    • Se o gênero fosse representado por duas dimensões, então não seria impossível distinguir entre “o gênero é diferente” e “cada dimensão tem um componente diferente”?

    • Mesmo que não seja possível visualizar, ainda é possível calcular a distância euclidiana
      Também dá para reduzir a dimensionalidade com ferramentas como UMAP

    • Sobre o exemplo king-man+woman=queen, a operação de soma vetorial pode não funcionar sempre como desejado
      O significado pode ser limitado apenas pela direção e magnitude de um vetor único, e, como a rede aprende comportamento não linear, o sentido pode mudar dependendo do ponto de partida
      Há limites para generalizar operações vetoriais simples sem evidência experimental

  • Embeddings são um novo salto em direção à universalidade, como o alfabeto ou os números
    Compartilho um link

  • Faço uma pergunta aos especialistas
    Se embeddings capturam o conteúdo, isto é, o próprio significado, em vetores, será que existe um vetor separado só para “estilo”?
    Acho que, se embeddings pudessem ser usados facilmente também em pesquisas que analisam escrita pelo estilo, isso seria um grande avanço

    • Se houver um dataset com estilos parecidos, é possível treinar e criar embeddings voltados apenas para estilo
  • Concordo totalmente com o uso de embeddings
    Ao desenvolver algo chamado Recallify, passei a conseguir reencontrar rapidamente até informações raras que havia lido online
    Mesmo usando apenas 1024 dimensões, ele conecta conteúdos de forma eficaz por similaridade semântica, e não por palavras-chave
    É uma ferramenta revolucionária para transformar conceitos vagos em insights acionáveis
    Também estou recrutando beta testers para um app iOS

  • Não sei se no artigo apareceu um caso de uso direto para redatores técnicos
    Embeddings são muito importantes em LLMs, busca semântica etc., mas faltou explicar a utilidade direta que o autor sugere

    • Não apareceu um exemplo de aplicação direta
      Eu pretendia tratar de vários usos de embeddings em um post e projeto futuros, mas isso atrasou recentemente por causa da criação de um bebê de 3 meses
      Estou preparando projetos e textos relacionados para depois, e embeddings ajudam a resolver 3 desafios importantes na redação técnica

    • Os usos práticos de embeddings são busca semântica, classificação e clustering
      Na área de busca, há um grande avanço a cada 10 anos
      Se você gerar embeddings e alimentá-los em algoritmos clássicos de ML, dá para classificar com eficácia
      A abordagem Bag-of-Words agora entrega resultados insuficientes, e, com embeddings + algoritmos simples, já é possível obter bons clusters
      Para encontrar vetores próximos, nem é tanto álgebra linear; um produto escalar já basta

    • Seria muito útil usar embeddings para buscar semanticamente artigos e literatura
      Porém, o próprio embedding não inclui informação de fonte, então, em buscas RAG, só dá para ligar à página de origem
      Questões de citação e verificação continuam existindo
      Modelos de citação baseados em grafos, como GraphRAG, são mais avançados

    • Criei um classificador de feeds RSS com busca semântica baseada em embeddings
      Também é possível classificar com base em categorias arbitrárias
      No momento, o serviço foi encerrado porque saí da AWS