Vector DB
Vector DB é o componente que guarda embeddings e responde 'quais vetores estão mais próximos deste?' em milissegundos. É onde o ANN (HNSW, IVF) paga o custo da busca semântica.
O que é
Vector DB é um banco de dados especializado em armazenar vetores densos e responder consultas de vizinhança. A consulta típica é 'top-k vizinhos mais próximos deste vetor', e ela roda em latência baixa mesmo com milhões ou bilhões de vetores indexados.
Diferente de um banco relacional, o índice primário é a distância geométrica, não a chave primaria. A comparação por exato (termo, id) ainda existe, mas a busca principal usa algoritmos aproximados de vizinhos mais próximos (), que abrem mão do resultado exato em troca de velocidade.
ANN: HNSW e IVF
Dois algoritmos dominam o estado da prática. O HNSW () constrói um grafo em camadas: cada camada é um grafo navegável, e os vértices pulam de camada em camada seguindo os vizinhos mais próximos. Busca entra pela camada de cima, desce e converge. Latência excelente, uso de memória alto.
O IVF (Inverted File Index) particiona o espaço em células e guarda, por célula, os vetores que pertencem a ela. Na busca, comparamos o vetor de consulta com os centróides, escolhemos as células mais próximas, e só então comparamos com os vetores daquelas células. Menos memória que HNSW, latência ligeiramente maior. A maioria dos bancos usa IVF combinado com quantização (PQ, SQ) para reduzir ainda mais o custo.
Metadata e filtros
Vetor sozinho resolve pouco. Em produção, cada embedding vem com metadata: documento de origem, data, autor, categoria, tags, idioma, nível de acesso. A busca combina 'vizinhos mais próximos' com 'filtro de metadata'. Filtros cortam o espaço de busca antes do ANN rodar, então reduzem latência e melhoram precisão.
Dois padrões se destacam. Pré-filtro: aplica o filtro de metadata, e roda ANN sobre o subconjunto. Pós-filtro: roda ANN completo, e descarta o que não passa no filtro. Pré-filtro é melhor quando o filtro é restritivo; pós-filtro é melhor quando quase tudo passa.
Na prática
pgvector é a extensão vetorial do PostgreSQL: roda junto com o banco relacional e permite filtrar metadata na cláusula WHERE antes da busca. O exemplo cria a tabela com vetor de 1536 dimensões (tamanho típico de text-embedding-3-small), insere chunks e faz a busca top-5 com filtro de categoria.
-- criação
CREATE EXTENSION IF NOT EXISTS vector;
CREATE TABLE chunks (
id BIGSERIAL,
doc_id TEXT NOT NULL,
category TEXT NOT NULL,
content TEXT NOT NULL,
embedding vector(1536),
PRIMARY KEY (id)
);
CREATE INDEX chunks_embedding_hnsw
ON chunks USING hnsw (embedding vector_cosine_ops);
CREATE INDEX chunks_category_idx ON chunks (category);
-- inserção (chunks já embeddings calculados em outro passo)
INSERT INTO chunks (doc_id, category, content, embedding)
VALUES ($1, $2, $3, $4);
-- busca top-5 com filtro de metadata
SELECT id, doc_id, content,
1 - (embedding <=> $1::vector) AS score
FROM chunks
WHERE category = 'manual'
ORDER BY embedding <=> $1::vector
LIMIT 5;Pontos fortes
- busca por similaridade em escala: ANN entrega top-k em milissegundos com milhões de vetores
- filtro híbrido: combina vizinhança geométrica com WHERE de SQL ou filter nativo, então busca por espaço é alcançável
- opções para todo orçamento: pgvector economiza infra adicional; Pinecone/Qdrant/Weaviate entregam throughput dedicado
Limitações
- ANN é aproximado: ranking pode trocar vizinhos verdadeiros por vizinhos próximos; tuning de recall vs latência é trabalho contínuo
- memória alta: HNSW em alta dimensionalidade consome mais RAM do que o dado original
- consistência entre sharding e reindexação: recriar o índice durante tráfego real exige cuidado, e o downtime vira problema de produção
conexões no mapa
- EmbeddingsarmazenaVector DB
- Vector DBconsultaRetrieval
atualizado em 14/10/2026 · fontes para aprofundar · reportar erro
em outros domínios
- KMS & crypto - chaves e envelopescloudseccifrar o índice com chave gerenciada
Estude antes
Desbloqueia
teste o que entendeu
Carregando perguntas…