O que é pgvector?
O pgvector acrescenta ao PostgreSQL um tipo de dado vetorial e busca por similaridade. Você guarda os embeddings em uma coluna comum de uma tabela e os consulta com SQL, fazendo joins com o resto dos seus dados e filtrando com cláusulas WHERE normais, dentro das mesmas transações.
Sem índice, ele faz busca exata. Para ganhar velocidade, oferece dois índices aproximados: HNSW (um grafo em camadas, melhor recall, mais memória) e IVFFlat (clusters, mais rápido de construir, recall mais fraco). Suporta vetores de precisão total, meia precisão, binários e esparsos. O tipo vector padrão armazena até 16.000 dimensões, mas só indexa 2.000; a meia precisão indexa até 4.000 e o binário até 64.000. A versão 0.8.0 trouxe as varreduras iterativas de índice, que continuam buscando até que linhas suficientes passem pelo seu filtro.
Suporta o Postgres 13 e posteriores, embora a 0.9.0, ainda não lançada, deixe de suportar o 13 e o 14, e está disponível em quase todos os serviços gerenciados de Postgres. A versão mais recente, a 0.8.7, de 1º de outubro de 2026, corrige uma falha de segurança que pode levar à execução de código.
pgvector vale a pena?
O pgvector tira um serviço inteiro da sua pilha. Os embeddings ficam no mesmo banco, nos mesmos backups e nas mesmas transações que os documentos que descrevem, então não há um segundo armazenamento para manter sincronizado e os filtros são SQL comum. Tem cerca de 23.450 estrelas no GitHub e só 17 issues abertas, e a 0.9.0, ainda não lançada, já aparece no changelog.
A faixa confortável é mais estreita do que o marketing sugere. A Encore, que vende hospedagem de Postgres, o coloca no mesmo nível do Pinecone abaixo de cerca de cinco milhões de vetores com carga moderada (centenas de consultas por segundo), sendo necessário ajustar com cuidado shared_buffers, work_mem e os parâmetros de HNSW entre cinco e dez milhões. O armazenamento explica o porquê. O README calcula cada vetor em 4 bytes por dimensão mais 8, então dez milhões de embeddings de 1.536 dimensões ocupam cerca de 61,5 GB antes de qualquer índice, e a construção do HNSW fica muito mais lenta quando o grafo passa do tamanho de maintenance_work_mem. A meia precisão reduz isso pela metade. Além desse ponto, pgvectorscale ou VectorChord mantêm os dados no Postgres por mais algum tempo.
A filtragem exige atenção. Índices aproximados filtram depois da varredura, e o próprio exemplo do README é duro: com o hnsw.ef_search padrão de 40 e um filtro que corresponde a 10% das linhas, uma consulta retorna em média cerca de 4 resultados. Varreduras iterativas, índices parciais ou particionamento por tenant resolvem isso, mas nenhum vem ativado por padrão.
Correções de segurança chegaram em 2026 e vale a pena aplicá-las. A CVE-2026-3172, um buffer overflow na construção paralela de HNSW, permitia que um usuário com permissão para criar índices vazasse dados de outras tabelas (da 0.6.0 à 0.8.1, corrigida na 0.8.2). A CVE-2026-18022, um overflow na construção de IVFFlat apenas em sistemas de 32 bits, foi corrigida na 0.8.6, e a CVE-2026-103484, também na construção de IVFFlat, pode levar à execução de código arbitrário em todas as versões até a 0.8.6 e está corrigida na 0.8.7. Em um serviço gerenciado, a versão da extensão segue o calendário do provedor, e não o seu, e esse é o verdadeiro motivo para conferi-la antes de olhar gráficos de benchmark.
Onde ele se destaca
Um engenheiro de back-end em uma empresa SaaS no Amazon RDS
Adicionar busca semântica sobre dois milhões de tickets de suporte
Adicionar uma coluna halfvec, preencher os embeddings, construir um índice HNSW e fazer join dos resultados com a tabela de tickets usando cláusulas WHERE comuns. Com 1.536 dimensões, são cerca de 6 GB de dados vetoriais, que uma instância um pouco maior aguenta sem um serviço novo para operar.
Um líder de engenharia em uma start-up B2B com 400 clientes como tenants
Manter separados os documentos de cada cliente na recuperação de RAG
Particionar a tabela de embeddings por tenant ou adicionar índices parciais, e ativar as varreduras iterativas para que as consultas filtradas retornem conjuntos de resultados completos. A segurança em nível de linha se aplica como em qualquer tabela, então o isolamento usa controles que a equipe já audita.
Uma CTO avaliando a conta de um banco de dados vetorial gerenciado
Decidir se a busca vetorial precisa de um fornecedor próprio
Abaixo de cerca de cinco milhões de vetores e centenas de consultas por segundo, a orientação da Encore favorece ficar no Postgres: um backup, um modelo de acesso, nenhum job de sincronização. A contrapartida é o tempo de ajuste quando o índice não cabe mais na memória.
Antes de decidir
- Configuração
- Em um Postgres gerenciado, rode CREATE EXTENSION vector; auto-hospedado, instale a partir do código-fonte (make, make install) ou pelo seu gerenciador de pacotes para Postgres 13 e posteriores. Atualize com ALTER EXTENSION vector UPDATE em cada banco de dados.
- Integrações
- Qualquer cliente ou ORM de Postgres; bibliotecas na maioria das linguagens encapsulam o tipo vector. Suportado nos grandes serviços gerenciados listados na issue de provedores hospedados do projeto, e usado como back-end por ferramentas de RAG como o Open WebUI.
- Dados e privacidade
- Tudo fica dentro da sua instância de Postgres, sob os backups, papéis e segurança em nível de linha que ela já tem; a extensão não envia nada para lugar nenhum. A PostgreSQL License não impõe limite ao uso comercial.
- Custo em escala
- Sem custo de licença; você paga por um banco de dados maior. Cada vetor ocupa 4 bytes por dimensão mais 8, então dez milhões de vetores de 1.536 dimensões precisam de cerca de 61,5 GB (metade disso como halfvec) mais o índice, e a construção pede um maintenance_work_mem grande o bastante para conter o grafo.
- Limites
- Limites de índice de 2.000 dimensões (4.000 em meia precisão), filtragem depois da varredura que exige varreduras iterativas, construção lenta de HNSW quando a memória acaba, sem sharding horizontal, e a 0.9.0 vai deixar de suportar o Postgres 13 e 14.
O que é bom
- Sem serviço extra: vetores, linhas e transações em um só lugar
- Filtros e joins em SQL comum
- Disponível em quase todo Postgres gerenciado
- PostgreSQL License, permissiva
O que não é
- Por padrão, consultas filtradas podem retornar bem menos linhas do que o pedido
- Indexa só 2.000 dimensões no tipo padrão
- Três CVEs em 2026, uma delas permitindo execução de código antes da 0.8.7
- Não foi feito para bilhões de vetores nem para taxas de consulta muito altas
Ideal para
Equipes que já usam Postgres e constroem RAG ou busca semântica sobre alguns milhões de vetores.
Alternativas ao pgvector
pgvector: perguntas frequentes
- pgvector vale a pena?
- Para a maioria das equipes que já usam Postgres, um banco de dados vetorial dedicado é infraestrutura extra que o pgvector torna desnecessária. Damos nota 4.6 de 5.
- Quanto custa pgvector?
- Gratuito e de código aberto sob a PostgreSQL License. O único custo é a instância de Postgres que você já roda, ou uma maior.
- Quais são as desvantagens de pgvector?
- Por padrão, consultas filtradas podem retornar bem menos linhas do que o pedido; indexa só 2.000 dimensões no tipo padrão; três CVEs em 2026, uma delas permitindo execução de código antes da 0.8.7; não foi feito para bilhões de vetores nem para taxas de consulta muito altas.
- Para quem pgvector é indicado?
- Equipes que já usam Postgres e constroem RAG ou busca semântica sobre alguns milhões de vetores.
- Quanto custa pgvector para uma equipe ou em produção?
- Sem custo de licença; você paga por um banco de dados maior. Cada vetor ocupa 4 bytes por dimensão mais 8, então dez milhões de vetores de 1.536 dimensões precisam de cerca de 61,5 GB (metade disso como halfvec) mais o índice, e a construção pede um maintenance_work_mem grande o bastante para conter o grafo.
- pgvector é seguro para dados da empresa?
- Tudo fica dentro da sua instância de Postgres, sob os backups, papéis e segurança em nível de linha que ela já tem; a extensão não envia nada para lugar nenhum. A PostgreSQL License não impõe limite ao uso comercial.
- Quais são as melhores alternativas ao pgvector?
- As alternativas mais próximas que analisamos são Qdrant, Milvus, Weaviate, LanceDB e Chroma.
Respostas verificadas em 23 de out. de 2026.
