turbovec: un índice vectorial en Rust con enlaces Python que reduce la memoria hasta 8 veces

Fuentes: turbovec: a Rust vector index with Python bindings, built on Google Research's TurboQuant

turbovec es un índice vectorial escrito en Rust con bindings para Python, construido sobre el algoritmo TurboQuant de Google Research, un cuantizador data-oblivious con distorsión casi óptima y sin fase de entrenamiento separada. Según los benchmarks publicados en el repositorio, un corpus de 10 millones de documentos, que en float32 ocuparía 31 GB de RAM, se indexa en unos 4 GB y se consulta más rápido que FAISS. La ingesta es online: los vectores se añaden y quedan indexados sin pasos de entrenamiento ni reajustes al crecer el corpus. El núcleo de búsqueda emplea kernels SIMD escritos a mano: NEON SDOT/SMMLA en ARM y AVX-512 VNNI con vpermb en x86, con caídas a AVX2 y escalar. En las pruebas comunicadas, supera a FAISS IndexPQFastScan en todas las configuraciones, con una media de 3,4× a 4 bits y un 23% a 2 bits. El guardado es incremental: sync(path) persiste solo los cambios desde la última sincronización, con una sola llamada fsync y consistencia frente a caídas. Permite filtrar por una lista permitida de ids en el momento de la búsqueda, trabajo que el kernel aplica a granularidad de bloque de 32 vectores para evitar cómputo inútil. Funciona en local sin servicios gestionados y se integra como drop-in con LangChain, LlamaIndex, Haystack y Agno, además de ofrecer una API en Rust. En pruebas de recall con 100.000 vectores, la versión calibrada iguala o supera a FAISS IndexPQ en la mayoría de configuraciones, aunque en embeddings de baja dimensión queda por detrás a 2 bits.