Manticore reescribe su backend de embeddings ONNX y multiplica por 14 el rendimiento

Fuentes: 14× faster embeddings: how we rebuilt the ONNX path in Manticore

Manticore Search ha sustituido en la versión 27.1.5 el camino de inferencia de embeddings que pasaba por SentenceTransformers sobre Candle por un nuevo backend basado en ONNX Runtime (ORT), el motor de inferencia en C++ de Microsoft. El cambio llega tras meses de反馈 de usuarios que señalaban el rendimiento de la función Auto Embeddings —que convierte automáticamente cualquier columna de texto en un vector sin necesidad de un servicio de modelos externo— como su principal cuello de botella.

En pruebas internas con el modelo all-MiniLM-L12-v2 sobre un servidor de 16 núcleos y 32 hilos, el camino anterior se movía entre 5 y 11 documentos por segundo en todo el espectro de configuraciones probadas, mientras que el nuevo se sitúa en la banda de 70 a 230 docs/sec. En promedio, la mejora ronda los 14×. La latencia de un INSERT simple baja a unos 14 ms con un único cliente y a unos 56 ms con ocho clientes concurrentes, frente a los más de 200 ms que registraba Candle.

Los autores explican que probaron dos patrones habituales en Rust —una Session compartida tras un Mutex y un pool de sesiones, una por CPU— y ambos resultaron inadecuados para esta carga. La clave fue descubrir que la API C Run() de ORT es segura para hilos en Linux y macOS, lo que permite compartir una única sesión entre llamantes concurrentes sin bloqueo. En Windows, donde el modelo de hilos de ORT presenta problemas conocidos, se serializa Run() con un Mutex. Otros ajustes decisivos fueron desactivar intra_op_spinning y renunciar al batching interno dentro del worker. La API no cambia para el usuario: cualquier tabla que apunte a un modelo con archivo .onnx en HuggingFace recoge automáticamente el nuevo camino más rápido.