FAISS, la biblioteca de búsqueda por similitud de Meta, encuentra los vecinos más cercanos en espacios vectoriales de alta dimensión a escala de miles de millones de elementos. Este artículo técnico detalla los mecanismos que hacen posible esa capacidad.
En la inteligencia artificial actual, las imágenes, textos y audios se representan como embeddings, listas de números que capturan su significado semántico. En un espacio geométrico de alta dimensión, los conceptos similares se ubican cerca; la búsqueda del vecino más cercano consiste en localizar el vector más próximo a una consulta. El método de fuerza bruta, que evalúa todas las distancias, resulta inviable a gran escala: mil millones de descriptores SIFT de 128 dimensiones requieren 512 GB de RAM y mil millones de cálculos por búsqueda, un costo inasumible para sistemas en tiempo real.
FAISS recurre a técnicas de búsqueda aproximada que sacrifican una fracción menor de precisión a cambio de aceleraciones de varios órdenes de magnitud. La primera estrategia, IVF (Inverted File), particiona el espacio en celdas de Voronoi mediante clustering K-Means. En lugar de escanear la base de datos completa, el sistema identifica la celda donde cae la consulta y solo compara con los vectores contenidos en ella y sus vecinas. La segunda estrategia, la cuantización por producto (PQ) introducida por Jégou, Douze y Schmid en 2011, comprime cada vector a 8 bytes preservando estimaciones de distancia útiles. Divide el vector en 8 sub-bloques de 16 dimensiones, asigna a cada uno un codebook independiente de 256 centroides y reemplaza el sub-vector por el índice del centroide más cercano, logrando una reducción de memoria de 64 veces. Un codebook plano equivalente exigiría 2^64 centroides y 9,4 zettabytes de almacenamiento; la factorización por sub-bloques lo mantiene compacto, alojable en caché L2.
Los sistemas de producción combinan IVF y PQ: la primera acelera la búsqueda descartando la mayor parte de la base de datos, y la segunda comprime los vectores restantes para abaratar las comparaciones. El artículo incluye demostraciones interactivas para comparar el rendimiento de diferentes índices sobre conjuntos de datos aleatorios.
