Datos y documentos

Timescale lanza pg_vectorsearch para indexado vectorial de alto rendimiento en PostgreSQL

Timescale ha lanzado una extensión alpha llamada pg_vectorsearch que introduce el índice PRISM para búsquedas aproximadas de vecinos más cercanos más rápidas en PostgreSQL.

Ilustración de estructuras de datos vectoriales dentro de un cubo de cristal sobre un escritorio
Ilustración generada para este artículo

Traducido automáticamente del original en inglés.

Timescale ha lanzado pg_vectorsearch, una nueva extensión de PostgreSQL diseñada para acelerar la búsqueda aproximada de vecinos más cercanos (ANN) para datos vectoriales. Publicada el 14 de octubre de 2026, esta herramienta en fase alpha introduce el índice PRISM, cuyo objetivo es superar a soluciones existentes como HNSW y IVFFlat tanto en velocidad como en eficiencia de memoria. El lanzamiento está dirigido a desarrolladores que construyen sistemas de generación aumentada por recuperación (RAG) y necesitan infraestructura vectorial escalable dentro de sus bases de datos relacionales existentes.

Qué ha ocurrido

El núcleo de este lanzamiento es el índice PRISM, que significa Partitioned Routing Index for Similarity Matching (Índice de Enrutamiento Particionado para Coincidencia de Similitud). Está implementado en C para garantizar una integración estrecha con los componentes internos de PostgreSQL. Según el anuncio, PRISM es significativamente más rápido que los índices IVFFlat y HNSW de pgvector tanto para consultas como para la construcción del índice. En pruebas de referencia con un conjunto de datos de 100 millones de vectores, PRISM logró una recuperación equivalente a la de HNSW basado en grafos mientras utilizaba solo una cuarta parte de la memoria y ofrecía tiempos de consulta más rápidos.

Esta extensión admite actualizaciones dinámicas, permitiendo inserciones, actualizaciones y eliminaciones sin requerir una reconstrucción completa del índice. Sin embargo, los mantenedores declaran explícitamente que el software se encuentra actualmente en estado alpha y está destinado a pruebas, no al uso en producción. La actualización entre versiones preliminares puede no ser posible, por lo que se recomienda a los usuarios planificar la eliminación y recreación de la extensión y sus índices a medida que evoluciona el proyecto. Los problemas conocidos se registran en el changelog.

Cómo funciona

PRISM utiliza un árbol jerárquico de centroides para particionar los vectores en clústeres, confiando en la caché de búfer de PostgreSQL para mantener esta estructura de enrutamiento en memoria. Este enfoque permite al sistema identificar rápidamente los clústeres relevantes sin escanear todo el conjunto de datos. Una vez identificados los clústeres más cercanos, el sistema escanea las listas de publicación (posting lists) para generar vectores candidatos. Estas listas están optimizadas para el cálculo de distancias SIMD, utilizando instrucciones AVX2, AVX512 y NEON para acelerar los cálculos en hardware compatible.

Una característica técnica clave es el uso de cuantización RaBitQ. Este método codifica los vectores con límites teóricos de error, habilitando un proceso de búsqueda en dos etapas. La primera etapa estima las distancias y utiliza los límites de error para descartar vectores que no pueden ser vecinos más cercanos. Este paso de filtrado reduce significativamente el número de candidatos que requieren reordenamiento contra vectores de precisión completa almacenados en el heap de la tabla. El paso final devuelve los k vecinos más cercanos después de este eficiente proceso de filtrado y reordenamiento.

Detalles clave

  • Tipo de índice: PRISM (Partitioned Routing Index for Similarity Matching), que es estilo IVF con enrutamiento jerárquico.
  • Cuantización: Utiliza cuantización RaBitQ con límites teóricos de error para un filtrado eficiente de búsqueda en dos etapas.
  • Aceleración de hardware: Los cálculos de distancia están optimizados para instrucciones SIMD, incluyendo AVX2, AVX512 y NEON.
  • Compatibilidad: Puede indexar directamente columnas vector y halfvec existentes de pgvector, o utilizar tipos nativos vec32 y vec16.
  • Mantenimiento: Admite inserciones, actualizaciones y eliminaciones dinámicas, con divisiones de listas de publicación gestionadas mediante el procedimiento prism_rebalance.
  • Estado: Versión alpha destinada a pruebas; la actualización entre versiones preliminares puede requerir eliminar y recrear los índices.

Por qué importa

Para los ingenieros que construyen aplicaciones de IA, el rendimiento de la búsqueda vectorial a menudo se convierte en un cuello de botella a medida que crecen los conjuntos de datos. Los índices tradicionales basados en grafos como HNSW pueden consumir mucha memoria, aumentando los costos de infraestructura. Al demostrar que PRISM puede manejar 100 millones de vectores con una fracción de la memoria requerida por HNSW, esta extensión ofrece un camino hacia un escalado más rentable. Permite a los equipos mantener sus datos vectoriales junto con sus datos transaccionales en PostgreSQL, simplificando la arquitectura y reduciendo la necesidad de servicios separados de bases de datos vectoriales.

La compatibilidad con tablas existentes de pgvector es particularmente importante para la migración. Los desarrolladores no necesitan reescribir sus esquemas ni la lógica de aplicación para probar el nuevo índice. Pueden instalar pg_vectorsearch junto a pgvector y construir un índice PRISM sobre columnas existentes. Esto reduce la barrera de entrada para evaluar si las ganancias de rendimiento justifican la complejidad operativa de adoptar un nuevo método de indexado, incluso en su temprana etapa alpha.

Qué puedes hacer

  • Instala PostgreSQL 18 o posterior junto con un compilador GNU C11 como GCC 11+ o Clang 14+ para preparar tu entorno.
  • Compila la extensión desde el código fuente utilizando el sistema de compilación Meson, asegurándote de tener los encabezados de desarrollo necesarios de PostgreSQL.
  • Prueba la extensión en conjuntos de datos no productivos creando un índice PRISM sobre columnas vector o halfvec existentes.
  • Experimenta con el parámetro prism.nprobe para ajustar el equilibrio entre la velocidad de consulta y la precisión de recuperación para tu carga de trabajo específica.
  • Monitorea el changelog para conocer los problemas conocidos y prepárate para eliminar y recrear los índices cuando pruebes nuevas versiones preliminares.
  • Evalúa el procedimiento prism_rebalance para mantener el rendimiento del índice durante operaciones dinámicas de inserción y actualización.

Herramientas de la Tienda de Bytechap

Seguir leyendo

Todos los artículos