pg_vectorsearch: extensión de PostgreSQL para búsqueda vectorial de alto rendimiento

Fuentes: pg_vectorsearch: High-performance vector search extension for PostgreSQL

pg_vectorsearch es una extensión para PostgreSQL diseñada para realizar búsquedas de vecindades más cercanas aproximadas (ANN) con alto rendimiento. Actualmente en fase alfa, está orientada a pruebas y no a producción, ya que las actualizaciones entre versiones pre-release pueden requerir la recreación de la extensión y sus índices. La herramienta introduce el índice PRISM, un método de acceso nativo para PostgreSQL que funciona de manera similar al IVFFlat de pgvector pero se basa en técnicas avanzadas de cuantización, enrutamiento jerárquico y particionamiento.

Implementado en C para garantizar la integración sin interrupciones, PRISM ofrece un rendimiento significativamente superior a los índices IVFFlat y HNSW de pgvector, especialmente en conjuntos de datos de 100 millones de vectores, logrando una mayor velocidad en la construcción de índices y consultas con un uso de memoria reducido. El sistema utiliza un árbol de centroides jerárquico para particionar los vectores y aprovecha la caché de búfer de PostgreSQL para mantener el árbol en memoria. Los vectores se cuantizan mediante RaBitQ, un método que incluye límites de error teóricos para permitir el filtrado de candidatos que no pueden ser vecinos más cercanos, reduciendo la necesidad de reordenar con vectores de precisión completa.

La extensión soporta actualizaciones dinámicas mediante la división de listas de publicación (posting-lists) mediante el procedimiento prism_rebalance. Es compatible con pgvector, permitiendo a los usuarios construir índices PRISM sobre columnas vector o halfvec existentes sin modificar sus tablas ni consultas. El proyecto requiere PostgreSQL 18 o superior, un compilador GNU C11 (GCC 11+ o Clang 14+) y el sistema de construcción Meson. Incluye documentación técnica detallada sobre arquitectura, optimización SIMD, parámetros de ajuste y mantenimiento.