ES
PrairieFire gestiona cambios frecuentes en índices vectoriales grandes
PrairieFire: Igniting High-Throughput Updates in Large-Scale Approximate Nearest Neighbor Search · arXiv:2610.23232
En palabras sencillas
PrairieFire es un sistema para buscar en colecciones grandes de vectores que siguen cambiando. Guarda los elementos nuevos en búferes, agrupa los cambios en lotes y reconstruye solo las partes afectadas de su índice, en vez de mover repetidamente cada vector.
En pruebas con 100 millones de vectores de SIFT y SPACEV, PrairieFire procesó actualizaciones y búsquedas a tasas más altas que tres sistemas comparados, con una precisión de búsqueda comparable o superior. Esos resultados corresponden a las cargas de trabajo probadas.
La investigación
Un índice de recomendaciones puede quedar desactualizado a medida que cambian sus vectores, pero actualizar uno con 100 millones de vectores podría requerir hasta 30.000 actualizaciones por segundo, cada una con una inserción y una eliminación. Los sistemas existentes basados en SSD no alcanzaron esa tasa estimada ni siquiera con más núcleos de CPU y ancho de banda de SSD. ¿Puede un índice mantener el ritmo reduciendo el trabajo de CPU?
PrairieFire guarda los cambios en vectores en búferes y reconstruye por lotes las particiones afectadas para acelerar las actualizaciones mientras permite las búsquedas.
En comparaciones con Greator, OdinANN y SPFresh, PrairieFire alcanzó tasas de actualización y búsqueda más altas en cargas de trabajo SIFT y SPACEV con 100 millones de vectores, con un recall@10 comparable o superior.
Los sistemas realizaron búsquedas y actualizaciones simultáneas, con asignaciones de hilos elegidas para buscar tasas aproximadamente equilibradas.
Con mil millones de vectores en SIFT, PrairieFire también superó a los sistemas comparados en tasa de actualización y búsqueda.
Estos resultados respaldan el enfoque del sistema en los entornos probados: agrupar los cambios y reconstruir localmente puede mantener altas tasas de actualización y conservar el rendimiento de búsqueda.
Estos resultados corresponden a cargas de trabajo concretas y a una plataforma de evaluación; además, los sistemas no recibieron asignaciones de recursos idénticas. Las pruebas no permiten establecer que se obtenga el mismo rendimiento con otros conjuntos de datos, sistemas o entornos de producción.
Qué muestran las pruebas
- El reto de la tasa de actualización
Para mantener actualizado un índice de recomendaciones con 100 millones de vectores, el artículo estima que podrían hacer falta hasta 30.000 actualizaciones emparejadas por segundo, cada una con una inserción y una eliminación. Los sistemas existentes basados en SSD no alcanzaron ese objetivo ni siquiera al aumentar sus núcleos de CPU y el ancho de banda de los SSD.
En un diagnóstico, SPFresh utilizó menos de 1 GB/s de los aproximadamente 120 GB/s que podían proporcionar los SSD, lo que señala el trabajo de CPU, y no el ancho de banda disponible, como restricción en esa prueba.
- Reconstrucción local del índice
PrairieFire combina CPU, GPU y SSD para buscar vecinos más cercanos de forma aproximada mientras se insertan y eliminan vectores continuamente. Guarda las actualizaciones en búferes, escribe en los SSD por lotes y vuelve a agrupar una partición desequilibrada junto con particiones cercanas, en vez de reasignar repetidamente los vectores uno por uno.
Los centroides actualizados se propagan hacia los niveles superiores del índice para que su estructura de encaminamiento pueda reflejar esos cambios.
- Resultados con 100 millones de vectores
Los autores compararon PrairieFire con Greator, OdinANN y SPFresh durante búsquedas y actualizaciones simultáneas. En cargas de trabajo SIFT y SPACEV con 100 millones de vectores, PrairieFire alcanzó entre unas 3 y 35 veces la tasa de actualización y entre 3 y 5 veces la tasa de búsqueda, con un recall@10 comparable o superior, una medida de la precisión de búsqueda.
Cada sistema usó una cantidad distinta de hilos, elegida para buscar tasas de actualización y búsqueda aproximadamente equilibradas.
- Escala hasta mil millones de vectores
En una carga de trabajo SIFT con mil millones de vectores, PrairieFire alcanzó unas tres veces la tasa de búsqueda y hasta unas 27 veces la tasa de actualización de los sistemas comparados. Tanto su tasa de actualización como su tasa de búsqueda llegaron a entre 36.000 y 39.000 consultas por segundo, y su recall fue superior al de las referencias.
Esta comparación aporta evidencia a mayor escala para la carga de trabajo y la configuración reportadas.
- Recall y pruebas en otros conjuntos de datos
Una prueba de los ajustes de centroides de PrairieFire observó que, en la carga de trabajo SIFT con 100 millones de vectores, el recall podía caer hasta un 3% sin esos ajustes, incluso con reconstrucciones del índice. Los ajustes en dos niveles del índice evitaron esa pérdida y mejoraron el recall.
Las pruebas con Wikipedia y Gist también mostraron una tasa de actualización más alta que la de OdinANN, aunque las mejoras se redujeron al aumentar la dimensionalidad. Estos resultados se limitan a las cargas de trabajo y los conjuntos de datos probados.
Detalles
- Autores del paper original
- Yuchen Huang, Baiteng Ma, Yiping Sun, Xiao Chen, Rui Ma
- Enviado a arXiv
- Licencia
- CC BY-SA 4.0