Por que você precisa de um banco de dados vetorial
Entenda as limitações da busca de similaridade por força bruta, como funcionam algoritmos aproximados de vizinhos mais próximos, como HNSW, e quais problemas os bancos de dados vetoriais resolvem em produção.
Por que você precisa de um banco de dados vetorial é uma aula grátis de AI Engineering Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Engineering Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Engineering Academy inclui 4 aulas no total.
Os limites da busca em memória
A busca semântica com NumPy funciona bem para pequenos conjuntos de documentos, mas tem um problema fundamental de escalabilidade: cada busca percorre todos os vetores. Com 1 milhão de documentos, cada consulta exige 1,5 bilhão de multiplicações de números de ponto flutuante, levando centenas de milissegundos. Pior ainda, todos os vetores precisam caber na RAM.
Sistemas de IA em produção precisam pesquisar milhões de documentos em menos de 50 ms. É isso que os bancos de dados vetoriais foram projetados para oferecer.
Busca aproximada pelo vizinho mais próximo
Os algoritmos de Approximate Nearest Neighbor (ANN) trocam uma pequena quantidade de precisão por ganhos expressivos de velocidade. Em vez de verificar cada vetor, os algoritmos ANN usam estruturas de Index inteligentes para ignorar grandes partes do espaço de busca.
Na prática, ANN retorna o verdadeiro vizinho mais próximo em mais de 95% das vezes e é de 100 a 1.000 vezes mais rápido que a busca exata. Para RAG, essa troca quase sempre vale a pena.
Como HNSW funciona
HNSW (Hierarchical Navigable Small World) é o principal algoritmo ANN usado por Pinecone, Weaviate, Qdrant e pgvector. Ele constrói um grafo de várias camadas, no qual cada nó se conecta aos seus vizinhos mais próximos. A busca começa na camada esparsa superior, navega até a região aproximada e depois desce até a camada densa inferior para obter precisão.
HNSW oferece excelente velocidade de consulta (logarítmica em relação ao tamanho do conjunto de dados) e alta revocação, mas exige a criação do Index antecipadamente.
O que os bancos de dados vetoriais acrescentam
Um banco de dados vetorial é mais do que um Index ANN. Ele também fornece:
- Filtragem de metadados — recupera apenas vetores em que
category='finance'oudate > '2024-01-01' - Armazenamento persistente — os dados sobrevivem a reinicializações e vão além da RAM
- Operações CRUD — insere, atualiza e exclui vetores individuais
- Isolamento por namespace — separa coleções para diferentes clientes ou ambientes
- Escalonamento horizontal — distribui milhões de vetores entre fragmentos
Filtragem de metadados na prática
A filtragem de metadados permite restringir a recuperação a um subconjunto relevante antes de executar a busca ANN. Por exemplo, em um sistema RAG multi-inquilino, você filtraria por tenant_id para que os usuários vejam apenas seus próprios documentos. Sem a filtragem de metadados, seria necessário um Index separado para cada inquilino.
Essa é uma das capacidades mais importantes que diferenciam os bancos de dados vetoriais de bibliotecas ANN simples, como FAISS.
# Conceptual example — Pinecone query with metadata filter
results = index.query(
vector=query_embedding,
top_k=5,
filter={
'tenant_id': {'$eq': 'acme_corp'},
'document_type': {'$in': ['invoice', 'contract']},
'date': {'$gte': '2024-01-01'}
},
include_metadata=True
)FAISS: biblioteca ANN de alto desempenho
FAISS (Facebook AI Similarity Search) é uma biblioteca ANN de código aberto da Meta — a opção mais rápida para buscas aceleradas por GPU. Ela não é um banco de dados completo: não oferece persistência, metadados nem serviço integrado.
FAISS é ideal quando você precisa do máximo de vazão em uma única máquina e gerencia a persistência por conta própria. Chroma, Weaviate e pgvector usam FAISS ou HNSW internamente.
import faiss
import numpy as np
d = 1536 # dimension
n = 10000 # number of vectors
# Build a flat (exact) index as a baseline
index = faiss.IndexFlatIP(d) # Inner Product = dot product
# Add random vectors (pretend these are embeddings)
vectors = np.random.randn(n, d).astype('float32')
faiss.normalize_L2(vectors) # normalize for cosine sim
index.add(vectors)
query = np.random.randn(1, d).astype('float32')
faiss.normalize_L2(query)
scores, indices = index.search(query, k=5)
print('Top 5 indices:', indices[0])
print('Top 5 scores:', scores[0])Bancos de dados vetoriais versus bancos de dados tradicionais
Bancos de dados SQL tradicionais, como PostgreSQL, são otimizados para consultas exatas e consultas por intervalo em dados estruturados. Eles não foram projetados para buscas de vizinhos mais próximos em alta dimensionalidade. Mesmo com a extensão pgvector, o PostgreSQL puro é mais lento que bancos de dados vetoriais criados especificamente para essa finalidade quando usado com grandes conjuntos de documentos.
No entanto, pgvector é uma excelente escolha quando sua aplicação já é executada no PostgreSQL e seu conjunto de documentos tem menos de alguns milhões de documentos, pois evita adicionar outro componente de infraestrutura.
Opções gerenciadas versus autogerenciadas
As opções de bancos de dados vetoriais se dividem em duas categorias:
- Gerenciadas (serverless): Pinecone, Weaviate Cloud — nenhuma infraestrutura para gerenciar, pagamento por consulta/armazenamento e escalabilidade imediata
- Autogerenciadas: Qdrant, Chroma, Weaviate de código aberto, pgvector — controle total e menor custo em grande escala, mas você gerencia cópias de segurança, atualizações e escalabilidade
Para projetos em estágio inicial, comece com um serviço gerenciado para avançar rapidamente. Avalie a hospedagem própria quando os custos mensais ultrapassarem US$ 200–300.
Tipos de Index: Flat, IVF e HNSW
Diferentes tipos de Index oferecem diferentes compromissos:
- Flat: busca exata, sem aproximação; lento em grande escala, mas sem perda de precisão — bom para avaliações de referência
- IVF (Inverted File): particiona os vetores em agrupamentos e pesquisa apenas os agrupamentos mais próximos — rápido, mas exige ajustar
nlistenprobe - HNSW: baseado em grafos, oferece o melhor equilíbrio entre revocação e velocidade para a maioria das cargas de trabalho; é o padrão na maioria dos bancos de dados de produção
Quantização para reduzir o uso de memória
A quantização de vetores comprime cada número de ponto flutuante de 32 bits de um vetor para menos bits, reduzindo significativamente o uso de memória ao custo de uma pequena perda de precisão:
- FP32: 1536 dimensões × 4 bytes = 6 KB por vetor
- FP16: 3 KB por vetor — compressão de 2x, perda de precisão insignificante
- INT8: 1,5 KB por vetor — compressão de 4x, queda de aproximadamente 1% na revocação
Com 10 milhões de vetores, a quantização INT8 reduz a memória de 60 GB para 15 GB, fazendo a diferença entre caber ou não na RAM.
Quando migrar do NumPy para um banco de dados vetorial
Considere mudar da busca do NumPy em memória para um banco de dados vetorial quando:
- Seu conjunto de documentos ultrapassar 50.000 documentos e a latência das consultas piorar
- Você precisar de filtragem de metadados (por data, usuário, categoria etc.)
- Você precisar de persistência que sobreviva às reinicializações da aplicação
- Vários serviços ou usuários precisarem compartilhar o mesmo Index
- Você precisar atualizar ou excluir documentos individuais sem recriar o Index inteiro
Verificação rápida
Teste sua compreensão dos conceitos de Engenharia de IA desta lição.
Recapitulação da lição
Nesta lição, você aprendeu: a busca por força bruta do NumPy não escala além de dezenas de milhares de documentos, HNSW permite buscas aproximadas rápidas pelo vizinho mais próximo ao percorrer um grafo hierárquico e bancos de dados vetoriais acrescentam filtragem de metadados, persistência e operações CRUD aos Indexes ANN. A seguir, vamos configurar o Pinecone, o banco de dados vetorial gerenciado mais popular, e Indexar nossos primeiros documentos.
Perguntas Frequentes
A aula “Por que você precisa de um banco de dados vetorial” é grátis?
Sim — o texto completo de “Por que você precisa de um banco de dados vetorial” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Engineering Academy, atualize para CoddyKit PRO. O curso de AI Engineering Academy inclui 4 aulas no total.
O que vou aprender em “Por que você precisa de um banco de dados vetorial”?
Entenda as limitações da busca de similaridade por força bruta, como funcionam algoritmos aproximados de vizinhos mais próximos, como HNSW, e quais problemas os bancos de dados vetoriais resolvem em… Você pratica AI Engineering Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar AI Engineering Academy?
Nenhuma experiência prévia é necessária. AI Engineering Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Por que você precisa de um banco de dados vetorial”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de AI Engineering Academy?
Sim. Cada aula de AI Engineering Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Por que você precisa de um banco de dados vetorial
- Primeiros passos com Pinecone
- pgvector: embeddings no PostgreSQL
- Escolhendo e avaliando armazenamentos vetoriais