O que é o pgvector?

O pgvector é uma extensão para o PostgreSQL (também chamado de Postgres) que simplifica o trabalho com vetores, permitindo que você os armazene, pesquise e indexe diretamente no seu banco de dados relacional.

Com o pgvector, adicionar recursos avançados como pesquisa de similaridade aos seus aplicativos e agentes de IA pode ser simples e escalonável, sem precisar mover dados ou alterar arquiteturas de aplicativos para conectar o novo tipo de dados vetoriais.

Crie apps com tecnologia de IA no Google Cloud com pgvector, LangChain e LLMs

Pontos principais

O pgvector é uma extensão de código aberto para o PostgreSQL que ajuda a armazenar, indexar e pesquisar vetores de alta dimensão diretamente no seu banco de dados PostgreSQL atual. O pgvector é conhecido por oferecer compatibilidade com:

  • Pesquisa de similaridade: comparação de padrões semânticos nos dados, em vez de usar a correspondência de palavras-chave
  • Aplicativos de IA: operações de agentes de IA e aplicativos de pesquisa, incluindo mecanismos de recomendação, chatbots, processamento de linguagem natural e detecção de anomalias

O que é um vetor?

Um vetor representa dados numericamente de uma forma que captura as principais características, mapeando-os em um espaço matemático virtual. Nesse espaço, itens semelhantes, como palavras, imagens ou objetos, são posicionados próximos uns dos outros.

Por exemplo, considere as palavras "casaco" e "jaqueta". As pesquisas tradicionais baseadas em palavras-chave não conectariam essas duas palavras como semelhantes, porque as letras são bem diferentes. Um sistema de e-commerce que quer unir essas palavras-chave precisa fazer isso manualmente. No entanto, as representações vetoriais dos dois seriam muito próximas porque compartilham significados semelhantes, o que oferece resultados de pesquisa mais precisos para os usuários e economiza tempo para os desenvolvedores.

Da mesma forma, se você tirar duas fotos diferentes de gatos, elas podem ser muito diferentes pixel por pixel. No entanto, os embeddings de vetor os colocariam muito próximos no espaço matemático, assim como um humano identificaria facilmente ambos como imagens de gatos:

Imagem de gato gerada pelo Gemini

Para que isso funcione, um modelo de embedding transforma dados brutos, como imagens ou texto, em embeddings vetoriais. O pgvector armazena esses embeddings no seu banco de dados. Quando um usuário envia uma consulta, essa entrada também é convertida em um vetor. O pgvector calcula a distância entre o vetor de consulta e os vetores armazenados para identificar com eficiência os "vizinhos mais próximos" com as pontuações de similaridade mais altas.

Quer saber mais sobre os diferentes tipos de pesquisa de vizinhos mais próximos? Confira nosso guia para o desenvolvimento de apps de IA generativa.

Perguntas frequentes sobre o pgvector

O PostgreSQL é um sistema de gerenciamento de banco de dados relacional de código aberto robusto, projetado para lidar com dados estruturados usando tabelas, linhas e colunas.

O pgvector é uma extensão que é executada no PostgreSQL. Ele adiciona "vetor", um novo tipo de dados, ao banco de dados, permitindo o armazenamento e o processamento de embeddings vetoriais junto com seus dados operacionais padrão.

Não, o pgvector é uma extensão que se integra diretamente ao seu banco de dados PostgreSQL atual. Isso permite adicionar recursos avançados de IA e pesquisa sem gerenciar uma infraestrutura nova ou separada.

pgvector no PostgreSQL para IA e aplicativos de pesquisa

Com a capacidade de lidar com vetores de alta dimensão, o pgvector oferece compatibilidade com uma variedade de aplicativos avançados.

A correspondência de palavras-chave em bancos de dados relacionais tradicionais muitas vezes não identifica conexões significativas nos dados. A pesquisa de similaridade compara a proximidade dos vetores usando métricas como distância euclidiana e distância de cosseno para encontrar padrões mais profundos, o que é essencial para aplicativos como reconhecimento de imagens e pesquisa semântica, em que os resultados são classificados por significado. No e-commerce, por exemplo, a pesquisa por similaridade permite recomendações de produtos ao analisar o comportamento do usuário e encontrar itens relacionados.

O processamento de linguagem natural baseado em vetores permite que os agentes de IA entendam o contexto, o que leva a conversas mais personalizadas e respostas mais precisas. O suporte multilíngue melhora a performance deles como assistentes virtuais e plataformas de atendimento ao cliente.

O pgvector aprimora os fluxos de trabalho de IA ao permitir o armazenamento e a consulta de embeddings vetoriais, que são essenciais para identificar padrões incomuns nos dados. Ao analisar a proximidade do vetor, ele ajuda a detectar anomalias em tempo real para prevenção de fraudes, segurança de rede ou controle de qualidade.

A análise de sentimento analisa a intenção de uma mensagem, permitindo que você encaminhe comentários negativos de forma adequada para uma ação mais rápida, criando resoluções personalizadas.

Para um banco de dados único que se destaca em consultas SQL tradicionais e pesquisas de vértices modernas, considere o AlloyDB para PostgreSQL. O AlloyDB usa o algoritmo de pesquisa de similaridade vetorial ScaNN (Scalable Nearest Neighbor) desenvolvido pelo Google, oferecendo um desempenho significativamente maior do que outros serviços PostgreSQL baseados na nuvem para cargas de trabalho transacionais e analíticas em bancos de dados grandes.

Saiba como o AlloyDB realiza pesquisas simultâneas em dados estruturados e não estruturados.

Como ativar e usar o pgvector nos bancos de dados do Google Cloud

O Cloud SQL e o AlloyDB para PostgreSQL são compatíveis com o pgvector, permitindo que você armazene e consulte embeddings de vetor usando comandos SQL padrão.

1. Conectar-se à instância

Use seu cliente PostgreSQL preferido (como psql, pgAdmin ou o console do Google Cloud) para se conectar à sua instância do Cloud SQL ou AlloyDB.

2. Ativar a extensão pgvector

Execute o seguinte comando SQL para ativar a extensão no seu banco de dados. Você só precisa fazer isso uma vez por banco de dados.

  • SQL
Carregando...

3. Criar uma tabela com uma coluna de vetor

Crie uma nova tabela (ou altere uma já existente) para incluir uma coluna para dados vetoriais. Você precisa especificar as dimensões do vetor. Por exemplo, para criar uma tabela para armazenar embeddings tridimensionais:

  • SQL
Carregando...

4. Inserir dados vetoriais

É possível inserir embeddings de vetor como dados padrão. Os vetores são formatados como matrizes entre colchetes.

  • SQL
Carregando...

5. Consulta usando a pesquisa de similaridade

Agora você pode consultar seus dados para encontrar os vizinhos mais próximos. O operador <-> calcula a distância euclidiana (distância L2), que é comumente usada para encontrar os itens mais semelhantes.

  • SQL
Carregando...

6. Adicionar um índice para melhorar a performance

Para conjuntos de dados maiores, adicionar um índice pode acelerar significativamente o desempenho da pesquisa. Os índices HNSW e ScaNN são opções usadas com frequência. Aqui está um exemplo de HNSW:

  • SQL
Carregando...

Resolva seus desafios comerciais com o Google Cloud

Clientes novos recebem US$ 300 em créditos para usar no Google Cloud.

Vá além

Comece a criar no Google Cloud com US$ 300 em créditos e mais de 20 produtos do programa Sempre gratuito.

Google Cloud