E quando isso acontece, ele simplesmente piora. Mais lento, menos relevante e com resultados estranhos. Já passou por isso? 👀
Eu achava que o problema era o embedding, o modelo ou até o índice (HNSW, etc.). Mas não é.
Depois de ler o artigo "Filtered Approximate Nearest Neighbor Search in Vector Databases" (2026), ficou claro:
"O problema não é IA. É banco de dados."
Quando você faz uma busca por similaridade combinada com filtro - como "documentos parecidos dos últimos 2 anos" ou "produtos similares com preço menor que 100" - você entra em um cenário muito mais difícil.
Isso acontece porque entra um fator crítico: quão restritivo é o filtro.
Se apenas 1% dos dados passam no filtro:
- O algoritmo não encontra candidatos suficientes
- O sistema começa a se perder
- O resultado piora
A parte contra-intuitiva
👉 O melhor índice nem sempre é o melhor.
HNSW pode falhar, enquanto IVFFlat pode performar melhor - o oposto do que muita gente acredita.
O ponto principal é que nem todo sistema sabe lidar bem com isso.
O Milvus se destaca porque é adaptativo. Ele usa busca rápida quando pode, usa busca exata quando precisa e combina essas estratégias para manter qualidade mesmo com filtros restritivos. Em outras palavras, ele se ajusta à query.
Já o pgvector é simples e integra perfeitamente com SQL, o que é ótimo para muitos cenários. Porém, ele pode escolher estratégias erradas, não se adapta dinamicamente e tende a perder performance quando há filtros mais fortes.
Resumo brutalmente honesto
"Não importa só o índice. Importa quem decide como executar a busca."
Se o seu sistema piora quando você adiciona filtro, provavelmente você não tem um problema de embedding - você tem um problema de execução.
💬 Já viu isso acontecer na prática?