面向多种 CPU 架构优化的开源 BLAS/LAPACK 线性代数库。
ashvardanian/NumKong
基于 SIMD 加速的数值计算库,提供距离、点积与矩阵运算,支持 15 种以上数值类型,并提供多语言绑定。
- Star
- 1,907
- Fork
- 142
- 未关闭 Issue
- 59
- 最近提交
- 7天前
这是什么?
NumKong 是一个面向向量与矩阵运算的数值计算库,提供点积、距离与相似度度量以及矩阵乘法等核心操作。其内核使用 SIMD 手工优化,覆盖 x86、Arm、RISC-V、LoongArch、Power 和 WebAssembly 等架构,数值类型从 4 位整数、6 位浮点一直到 128 位复数。点积等归约运算会在更宽的类型上累加,例如 Float16 累加到 Float32、Int8 累加到 Int32,避免结果悄然溢出。
库本身用 C 编写,并提供 Python、Rust、C++、JavaScript、Swift 和 Go 的绑定。它不管理线程和内存,调用方可以自行选择并行模型和缓冲区;打包矩阵的接口则允许把权重预处理一次后反复用于大量查询。项目公开了与扩展精度基准的精度对比,二进制体积也明显小于多个 BLAS 类替代方案。
适用于向量检索、嵌入相似度计算、需要补偿求和的科学计算,以及使用迷你浮点或整数类型的低精度推理场景。
核心功能
- 01为点积、距离度量和矩阵乘法提供覆盖主流 CPU 与 WASM 的 SIMD 内核。
- 02支持 15 种以上数值类型,包括 4 位整数、6 位和 8 位浮点、Float16、BFloat16 及复数。
- 03在更宽类型上累加以避免溢出,Float64 使用补偿求和。
- 04提供 Python、Rust、C/C++、JavaScript、Swift 和 Go 的绑定。
- 05线程与内存分配交由调用方管理,可配合任意并行模型或分配器使用。
- 06提供打包矩阵接口,数据只需准备一次即可反复用于查询。
适用场景
- 在大规模嵌入向量之间计算余弦或欧氏相似度,用于向量检索。
- 在 Float8、Float16 或 Int8 数据上运行低精度推理内核。
- 在 Python 或 Rust 应用中嵌入高速距离计算,无需引入庞大的 BLAS 依赖。
- 通过 JavaScript 绑定在浏览器或 Node.js 中运行数值内核。
标签
常见问题
- NumKong 是什么?
- 基于 SIMD 加速的数值计算库,提供距离、点积与矩阵运算,支持 15 种以上数值类型,并提供多语言绑定。 NumKong 是一个面向向量与矩阵运算的数值计算库,提供点积、距离与相似度度量以及矩阵乘法等核心操作。其内核使用 SIMD 手工优化,覆盖 x86、Arm、RISC-V、LoongArch、Power 和 WebAssembly 等架构,数值类型从 4 位整数、6 位浮点一直到 128 位复数。点积等归约运算会在更宽的类型上累加,例如 Float16 累加到 Float32、Int8 累加到 Int32,避免结果悄然溢出。
- NumKong 可以免费使用吗?用的什么许可证?
- NumKong 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
- NumKong 还在维护吗?
- 活跃维护中。NumKong 最近一次提交是在 2026年10月31日。
- NumKong 适合用来做什么?
- 在大规模嵌入向量之间计算余弦或欧氏相似度,用于向量检索。 在 Float8、Float16 或 Int8 数据上运行低精度推理内核。 在 Python 或 Rust 应用中嵌入高速距离计算,无需引入庞大的 BLAS 依赖。 通过 JavaScript 绑定在浏览器或 Node.js 中运行数值内核。
- 在哪里获取 NumKong?
- 源代码和安装说明在 GitHub 上:https://github.com/ashvardanian/NumKong
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
面向 Python 和 Rust 的进程内向量索引,基于 TurboQuant 将嵌入压缩到每维 2 或 4 比特并直接检索。
面向 NVIDIA GPU 的 CUDA 加速可复用基础算法与原语库,涵盖机器学习、线性代数和信息检索。
单文件 C++ 向量近似最近邻搜索与聚类引擎,提供 Python、JavaScript、Rust 等多语言绑定。
一个用 C++ 编写的高性能神经网络推理框架,用于在手机、嵌入式和桌面设备上运行深度学习模型。
面向大规模 Transformer 模型训练的 GPU 优化库与参考训练脚本,支持多维并行。