pg_vectorsearch é uma extensão do PostgreSQL para busca aproximada de vizinhos mais próximos (ANN) de alto desempenho, compartilhada no GitHub e discutida no Hacker News. Atualmente está em fase alfa e destinada a testes, não à produção. Pode não ser possível atualizar entre versões prévias, por isso os usuários devem planejar remover e recriar a extensão e seus índices. O changelog lista os problemas conhecidos.
O índice PRISM da extensão (Partitioned Routing Index for Similarity Matching) é um método de acesso a índices conceitualmente semelhante ao IVFFlat do pgvector, mas construído em torno da quantização RaBitQ, do roteamento hierárquico e do particionamento. Ele é implementado em C e oferece suporte ao cálculo de distâncias com SIMD (AVX2, AVX512, NEON), inserções, atualizações e exclusões dinâmicas, além do rebalanceamento de listas de postagem por meio de prism_rebalance. O projeto afirma que o PRISM é significativamente mais rápido que o IVFFlat e o HNSW do pgvector tanto na consulta quanto na construção do índice, e que, em um conjunto de dados de 100 milhões de vetores, supera o HNSW com recall equivalente em uma instância com um quarto da memória.
O PRISM usa uma árvore hierárquica de centroides para particionar os vetores em clusters e depende do cache de buffers do PostgreSQL para manter essa árvore aquecida. Os vetores são quantizados com RaBitQ e armazenados em listas de postagem. Seus limites de erro permitem que as buscas descartem vetores que não podem ser vizinhos mais próximos, reduzindo o número de reclassificações em precisão total necessárias.
Os usuários podem armazenar vetores em colunas nativas vec32 ou vec16, ou criar um índice PRISM diretamente sobre colunas vector ou halfvec já existentes do pgvector, sem alterar suas tabelas ou consultas. Ambos os caminhos usam os mesmos operadores e configurações de ajuste, como prism.nprobe, para equilibrar recall e velocidade.
Fonte: Hacker News · Resumido por HeadlinesBriefing