@bpinternal/gravity

中文文档
0.2.0发布于 2026/11/05MITTypeScriptESM + CJS构建来源已验证近 30 天下载 1.1万

基于通用密度的集群(UMAP + HDBSCAN),从 Rust 编译为 Web Assembly.

中文使用文档
文档目录6 节
  1. 使用量
  2. 选项
  3. 结果形状
  4. 如何运作
  5. 发展
  6. 免责声明

@ bp 内部/ 重力

基于高维嵌入的通用密度集群 无本地 依赖关系。集群引擎用 Rust 写成,编译为 wasm32-unknown-unknown,然后用一个小的 TypeScript API 包起来——所以它随处可见 节点运行,没有系统库,安装时没有构建步骤.

管道将矢量减少到低维空间 UMAP 地图,然后将它们分组 与 高频。不会掉入任何密集区域的点会被作为噪音还原.

使用量

import { cluster } from '@bpinternal/gravity'

const result = cluster({
  ids: ['a', 'b', 'c', 'd'],
  embeddings: [
    [0.1, 0.2 /* ... */],
    [0.1, 0.3 /* ... */],
    [0.9, 0.8 /* ... */],
    [0.7, 0.1 /* ... */]
  ],
  dim: 1536
})

result.clusters // [{ itemIds, centroid, assignRadius }, ...]
result.noise // ids that weren't assigned to any cluster
result.labels // raw HDBSCAN label per input point, in input order (-1 = noise)

embeddings[i] 是用于 ids[i],每个矢量必须准确 dim 组件.

选项

cluster 使用可选的第二个参数来覆盖 UMAP/HDBSCAN 参数. 任何未设置的字段都归为默认 .

cluster(dataset, {
  // UMAP (dimensionality reduction)
  initType: 'PCA', // 'PCA' | 'Random'           (default 'PCA')
  nNeighbors: 15, //   local neighborhood size    (default 15)
  nComponents: 5, //   reduced dimensions         (default 5)
  minDist: 0, //       packing tightness          (default 0)
  spread: 1, //        embedded scale             (default 1)
  nEpochs: 500, //     optimization epochs        (default 500)
  negativeSampleRate: 5, //                        (default 5)
  seed: 42, //         RNG seed (for determinism) (default 42)

  // HDBSCAN (density clustering)
  minClusterSize: 10, // min points per cluster   (default 10)
  minSamples: 1 //      core-distance neighbors   (default 1)
})

结果形状

外地说明
clusters所发现的集群.
clusters[].itemIds成员IDs,由与中心机器人相距上升的余弦所订购.
clusters[].centroid原始矢量空间中成员的平均值 .
clusters[].assignRadius余弦-相距半径( 已声明为 [0.25, 0.35]用于分配新分数.
noise没有指派给任何集群的编码 .
labels每个输入点的原始HDBSCAN标签,输入顺序. -1 这是噪音.
umap_config 编号 : hdbscan_config使用的参数 .

运行是 决定性: 同一数据集,按相同的顺序,总是产生 相同的集群(UMAP以固定种子为种子).

如何运作

  1. UMAP 地图 将原始矢量(例如 1536-D) 投射到一个低维空间( 5- D) 使用余弦测量,保留局部结构.
  2. 高频 在缩小的空间中找到密度集群(euclide 度量, EOM) 组合选择),将稀有点标记为噪声.
  3. 中心点和任务半径在 原文 矢量空间是这样 下游代码可以通过同位素相似性来指定新的点.

发展

引擎就在这里 rssrc/ 并暴露在WASM边界之外 wasm-bindgen。 。 。 . wasm-pack 编译到 node 财务报告和审定财务报表 web 目标, 原二进制是 base64-内入生成的胶水,以及 build.ts 捆绑 类型脚本包装入 src/ 绕着它去筑起。 这符合 在此重播中的其他 Rust 套件(entities, (中文(简体) ), verel) (中文(简体) ).

构建需要 Rust 工具链( 以 wasm-pack:

pnpm build        # wasm-pack (node + web) + esbuild bundles + type declarations
pnpm build:node   # just the Node target
pnpm build:web    # just the browser target
pnpm build:worker # just the Cloudflare Workers target
pnpm test         # run the Rust tests, then build the node target and run the wrapper tests
pnpm test:rust    # just the Rust unit tests (cargo)
pnpm test:unit    # just the TS wrapper tests (vitest)
pnpm check        # format + type check

建筑的发射 dist/node (共同公报), dist/web (ESM), dist/worker (ESM),以及 dist/types。节点和网络捆绑将原站作为基座64。 云花岗工人不能 从字节编译 Web Assembly, 所以 dist/worker 进口 gravity_bg.wasm 作为模块,其中 wrangler和 Cloudflare Vite 插件在构建时编译. 包裹 workerd 导出 条件选择它,所以 import { cluster } from '@bpinternal/gravity' 在一个工人中工作 没有设置.

免责声明

此软件包将在 @bpinternal 组织。 此所有软件包 组织意图用于: 瓶装 内部的团队 并不适合我们的社区。 因为包裹是为我们准备的 自己的用例,它们的API可能不太稳定,接受断开的更改而无太多 缺乏以社区为重点的支持。 然而,这些 因为重要原因 开源. 因此,如果你想安装或叉子,这个软件包完全可以自由使用 做到这一点。 我们强烈建议你正确标记你的版本.

博讯工程组.

版本与发布记录

@bpinternal/gravity 共发布 3 个版本,首次发布于 2026/07/01;过去 12 个月发布了 3 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.2.0latest2026/11/053 天前
0.1.12026/07/014 个月前
0.1.02026/07/014 个月前

关于 @bpinternal/gravity 的常见问题

@bpinternal/gravity 是什么?

基于通用密度的集群(UMAP + HDBSCAN),从 Rust 编译为 Web Assembly.

如何安装 @bpinternal/gravity?

在项目目录运行 npm install @bpinternal/gravity,或使用 pnpm add / yarn add / bun add。

@bpinternal/gravity 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@bpinternal/gravity 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@bpinternal/gravity 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=16.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@bpinternal/gravity 可以商用吗?

@bpinternal/gravity 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@bpinternal/gravity 的下载量有多少?

根据 npm 官方下载统计,@bpinternal/gravity 在 2026/10/09 – 2026/11/07 这 30 天内被下载 10,910 次,日均约 364 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@bpinternal/gravity 还在维护吗?

最新版本 0.2.0 发布于 2026/11/05(3 天前);至今共发布 3 个版本,其中过去 12 个月发布了 3 个;首次发布于 2026/07/01。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。