Repolode
ashvardanian

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 中运行数值内核。

标签

#simd#linear-algebra#vector-search#matrix-multiplication#blas#mixed-precision#distance-metrics#arm-neon#assembly#cpp

常见问题

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 数据每日更新。

相关项目