Um bom ponto de partida para desenvolvedores de apps curiosos sobre IA: Embeddings
(bawolf.substack.com)Guia de uso de embeddings para desenvolvedores de apps
- Embeddings vetoriais são eficazes para medir similaridade entre diferentes entradas, por isso são adequados para recursos de busca e recomendação. Também funcionam bem em outros idiomas, como francês e japonês.
pgvectoré uma extensão do Postgres que permite armazenar e consultar embeddings, sendo poderosa por possibilitar a combinação da lógica em SQL com operações de embedding sem adicionar um novo serviço.- Diferentemente dos LLMs, usar embeddings dá uma sensação parecida com a de código determinístico tradicional.
Desenvolvimento de um projeto de busca e recomendação de ícones
- Após configurar o
pgvector, foi criada uma estratégia para codificar dados de ícones em vetores de embedding. - Uso do modelo
text-embedding-3-smallda OpenAI. - Medição da similaridade entre o termo de busca e o embedding de cada ícone com similaridade de cosseno.
- Combinação da busca por embeddings com lógica de negócio, como filtragem de conjuntos de ícones.
- Apresenta um exemplo de algoritmo de ranking que utiliza dados de cliques em ícones para um termo de busca.
- Uso da comparação de embeddings para recomendar ícones semelhantes ao ícone selecionado.
Resumo da abordagem de implementação
- Escolha de
pgvector/Postgres como banco de vetores. Há outras opções, como MongoDB. - Desenvolvimento em Typescript com uso de
drizzle-orm. Também há várias bibliotecas para outras linguagens e frameworks. - O app é hospedado na Neon. Também é possível usar serviços gerenciados de hospedagem de banco de dados, como
fly.ioe Supabase. - Uso do modelo de embeddings
text-embedding-3-smallda OpenAI. É possível escolher outros modelos no leaderboard do Hugging Face. - Embedding de atributos dos ícones com maior relevância para busca em pares chave-valor.
- Uso de similaridade de cosseno como função de distância. O
pgvectortambém oferece suporte al2 distanceeinner product. - Os resultados de busca são limitados aos 50 primeiros. Ao usar intervalo de distância, recomenda-se definir uma faixa ampla e usar junto com
limit.
Opinião do GN⁺
- Na maioria dos projetos, parece suficiente adicionar recursos vetoriais ao banco de dados existente com algo como
pgvector. A adoção de um banco vetorial separado parece necessária apenas em serviços de grande escala. - A grande vantagem é poder combinar naturalmente a busca por embeddings com lógica de negócio. Dá para aproveitar toda a força do SQL.
- A ideia de refletir dados de feedback dos usuários no algoritmo de ranking é muito boa. Parece permitir melhorar continuamente a precisão da busca.
- Em comparação com LLMs, serviços baseados em embeddings parecem ter um funcionamento mais claro e serem mais fáceis de depurar, o que torna sua aplicação em serviços reais muito mais simples.
- Como vários modelos de embedding open source estão disponíveis, mesmo quando é difícil desenvolver um modelo próprio ainda é possível aproveitar embeddings de alta qualidade com facilidade.
1 comentários
Opiniões do Hacker News
Resumo dos comentários do Hacker News
Facilidade de usar embeddings de documentos e busca por similaridade com modelos RAG
sentence-transformersefaiss, é possível implementar facilmente embeddings de documentos e busca por similaridadeEntendendo os conceitos básicos de embeddings
Falta de explicação detalhada sobre o processo de geração de embeddings
They're a bit of a black boxsobre o processo de geração de embeddings, sem entrar em detalhesA dificuldade de lidar com palavras homônimas
É possível usar embeddings sem um vector store
@do Numpy para obter o produto interno entre o vetor de consulta normalizado e a matriz de registrosComo executar a lógica de embeddings localmente
Possibilidade de usar embeddings na redação de documentação técnica
Como armazenar e usar embeddings
Falta de explicação de conceitos básicos para desenvolvedores iniciantes em AI