No todos los índices HNSW son iguales | por Noam Schwartz | Jul, 2024
Foto por Robin Jonathan Alemán en Dejar de salpicar

La reconstrucción de un índice HNSW es ​​uno de los aspectos que más recursos consumen al utilizar HNSW en cargas de trabajo de producción. A diferencia de las bases de datos tradicionales, donde las eliminaciones de datos se pueden gestionar simplemente eliminando una fila de una tabla, el uso de HNSW en una base de datos vectorial suele requerir una reconstrucción completa para mantener un rendimiento y una precisión óptimos.

¿Por qué es necesaria la reconstrucción?

Debido a su estructura de gráfico en capas, HNSW no está diseñado de manera inherente para conjuntos de datos dinámicos que cambian con frecuencia. Agregar datos nuevos o eliminar datos existentes es esencial para mantener los datos actualizados, especialmente para casos de uso como RAG, que apunta a mejorar la relevancia de la búsqueda.

La mayoría de las bases de datos funcionan con un concepto denominado borrado “duro” y “duro”. El borrado duro elimina los datos de forma permanente, mientras que el borrado suave marca los datos como “a eliminar” y los elimina más tarde. El problema con el borrado suave es que los datos a eliminar siguen utilizando una cantidad significativa de memoria hasta que se eliminan de forma permanente. Esto es particularmente problemático en bases de datos vectoriales que utilizan HNSW, donde el consumo de memoria ya es un problema importante.

HNSW crea un gráfico en el que los nodos (vectores) se conectan en función de su proximidad en el espacio vectorial, y el recorrido por un gráfico HNSW se realiza como una lista de omisión. Para ello, las capas del gráfico están diseñadas de modo que algunas capas tengan muy pocos nodos. Cuando se eliminan vectores, especialmente aquellos en capas que tienen muy pocos nodos que sirven como conectores críticos en el gráfico, toda la estructura HNSW puede fragmentarse. Esta fragmentación puede dar lugar a nodos (o capas) que se desconecten del gráfico principal, lo que requiere la reconstrucción de todo el gráfico o, como mínimo, provocará una degradación de la eficiencia de las búsquedas.

HNSW utiliza entonces una técnica de eliminación suave, que marca los vectores para su eliminación pero no los elimina inmediatamente. Este enfoque reduce el gasto de reconstrucciones completas frecuentes, aunque sigue siendo necesaria una reconstrucción periódica para mantener el estado óptimo del gráfico.