¿Cómo recupera espacio la compactación de bases de datos vectoriales tras eliminar documentos?

Eva Wong es la Redactora técnica y manitas residente en ZimaSpace. Una geek de toda la vida con pasión por los homelabs y el software de código abierto, se especializa en traducir conceptos técnicos complejos en guías accesibles y prácticas. Eva cree que el autoalojamiento debe ser divertido, no intimidante. A través de sus tutoriales, empodera a la comunidad para desmitificar las configuraciones de hardware, desde construir su primer NAS hasta dominar los contenedores Docker.

La compactación de bases de datos vectoriales recupera el espacio eliminado al reescribir los registros activos en segmentos limpios y retirar los archivos de segmentos antiguos que aún contienen vectores eliminados.

Eliminar un documento doméstico de una biblioteca RAG local puede hacer que desaparezca de la búsqueda de inmediato, mientras que el uso del disco apenas cambia. Esto no significa necesariamente que la eliminación haya fallado. Muchas bases de datos vectoriales separan la visibilidad lógica de la limpieza del almacenamiento físico para que las escrituras en primer plano sigan siendo rápidas y los lectores puedan continuar usando segmentos inmutables o orientados a anexos. La compactación es la ruta de mantenimiento posterior que convierte esas eliminaciones lógicas en una representación física más pequeña.

Una eliminación normalmente cambia la visibilidad antes de reescribir los bytes almacenados

Editar físicamente un archivo de índice grande con cada eliminación generaría escrituras aleatorias costosas y una concurrencia compleja. En su lugar, muchos motores registran un marcador de eliminación, un tombstone o un registro de eliminaciones que indica a la búsqueda que ignore el vector.

Los tombstones de HNSW permiten que los objetos eliminados dejen de ser aptos para la búsqueda en el grafo antes de que el mantenimiento en segundo plano elimine físicamente todo su estado del índice.

Por tanto, el resultado visible para el usuario y el resultado a nivel de disco se producen en momentos distintos. El registro puede dejar de aparecer en los resultados de vecinos más cercanos mientras sus bytes antiguos permanecen dentro de un segmento existente.

Esta separación también proporciona a la base de datos margen para coordinar consultas simultáneas, réplicas, instantáneas y reglas de retención antes de destruir las estructuras de almacenamiento históricas.

Los registros eliminados se acumulan dentro de los segmentos hasta alcanzar un umbral de limpieza

Un segmento puede contener tanto vectores activos como registros que ya no son aptos para la búsqueda. A medida que se acumulan actualizaciones y eliminaciones, disminuye la proporción de datos útiles frente a los datos obsoletos.

Un umbral de vectores eliminados puede retrasar la limpieza costosa hasta que se hayan acumulado suficientes puntos obsoletos para que valga la pena reescribir un segmento.

Esperar a alcanzar un umbral permite amortizar el trabajo de mantenimiento. Reescribir un segmento para recuperar un único registro eliminado y pequeño costaría más E/S que el espacio ahorrado. En un servidor doméstico con reindexaciones frecuentes, la cantidad visible de almacenamiento físico obsoleto puede aumentar durante un tiempo antes de que el optimizador decida que la limpieza merece la pena.

La compactación copia los datos activos en segmentos nuevos o fusionados

Una vez iniciado el mantenimiento, la base de datos lee los segmentos de origen aptos, omite los registros eliminados lógicamente y escribe los vectores y las cargas útiles supervivientes en una nueva representación compacta.

La compactación como fusión de segmentos y limpieza de eliminaciones reescribe los datos supervivientes en segmentos más limpios, omitiendo los registros que ya se han eliminado lógicamente o han caducado.

Los segmentos pequeños pueden fusionarse al mismo tiempo, lo que reduce el número de estructuras independientes que la búsqueda debe consultar. El nuevo segmento representa el estado activo en lugar de conservar todas las mutaciones históricas.

Esta reescritura puede necesitar temporalmente espacio libre adicional, ya que los segmentos antiguos y nuevos pueden coexistir hasta que se verifique el reemplazo y se active.

Los índices se reconstruyen alrededor del conjunto de vectores supervivientes

Eliminar los bytes de las cargas útiles vectoriales es solo una parte de la limpieza. Los enlaces del grafo, las estructuras cuantizadas, los filtros y los metadatos de los segmentos pueden hacer referencia a registros que ya no pertenecen al segmento activo.

Una ruta de compactación que reconstruye los índices durante la optimización garantiza que las estructuras de búsqueda del grafo y auxiliares correspondan al conjunto de vectores supervivientes, en lugar de conservar referencias a puntos eliminados.

En HNSW, esto puede cambiar la topología del grafo incluso cuando los vectores restantes no han cambiado. Por eso la compactación puede afectar al recorrido de vecinos aproximados y, al mismo tiempo, conservar el mismo conjunto de datos lógico. El mecanismo descrito en este artículo es el ciclo de vida del almacenamiento: los registros obsoletos se excluyen del índice reescrito para que su huella física pueda desaparecer finalmente.

Los segmentos antiguos deben retirarse antes de poder liberar su almacenamiento

Una vez que el segmento compactado se convierte en la representación activa, los segmentos antiguos se marcan como obsoletos o se descartan. Es posible que los archivos subyacentes aún esperen un periodo de recolección de basura o retención antes de que se liberen realmente los bloques del disco.

Cuando la recolección de basura sigue a la compactación, los archivos de segmentos descartados pueden permanecer temporalmente después de que el reemplazo compactado esté activo, por lo que el espacio del sistema de archivos puede liberarse más tarde que los cambios de visibilidad en las consultas.

Las instantáneas, la retención de copias de seguridad, la replicación o los lectores que mantienen referencias pueden prolongar ese retraso en los sistemas que conservan generaciones anteriores de segmentos.

Por ello, la supervisión del disco debe distinguir entre el número lógico de entidades, el tamaño de los segmentos activos, el espacio temporal de compactación, los segmentos descartados y la capacidad libre del sistema de archivos.

La compactación es un mantenimiento en segundo plano con su propio coste de recursos

Leer segmentos antiguos, escribir otros nuevos, reconstruir índices y eliminar archivos obsoletos consume CPU, ancho de banda del disco, memoria y, en ocasiones, almacenamiento temporal duplicado.

Las métricas de limpieza de tombstones permiten observar la reparación de eliminaciones como una carga de trabajo de mantenimiento con sus propios ciclos, duraciones y consumo de recursos.

Evitar registros obsoletos del índice tras actualizar archivos es un requisito previo: una eliminación del origen debe llegar primero a la base de datos vectorial antes de que la compactación pueda recuperar la representación obsoleta.

Centro de Tecnología e IA

Más para leer

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.