42 pontos por GN⁺ 2025-07-28 | 1 comentários | Compartilhar no WhatsApp

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 limit ou top_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

 
mhj5730 2025-07-29

É bom ver tantas reflexões sobre trabalhar com busca vetorial.