pg_vectorsearch
Descripción
El índice de acceso PRISM parte de un árbol jerárquico de centroides que se mantiene caliente en la caché de búferes de PostgreSQL y recorre listas de posting cuantizadas con RaBitQ. Las cotas de error teóricas descartan candidatos que no pueden ser vecinos, así que reordenas contra muchos menos vectores a precisión completa. Frente a IVFFlat y HNSW de pgvector, tanto construir el índice como consultar sale más rápido; en un conjunto de 100 millones de vectores, con el mismo recall, basta un cuarto de la memoria que exigiría un grafo HNSW.
Puedes indexar columnas nativas vec32 y vec16 o, si ya usas pgvector, montar el mismo índice sobre vector y halfvec sin reescribir la tabla ni cambiar las consultas. Siguen valiendo los operadores <->, <#> y <=>, y las distancias se calculan con SIMD (AVX2, AVX512 y NEON).
- Inserts, updates y deletes, con partición de listas de posting mediante prism_rebalance.
- Equilibrio entre recall y velocidad con prism.nprobe (0 deja el valor automático, en torno a 0,95 de recall).
La extensión está en alpha: pensada para pruebas, no para producción. Entre prereleases puede no haber camino de actualización; tendrás que borrar y recrear la extensión y sus índices.
Tecnologías y temas
-
ANN
Vecinos aproximados con los operadores <->, <#> y <=> que ya conoces.
-
pgvector
Indexas columnas vector y halfvec que ya tengas, sin copiar ni reescribir la tabla.
-
PRISM
Método de acceso IVF jerárquico nativo, orientado a conjuntos de más de 100 millones de vectores.
-
RaBitQ
Cuantización con cotas de error para filtrar en dos etapas y recortar el reranking.
-
SIMD
Cálculo de distancias con AVX2, AVX512 y NEON.