O que aprendi em 2 anos trabalhando em uma empresa de Vector DB
(leoniemonigatti.com)Enquanto trabalhava na Weaviate, uma Vector DB, organizei 37 lições aprendidas com experiência real em produção
↳ Da utilidade do BM25 e da busca por palavras-chave até busca vetorial, embeddings e busca híbrida
1. BM25 é uma baseline poderosa em busca
- Em vez de começar com busca vetorial complexa, o mais prático é primeiro aplicar busca simples por palavras-chave, como BM25, verificar o desempenho e depois expandir gradualmente para busca vetorial
2. Busca vetorial é aproximada (Approximate), não exata (Exact)
- Em dados em grande escala, usa-se algoritmos de vizinhos mais próximos aproximados (ANN) (HNSW, IVF, ScaNN etc.) para ganhar velocidade, mas com algum compromisso em precisão
- A indexação vetorial é o elemento central que garante a velocidade em larga escala de uma vector DB
3. Uma vector DB não armazena só embeddings
- Também armazena os dados originais (texto etc.) e metadados, permitindo filtragem por metadados, busca por palavras-chave, busca híbrida etc.
4. O principal uso de uma vector DB não é IA generativa, e sim ‘busca’
- Colocar contexto em um LLM também é, em essência, ‘busca’, e vector DBs e LLMs formam uma combinação muito boa
5. É preciso definir explicitamente a quantidade de resultados da busca
- Se você não definir o parâmetro
limitoutop_k, todos os resultados mais próximos da consulta serão ordenados e retornados
6. Existem vários tipos de embeddings
- Além de vetores dense (densos), também existem diferentes formatos de vetores de embedding, como sparse (esparsos), binary (binários) e multi-vector
7. Benchmarks para escolher modelos de embedding
- MTEB cobre várias tarefas de embedding (classificação, clustering, busca etc.)
- Para benchmarks especializados em recuperação de informação, vale consultar o BEIR
8. A maioria dos modelos do MTEB é voltada só para inglês
- Em ambientes multilíngues ou não ingleses, recomenda-se usar o benchmark MMTEB
9. A história dos embeddings: Static vs Contextual
- Embeddings estáticos, como Word2Vec e GloVe, têm representação fixa por palavra
- Embeddings contextuais, como BERT, geram vetores dinamicamente conforme o contexto
- Embeddings estáticos podem ser consultados rapidamente em ambientes com restrição de recursos
10. Diferença entre sparse vector e sparse embedding
- sparse vector: gerado por métodos estatísticos como TF-IDF/BM25 ou por abordagens neurais (sparse embedding, SPLADE etc.)
- Todo sparse embedding é um sparse vector, mas nem todo sparse vector é um sparse embedding
11. É possível fazer embeddings de vários tipos de dados além de texto
- Imagens, PDFs (convertidos em imagem), grafos etc. também podem ser embeddados para busca vetorial multimodal
12. Dimensionalidade dos embeddings e custo de armazenamento
- Quanto maior o número de dimensões, maior também o custo de storage
- Para usos simples, como “chatbot”, modelos de alta dimensionalidade podem ser desnecessários
- Também é possível reduzir a dimensionalidade com Matryoshka Representation Learning
13. O tutorial “Chat with your docs” é o hello world da IA generativa
14. Modelos de embedding precisam ser chamados repetidamente
- Não só na ingestão de documentos (ingestion), mas também em consultas, ao adicionar/modificar documentos e ao trocar o modelo de embedding, é preciso fazer embedding e indexação
15. Similaridade vetorial e relevância real podem ser diferentes
- Frases parecidas (ex.: “como consertar uma torneira” vs “onde comprar uma torneira”) podem ter baixa relevância prática entre si
16. Cosine similarity e cosine distance são coisas diferentes
- Similaridade e distância têm uma relação matemática inversa
- Para vetores idênticos, a similaridade é 1 e a distância é 0
17. Com vetores normalizados, cosine similarity e dot product são iguais
- Se os vetores estiverem normalizados, o dot product é computacionalmente mais eficiente
18. O R de RAG não é ‘vector search’, e sim ‘retrieval’
- Em RAG, há várias formas de retrieval (palavra-chave, vetor, filtros etc.)
19. Busca vetorial é apenas uma das ferramentas de busca
- O importante é combinar vários métodos, como busca por palavras-chave, filtragem e reranking (híbrido)
20. Aplicação adequada de busca por palavra-chave/vetorial
- Correspondência semântica/sinônimos pede busca vetorial; palavras-chave exatas pedem busca por palavra-chave; quando ambos são necessários, use busca híbrida e ajuste de peso com
alpha
21. O significado de busca híbrida
- Normalmente indica a combinação de palavra-chave + vetor, mas combinações com outras formas de busca, como metadados, também são chamadas de ‘híbridas’
22. Filtragem nem sempre aumenta a velocidade
- Por exemplo, a conectividade do grafo HNSW pode ser quebrada, e uma filtragem posterior pode acabar sem resultados
- Cada vector DB tem técnicas de otimização diferentes para isso
23. A utilidade de pipelines de busca em duas etapas
- Não só em sistemas de recomendação, mas também em RAG, é possível extrair um conjunto inicial de candidatos e depois melhorar a qualidade com um reranking mais forte na segunda etapa
24. Diferença entre busca vetorial e reranking
- Busca vetorial retorna alguns resultados a partir de todo o banco; reranking reordena o conjunto de resultados recebido
25. A dificuldade de escolher o tamanho do chunk para embedding
- Se for pequeno demais, perde-se contexto; se for grande demais, o significado se dilui
- Também é possível vetorizar o documento inteiro com mean pooling etc., mas a informação pode se diluir (como um pôster feito pela soma de todos os frames de um filme)
26. Diferença entre bibliotecas de indexação vetorial e vector DBs
- Ambas são rápidas, mas vector DBs também oferecem durabilidade, CRUD, filtros/híbrido e outros recursos de gerenciamento de dados
27. Mesmo com a expansão do contexto dos LLMs, o RAG continua evoluindo
- Sempre que surgem LLMs de contexto longo, aparece o debate de que “RAG morreu”, mas na prática ele continua necessário
28. Com quantização vetorial, é possível reduzir 97% da informação e manter a busca
- Usando binary quantization etc., é possível reduzir o storage em 32x (por exemplo, de float de 32 bits para 1 bit)
29. Busca vetorial não é robusta a erros de digitação
- Mesmo em grandes corpora de texto, nem todos os typos ficam refletidos; só alguns são cobertos
30. Há várias métricas para avaliar a qualidade de busca
- Métricas baseadas em ranking, como NDCG@k, e métricas simples, como Precision/Recall, também podem ser eficazes dependendo do contexto
31. Exemplo prático do trade-off entre Precision e Recall
- Explicado com casos extremos, como retornar apenas um resultado (Precision ↑/Recall ↓) ou retornar todos os resultados (Recall ↑/Precision ↓)
32. Métricas que refletem a ordem dos resultados de busca
- Precision/Recall não refletem a ordem; são necessárias métricas que levem isso em conta, como MRR@k, MAP@k, NDCG@k
33. O impacto do tokenizador
- Não só BPE: o tokenizador também afeta a qualidade de busca por palavra-chave/híbrida
34. Out-of-domain e out-of-vocabulary são coisas diferentes
- OOV pode ser resolvido com tokenizadores inteligentes, mas em out-of-domain o embedding em si pode não ter significado
35. A necessidade de otimização de consultas
- Assim como na busca por palavra-chave, a busca vetorial também exige o hábito de otimizar a entrada da consulta
36. O paradigma depois da busca vetorial
- Busca por palavra-chave → busca vetorial → retrieval baseado em reasoning de LLMs
37. Recuperação de informação (retrieval) é hoje uma das áreas mais ‘quentes’
- Junto com os LLMs, encontrar a ‘melhor informação’ para fornecer ao LLM é a tarefa mais central e importante
1 comentários
É bom ver tantas reflexões sobre trabalhar com busca vetorial.