Biblioteca de código abierto BLAS y LAPACK optimizada para muchas arquitecturas de CPU, sin incluir GPU.
ashvardanian/NumKong
Kernels matemáticos acelerados con SIMD para distancias, productos punto y operaciones con matrices en más de 15 tipos numéricos, con bindings para Python, Rust, C/C++, JS, Swift y Go.
- Estrellas
- 1,907
- Forks
- 142
- Issues abiertos
- 59
- Último commit
- hace 7 días
¿Qué es?
NumKong es una biblioteca numérica para operaciones con vectores y matrices, como productos punto, métricas de distancia y similitud, y multiplicación de matrices. Sus kernels están optimizados a mano con SIMD para x86, Arm, RISC-V, LoongArch, Power y WebAssembly, y admiten tipos numéricos que van desde enteros de 4 bits y flotantes de 6 bits hasta números complejos de 128 bits. Los productos punto y otras reducciones similares acumulan los valores en tipos más amplios, como Float16 en Float32 o Int8 en Int32, para evitar desbordamientos silenciosos.
La biblioteca está escrita en C y ofrece bindings para Python, Rust, C++, JavaScript, Swift y Go. No gestiona por sí misma los hilos ni la memoria: quienes la usan proporcionan su propio modelo de concurrencia y sus propios buffers, y las API de matrices empaquetadas permiten preparar los pesos una sola vez y reutilizarlos en muchas consultas. El proyecto documenta su precisión frente a referencias de precisión extendida e informa que su binario es mucho más pequeño que el de varias alternativas de estilo BLAS.
NumKong es adecuada para búsqueda y recuperación vectorial, cálculo de similitud entre embeddings, computación científica que requiere suma compensada y cargas de inferencia de baja precisión que utilizan tipos mini-float o enteros.
Funciones clave
- 01Ofrece kernels SIMD para productos punto, métricas de distancia y multiplicación de matrices en las principales plataformas de CPU y WASM.
- 02Admite más de 15 tipos numéricos, incluidos enteros de 4 bits, flotantes de 6 y 8 bits, Float16, BFloat16 y números complejos.
- 03Acumula los valores en tipos más amplios para evitar desbordamientos y usa suma compensada para Float64.
- 04Ofrece bindings para Python, Rust, C/C++, JavaScript, Swift y Go.
- 05Deja los hilos y la asignación de memoria a quien la usa, por lo que funciona con cualquier modelo de paralelismo o asignador.
- 06Ofrece API de matrices empaquetadas que permiten preparar los datos una sola vez para consultas repetidas.
Casos de uso
- Calcular la similitud coseno o euclidiana entre grandes conjuntos de embeddings para búsqueda vectorial.
- Ejecutar kernels de inferencia de baja precisión con datos Float8, Float16 o Int8.
- Integrar cálculos rápidos de distancia en una aplicación de Python o Rust sin incorporar una pila BLAS de gran tamaño.
- Ejecutar kernels numéricos en navegadores o Node.js mediante el binding de JavaScript.
Temas
Preguntas frecuentes
- ¿Qué es NumKong?
- Kernels matemáticos acelerados con SIMD para distancias, productos punto y operaciones con matrices en más de 15 tipos numéricos, con bindings para Python, Rust, C/C++, JS, Swift y Go. NumKong es una biblioteca numérica para operaciones con vectores y matrices, como productos punto, métricas de distancia y similitud, y multiplicación de matrices. Sus kernels están optimizados a mano con SIMD para x86, Arm, RISC-V, LoongArch, Power y WebAssembly, y admiten tipos numéricos que van desde enteros de 4 bits y flotantes de 6 bits hasta números complejos de 128 bits. Los productos punto y otras reducciones similares acumulan los valores en tipos más amplios, como Float16 en Float32 o Int8 en Int32, para evitar desbordamientos silenciosos.
- ¿NumKong es gratuito? ¿Qué licencia tiene?
- NumKong es open source bajo la licencia Apache-2.0. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿NumKong sigue mantenido?
- Mantenimiento activo. El último commit de NumKong fue el 31 oct 2026.
- ¿Para qué puedo usar NumKong?
- Calcular la similitud coseno o euclidiana entre grandes conjuntos de embeddings para búsqueda vectorial. Ejecutar kernels de inferencia de baja precisión con datos Float8, Float16 o Int8. Integrar cálculos rápidos de distancia en una aplicación de Python o Rust sin incorporar una pila BLAS de gran tamaño. Ejecutar kernels numéricos en navegadores o Node.js mediante el binding de JavaScript.
- ¿Dónde consigo NumKong?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/ashvardanian/NumKong
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Índice vectorial en proceso para Python y Rust que comprime embeddings a 2 o 4 bits por dimensión con TurboQuant y los busca directamente.
Biblioteca header-only de C++ acelerada con CUDA y wrappers de Python para primitivas reutilizables de machine learning, álgebra lineal y recuperación de información en GPUs NVIDIA.
Biblioteca de C++ en un solo archivo para búsqueda aproximada de vecinos más cercanos y clustering de vectores, con bindings para Python, JavaScript, Rust, Java, Go, Swift y más.
Framework de inferencia de redes neuronales de alto rendimiento en C++ para ejecutar modelos de deep learning en dispositivos móviles, integrados y de escritorio.
Biblioteca optimizada para GPU y scripts de referencia para entrenar grandes modelos Transformer con paralelismo multidimensional.