Tipos de embeddings vetoriais
- Embeddings de palavras: representam palavras em NLP e capturam relações semânticas entre elas. São usados em tradução de idiomas, similaridade entre palavras, análise de sentimento etc.
- Embeddings de frases: capturam o significado e o contexto de frases, sendo usados em recuperação de informação, classificação de texto, análise de sentimento etc.
- Embeddings de documentos: capturam o conteúdo de documentos como relatórios ou artigos, sendo usados em sistemas de recomendação, recuperação de informação, similaridade e classificação de documentos etc.
- Embeddings de grafos: representam nós e arestas de um grafo em um espaço vetorial, sendo usados em classificação de nós, detecção de comunidades, predição de links etc.
- Embeddings de imagens: representam diversos aspectos de imagens, sendo usados em sistemas de recomendação baseados em conteúdo, reconhecimento de imagens e objetos, sistemas de busca por imagem etc.
- Embeddings de produtos: representam produtos digitais ou físicos, sendo usados em sistemas de recomendação e classificação de produtos, busca de produtos etc.
- Embeddings de áudio: representam ritmo, tom, altura e outros aspectos de sinais de áudio, sendo usados em detecção de emoções, reconhecimento de fala, recomendação musical etc.
Como redes neurais geram embeddings
- Aprendizado de representação: redes neurais mapeiam dados de alta dimensionalidade para um espaço de baixa dimensionalidade, preservando características importantes.
- Processo de treinamento: redes neurais aprendem a transformar dados em embeddings significativos. Isso acontece durante o ajuste dos pesos e vieses dos neurônios.
- Exemplo: em uma rede neural para classificar avaliações de filmes como positivas ou negativas, embeddings de palavras são aprendidos. Palavras como "good" e "excellent" passam a ter embeddings semelhantes.
Como funcionam os embeddings vetoriais
- Espaço vetorial: objetos ou características são representados como pontos em um espaço vetorial multidimensional, e itens semelhantes ficam posicionados próximos uns dos outros.
- Medição de distância: distância euclidiana, similaridade de cosseno e outras medidas são usadas para quantificar a relação entre vetores.
- Exemplo: os vetores de "cat" e "dog" ficam mais próximos entre si do que os vetores de "cat" e "car".
Desenvolvimento com embeddings vetoriais
- Chatbots: respondem melhor às consultas dos usuários, geram respostas contextualmente relevantes e mantêm conversas consistentes.
- Motores de busca semântica: fornecem resultados com base em similaridade semântica, em vez de apenas correspondência de palavras-chave.
- Sistemas de classificação de texto: classificam documentos com base em sintaxe e palavras.
- Sistemas de recomendação: recomendam conteúdo com base na similaridade entre palavras-chave e descrições.
Como gerar embeddings vetoriais a partir de dados
- Coleta de dados: coletar vários tipos de dados, como texto, áudio, imagens e dados de séries temporais.
- Pré-processamento de dados: tratar os dados para torná-los adequados à análise, com tokenização, remoção de ruído, redimensionamento de imagens, normalização etc.
- Segmentação dos dados: dividir texto em frases ou palavras, imagens em segmentos e dados de séries temporais em intervalos.
- Vetorização: converter cada pedaço de dado em vetor. Dados de texto usam modelos de text embeddings da OpenAI, dados de imagem usam modelos CNN e dados de áudio usam espectrogramas etc.
Como armazenar embeddings vetoriais
- Banco de dados vetorial: usar um banco de dados capaz de armazenar e consultar dados vetoriais com eficiência.
- PostgreSQL: pode armazenar dados vetoriais junto com outros dados relacionais. Com a extensão pgvector, é possível armazenar e consultar vetores.
3 comentários
Assim como os modelos de linguagem, o tamanho dos vetores tem aumentado para melhorar a capacidade de capturar contexto e significado. No entanto, à medida que o tamanho dos vetores cresce, é consenso que, por causa da maldição da dimensionalidade, a distância euclidiana não é adequada como medida de similaridade. Por isso, a relação entre vetores (similaridade) costuma ser medida principalmente com a similaridade de cosseno.
É uma opinião que me lembra um artigo que li recentemente. Às vezes, dependendo do modelo, até a similaridade por cosseno pode não ter significado. "Is Cosine-Similarity of Embeddings Really About Similarity?" (2024)
O que são embeddings e por que eles são importantes
Um guia detalhado sobre embeddings na área de machine learning
Embeddings, um bom ponto de partida para desenvolvedores de aplicativos curiosos sobre IA