pg_vectorsearch

IA / ML

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.