La búsqueda vectorial en PostgreSQL ha avanzado mucho y pgvector facilita el proceso: insertar embeddings, crear un índice HNSW y ejecutar consultas ANN. Sin embargo, a medida que escalamos en tiendas, regiones y volúmenes de producto quedó claro que HNSW no es de instalar y olvidar. Los índices envejecen, se inflan, se fragmentan y pueden perder recall de forma silenciosa. Cuando se degradan los índices, los resultados de búsqueda también lo hacen, a veces de manera gradual y otras catastrófica.

Al principio adoptamos una estrategia de reconstrucciones programadas: reconstruir cada noche a la 1 AM, después de importaciones, después de generar nuevos embeddings. Nos pareció seguro. No lo era. Los problemas que encontramos incluyeron reconstrucciones innecesarias sin escrituras nuevas que consumían CPU e IO, degradación diaria de índices en inquilinos grandes que causaban caída del recall y aumento de latencia, y situaciones peores como índices marcados como INVALID tras un reinicio de Postgres durante una construcción CONCURRENT que dejaron índices corruptos pero presentes y por tanto inutilizables hasta que alguien lo detectó manualmente.

Eso nos obligó a replantear la estrategia. No necesitamos reconstrucciones programadas indiscriminadas. Necesitamos monitorizar la salud del índice y reconstruir solo cuando sea necesario.

Qué significa estar sano para un índice HNSW. A diferencia de los btrees que exponen bloat %, churn de páginas y tuplas muertas, HNSW es un grafo multi capa navegable cuya salud depende de factores como cuántos vectores fueron reemplazados sin poda, cuántos nodos referencian embeddings inexistentes, si las capas del grafo siguen siendo navegables bajo presión de memoria y si el índice cabe en caché o empieza a derramar a disco. No existe una métrica única que capture todo, así que construimos un modelo de salud basado en tres métricas complementarias.

Modelo de salud con tres métricas

Métrica 1 Dead tuple ratio. Las tuplas muertas son embeddings borrados o sobrescritos pero aún referenciados en el grafo. Aumentan el número de saltos y reducen el recall. Se calcula como dead_tuple_ratio = n_dead_tup / n_live_tup. Umbral práctico: 10 15 por ciento es motivo para considerar reconstruir.

Métrica 2 Cache hit ratio. Muchas degradaciones se debieron a expulsiones de caché. Si las páginas HNSW salen de shared_buffers la navegación se vuelve dependiente de disco y el planner puede dejar de usar el índice. Un indicador simple es índice de acierto de caché calculado desde pg_statio_user_indexes. Regla empírica: Mayor 90 por ciento sano, entre 90 y 75 amarillo, menor 75 rojo y probable dependencia de disco.

Métrica 3 Bytes por vector. Heurística para detectar inflación estructural. Comparar tamaño del índice con número de vectores permite estimar bytes por vector. Si pasa de un valor esperado a un valor sensiblemente mayor, la reconstrucción suele mejorar recall y latencia. Por ejemplo, si se espera 5.0 KB por vector y se observa 9.2 KB por vector es señal de bloat.

Puntuación de salud y política de reconstrucción. En vez de una decisión binaria reconstruir o no, computamos una puntuación combinada: score = dead_score * 0.4 + cache_score * 0.4 + bloat_score * 0.2. Razonamiento del ponderado: las tuplas muertas afectan directamente al recall y por tanto tienen mayor peso, la residencia en caché impacta latencia y uso del planner y el bloat importa pero en menor proporción para embeddings grandes. Si la puntuación cae por debajo de un umbral definido reconstruimos solo ese índice.

Resultado práctico. Dejamos de reconstruir todo por defecto. Reconstruimos solo cuando los datos de salud del índice lo justifican. El sistema es más inteligente, más rápido y más barato y la calidad de búsqueda dejó de darnos sorpresas.

En Q2BSTUDIO, empresa de desarrollo de software y aplicaciones a medida con especialización en inteligencia artificial, ciberseguridad y servicios cloud, aplicamos este enfoque de monitorización de señales para índices HNSW en proyectos de búsqueda semántica y sistemas de recomendación a escala. Ofrecemos servicios de software a medida y aplicaciones a medida y asesoría en ia para empresas, agentes IA y soluciones de inteligencia de negocio como power bi. Si necesita integrar búsqueda vectorial robusta en producción o optimizar costes en la nube podemos ayudarle con diseño, implementación y monitorización.

Conecte este enfoque con otros servicios complementarios de Q2BSTUDIO como desarrollo de aplicaciones a medida y despliegues cloud en AWS y Azure. Vea ejemplos de nuestros trabajos y cómo podemos acompañarle en su transformación digital en desarrollo de aplicaciones y software a medida y conozca nuestras capacidades en inteligencia artificial en IA para empresas. También ofrecemos servicios de ciberseguridad y pentesting, servicios cloud aws y azure y consultoría en servicios inteligencia de negocio y power bi para completar soluciones end to end.

Palabras clave integradas: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi.

Si quiere que revisemos la salud de sus índices vectoriales o diseñemos una estrategia de mantenimiento automatizada y escalable estamos listos para ayudarle.