Ir para o conteúdo principal

O que é pgvector?

Uma extensão PostgreSQL para armazenar e pesquisar embeddings vetoriais nativamente dentro do seu banco de dados existente.

4 Personas AI Agents 6

Summary

  • pgvector é uma extensão do PostgreSQL que permite o armazenamento de vetores e a busca por similaridade diretamente no Postgres, eliminando a necessidade de um banco de dados vetorial separado para a maioria dos casos de uso de IA, como busca semântica, RAG e recomendações.
  • Ele suporta múltiplas métricas de distância, dois tipos de índice (HNSW e IVFFlat), busca filtrada e busca híbrida, tudo nativamente no SQL, tornando-o operacionalmente simples para equipes que já utilizam o Postgres.
  • O pgvector lida bem com milhões de vetores, mas o desempenho degrada em escala muito alta; pgvectorscale e bancos de dados vetoriais dedicados como Pinecone ou Weaviate são os próximos passos naturais à medida que as cargas de trabalho crescem.

pgvector é uma extensão de código aberto do PostgreSQL que adiciona a capacidade de armazenar, indexar e pesquisar embeddings de vetores (representações numéricas de dados). Ele traz dados vetoriais e busca por similaridade para o mesmo sistema que contém os dados da aplicação, possibilitando a busca semântica, recomendações e geração aumentada por recuperação (RAG) sem depender de um banco de dados vetorial externo. O pgvector estende o Postgres para suportar esses casos de uso orientados por IA.

Muitas aplicações modernas de IA dependem da recuperação de dados semanticamente similares, não apenas de correspondências exatas. O pgvector permite que as equipes realizem esse tipo de recuperação em tempo de execução dentro de sua pilha Postgres existente. Por exemplo, as aplicações frequentemente precisam recuperar conteúdo que seja contextualmente similar a uma consulta, mesmo que a redação seja diferente. Essa abordagem é frequentemente referida como similaridade de cosseno, busca pelo vizinho mais próximo ou busca baseada em embeddings.

Este artigo fornece uma visão geral educacional de alto nível do pgvector, em vez de orientações detalhadas de implementação.

Como o pgvector funciona

O pgvector adiciona um novo tipo de dado ao Postgres chamado vector. Ele permite que embeddings, representações numéricas de texto, imagens ou outro conteúdo sejam armazenados ao lado de dados relacionais sem a necessidade de um sistema separado. Esses embeddings são tipicamente gerados por modelos de machine learning que convertem conteúdo como texto ou imagens em forma numérica.

Em um nível geral, o processo é simples. Os embeddings são armazenados no banco de dados. Quando uma consulta é recebida, um embedding de consulta é gerado a partir da entrada, e o pgvector retorna os registros cujos vetores são mais similares, ou mais próximos em significado, a essa consulta. Em vez de corresponder palavras-chave, os resultados são recuperados com base no significado.

O pgvector determina a similaridade usando métricas de distância:

  • L2 (Distância Euclidiana): mede a distância entre vetores, onde valores menores indicam maior similaridade
  • Similaridade de Cosseno: mede o quão próximos os vetores apontam na mesma direção, o que frequentemente reflete similaridade de significado
  • Produto Interno: mede o alinhamento entre vetores e é frequentemente usado com embeddings normalizados

Principais recursos do pgvector

O pgvector inclui vários recursos que tornam a busca vetorial prática dentro do Postgres.

  • Indexação: Dois tipos de índice são suportados: HNSW e IVFFlat. HNSW prioriza a velocidade da consulta e constrói uma estrutura de grafo na memória, mas requer mais memória. IVFFlat é mais eficiente em termos de memória e particiona vetores em clusters usando uma etapa de treinamento, mas as consultas podem ser mais lentas.
  • Métricas de distância: L2, similaridade de cosseno e produto interno cobrem a maioria dos casos de uso baseados em embeddings. A distância de Hamming suporta vetores binários, e a distância de Jaccard suporta vetores esparsos em cenários mais especializados.
  • Busca filtrada: A similaridade vetorial pode ser combinada com filtros relacionais padrão. Por exemplo, os resultados podem incluir os produtos semanticamente mais similares que também estão em estoque, dentro de uma faixa de preço ou em uma categoria específica.
  • Busca híbrida: O pgvector pode ser emparelhado com a busca de texto completo do Postgres para misturar busca por palavras-chave e semântica. Isso permite que os resultados sejam contextualmente relevantes e textualmente precisos em uma única consulta.
  • Tipos de dados adicionais: Opções como tipos halfvec, sparsevec e bit ajudam a reduzir o uso de memória ao trabalhar com grandes conjuntos de dados de embeddings.

Casos de uso comuns para pgvector

O pgvector é amplamente utilizado para potencializar recursos de aplicações orientadas por IA:

Busca semântica e RAG

As aplicações podem recuperar documentos ou conteúdo com base no significado, em vez de palavras-chave. Este é um componente central da geração aumentada por recuperação (RAG), onde modelos de linguagem grandes usam o contexto recuperado para gerar respostas precisas e relevantes. Como o pgvector executa a busca por similaridade diretamente no Postgres, essa recuperação pode ocorrer em tempo real sem a necessidade de um sistema separado.

Sistemas de recomendação

Itens podem ser associados a comportamentos ou preferências passadas para suportar recomendações. Esse padrão é comumente usado para recomendações de produtos, descoberta de conteúdo e personalização em aplicações. O pgvector torna eficiente a identificação de itens relacionados com base em padrões no comportamento do usuário ou no conteúdo.

Similaridade de imagens

Embeddings de imagens podem ser armazenados e comparados para encontrar rapidamente imagens visualmente similares. Isso é amplamente utilizado em plataformas de mídia, e-commerce e ferramentas criativas. Armazenar esses embeddings ao lado dos dados da aplicação facilita a execução de buscas por similaridade sem infraestrutura adicional.

Detecção de anomalias

Pontos de dados que estão distantes de padrões típicos no espaço vetorial podem ser usados para identificar outliers. Isso é útil para detecção de fraudes, monitoramento e controle de qualidade. O pgvector possibilita isso facilitando a comparação de vetores e a detecção de desvios.

Deduplicação

Conteúdo duplicado ou quase duplicado pode ser identificado, mesmo quando expresso de maneiras diferentes ou formatado de formas distintas. Isso é importante para gerenciamento de conteúdo, qualidade de busca e higiene de dados. A comparação baseada em similaridade torna possível detectar duplicatas além de correspondências exatas.

pgvector vs. bancos de dados vetoriais dedicados: quando usar cada um

À medida que a busca vetorial se torna parte de mais aplicações, as equipes frequentemente enfrentam uma decisão prática: a busca vetorial deve permanecer no Postgres, ou um banco de dados vetorial dedicado é necessário? A resposta depende da escala, dos requisitos de desempenho e da complexidade operacional.

As diferenças podem ser resumidas em dimensões chave:

Ferramenta

Complexidade Operacional

Teto de Escalabilidade

Suporte a Consultas Híbridas

Custo

Maturidade do Ecossistema

pgvector

Mais Baixa (DB Existente)

Alta (~100M+ vetores)

Melhor (Joins SQL Nativos)

Mais Baixo (Incluído)

Alta (Ecossistema Postgres)

Pinecone

Baixa (Serverless/SaaS)

Mais Alta (Bilhões+)

Moderado (Apenas Metadados)

Alta (Baseado em Uso)

Alta (Específico para IA)

Weaviate

Moderada (Multimodal)

Muito Alta

Alta (GraphQL/Vetor)

Moderado

Alta (Código Aberto)

Qdrant

Moderada (Baseado em Rust)

Muito Alta

Alta (Foco em Filtragem)

Moderado

Crescendo Rapidamente

O pgvector é o ponto de partida natural para equipes que já usam Postgres e operam abaixo do teto de escala. Ele funciona bem quando a busca vetorial faz parte de um fluxo de trabalho de aplicação existente e os volumes de dados ou as demandas de consulta permanecem gerenciáveis. Bancos de dados vetoriais dedicados se tornam mais relevantes quando o volume de consultas, os requisitos de recall ou as cargas de trabalho multi-inquilino ultrapassam o que o Postgres pode suportar eficientemente.

pgvectorscale

O pgvectorscale é projetado para equipes que desejam estender seus limites com o pgvector antes de adotar um banco de dados vetorial dedicado. Ele aborda os desafios de desempenho e escalabilidade que surgem à medida que os volumes de dados e as demandas de consulta aumentam, especialmente em relação à velocidade de indexação e latência de consulta. Ao melhorar o desempenho do pgvector em escalas maiores, ele permite que as equipes continuem usando o Postgres por mais tempo sem reestruturar seus sistemas. Isso o torna um passo intermediário prático para aplicações que se aproximam dos limites do que o pgvector pode lidar sozinho.

Relatório

O manual de IA agêntica para empresas

Limitações e considerações de escalabilidade

O pgvector é poderoso, mas vem com compromissos:

  • O desempenho pode degradar em contagens de vetores muito altas (10M+) sem otimização adicional ou ferramentas
    • Índices HNSW consomem muita memória, e grandes implantações podem exigir RAM significativa
    • O Postgres não fornece particionamento nativo para cargas de trabalho vetoriais, portanto, a escalabilidade horizontal requer ferramentas externas ou um provedor gerenciado
    • A velocidade de busca e o recall envolvem um compromisso real. O recall — a porcentagem de resultados verdadeiramente relevantes que são retornados — requer configuração deliberada para otimizar.

Compreender essas limitações ajuda a determinar quando o pgvector é suficiente e quando infraestrutura adicional pode ser necessária.

Primeiros passos com pgvector

pgvector pode ser instalado em macOS e na maioria das distribuições Linux usando gerenciadores de pacotes padrão como Homebrew. Ele também está disponível em muitas plataformas Postgres gerenciadas, incluindo AWS RDS, Supabase, Azure Database for PostgreSQL, Google Cloud SQL e Neon.

Instruções de instalação e configuração estão disponíveis no repositório oficial do pgvector no GitHub, que inclui orientação passo a passo mantida pelos autores do projeto.

Clientes Databricks que usam Postgres também podem consultar a documentação de extensões OLTP da Databricks para obter orientação específica da plataforma.

pgvector e a pilha de IA moderna

pgvector opera na camada de serviço operacional de um sistema de IA, onde a recuperação de baixa latência é necessária em tempo de execução da aplicação. É comumente usado para dar suporte a pesquisa semântica, recomendações e geração aumentada por recuperação (RAG) dentro de aplicações.

Em contraste, Databricks Mosaic AI Vector Search é mais adequado para cargas de trabalho de IA em larga escala e processadas em lote, onde os pipelines de dados são gerenciados no lakehouse. Esses ambientes suportam processamento de dados centralizado, grandes conjuntos de dados e fluxos de trabalho complexos.

Essas abordagens são complementares, e as equipes frequentemente usam ambas em diferentes camadas da pilha. pgvector suporta consultas de aplicação em tempo real, enquanto plataformas como Databricks lidam com preparação de dados em larga escala, geração de embeddings e fluxos de trabalho orientados por modelo.

Perguntas frequentes

pgvector é um banco de dados vetorial completo?
pgvector permite que o Postgres armazene embeddings e realize busca de similaridade diretamente nesses dados. No entanto, não é um banco de dados vetorial construído especificamente para essa finalidade. Bancos de dados vetoriais dedicados oferecem escalabilidade e otimizações de desempenho adicionais para cargas de trabalho maiores.

Qual é a diferença entre HNSW e IVFFlat em pgvector?
HNSW é otimizado para desempenho rápido de consulta e usa uma estrutura de grafo em memória, que requer mais memória. IVFFlat tem uma pegada de memória menor e organiza vetores em clusters através de uma etapa de treinamento, mas o desempenho pode variar dependendo do conjunto de dados e da carga de trabalho. A escolha depende se a prioridade é velocidade ou eficiência de memória.

Quantos vetores o pgvector pode lidar?
pgvector pode lidar tipicamente com milhões a dezenas de milhões de vetores, dependendo do hardware, estratégia de indexação e padrões de consulta. À medida que os conjuntos de dados crescem, o desempenho pode diminuir sem ajuste cuidadoso ou ferramentas adicionais. Fatores como memória disponível, tipo de índice e frequência de consulta influenciam a escalabilidade.

pgvector suporta similaridade de cosseno?
Sim, pgvector suporta similaridade de cosseno como uma de suas principais métricas de distância. Ela mede o quão próximos dois vetores apontam na mesma direção, o que frequentemente reflete a similaridade semântica em aplicações baseadas em embeddings. Isso o torna bem adequado para pesquisa semântica, sistemas de recomendação e processamento de linguagem natural.

pgvector é gratuito e de código aberto?
Sim, pgvector é um projeto de código aberto lançado sob uma licença permissiva. Ele pode ser usado com instalações Postgres padrão, bem como com muitos serviços Postgres gerenciados. Isso o torna um ponto de partida acessível para adicionar recursos de busca vetorial.

pgvector pode fazer busca híbrida?
Sim, pgvector pode ser combinado com a busca de texto completo do Postgres para suportar busca híbrida. Isso permite que os resultados equilibrem a relevância semântica com a correspondência de palavras-chave, melhorando tanto a precisão quanto a usabilidade. A busca híbrida é especialmente útil em cenários como busca de produtos e busca de documentação, onde tanto o significado quanto os termos exatos são importantes.

Escolhendo a abordagem de busca vetorial correta

pgvector é um ponto de partida prático para qualquer equipe que queira adicionar busca vetorial a uma aplicação Postgres existente. Ao armazenar embeddings ao lado de dados relacionais e suportar busca de similaridade nativamente dentro do banco de dados, ele remove a sobrecarga operacional de gerenciar um armazenamento vetorial separado. Para muitas cargas de trabalho — pesquisa semântica, pipelines RAG, recomendações e detecção de anomalias — ele entrega o que as equipes precisam sem exigir um novo sistema.

À medida que os volumes de dados crescem ou as demandas de consulta aumentam, o escalonamento do pgvector pode estender o limite antes que um banco de dados vetorial dedicado se torne necessário. Para organizações que gerenciam cargas de trabalho de IA em larga escala em uma plataforma de dados unificada, o Databricks Mosaic AI Vector Search oferece uma abordagem complementar projetada para a camada do lakehouse. Juntas, essas ferramentas dão às equipes a flexibilidade de adequar sua infraestrutura de busca vetorial aos seus requisitos reais de carga de trabalho — em qualquer escala.

(Esta publicação no blog foi traduzida utilizando ferramentas baseadas em inteligência artificial) Publicação original

Never miss a Databricks post

Subscribe to our blog and get the latest posts delivered to your inbox