@ 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以固定种子为种子).
如何运作
- UMAP 地图 将原始矢量(例如 1536-D) 投射到一个低维空间( 5- D) 使用余弦测量,保留局部结构.
- 高频 在缩小的空间中找到密度集群(euclide 度量, EOM) 组合选择),将稀有点标记为噪声.
- 中心点和任务半径在 原文 矢量空间是这样 下游代码可以通过同位素相似性来指定新的点.
发展
引擎就在这里 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可能不太稳定,接受断开的更改而无太多
缺乏以社区为重点的支持。 然而,这些
因为重要原因
开源. 因此,如果你想安装或叉子,这个软件包完全可以自由使用
做到这一点。 我们强烈建议你正确标记你的版本.
博讯工程组.