Skip to content

Releases: saehm/DruidJS

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 02 Aug 16:01

What's Changed

  • WASM (AssemblyScript + SIMD) kernels with JS fallbacks for the matrix, DR and clustering hot paths
  • Added DR methods: PaCMAP, LocalMAP, StressMDS, KKMDS, MINFOTree
  • Added Ward linkage to HierarchicalClustering
  • Repaired HNSW, LSH, NNDescent and BallTree; unified the KNN parameter defaults
  • Corrected UMAP, and moved TriMap to the 1.1.5 algorithm
  • Pluggable KNN index in LLE, LTSA, PaCMAP and LocalMAP
  • Replaced the Mersenne Twister randomizer with sfc32
  • New documentation pages and showcases

Performance

1.71× across 44 cases, benchmarked between the two published packages on Node 24. The third
column re-runs 0.9.0 with setWasmEnabled(false), separating what the kernels bought from what the
rewrites bought:

Group 0.9.0 WASM off
dimred 2.35× 1.20×
knn-search 2.24× 2.29×
matrix 2.21× 1.02×
knn-build 1.30× 1.40×
clustering 1.15× 1.12×
metrics 0.97× 1.02×

Matrix and dimred are the kernels; knn-search is the index repairs, which touch no kernels at all.
Best individual cases: SQDMDS 23× (82 → 4 ms), SMACOF 12.9× (1132 → 87 ms), LSH search
8.4×, BallTree search 4.2×, dot 400×400 4.1×, t-SNE 3.1×, PCA 2.8×.

LSH build is 2.5× slower on purpose — 0.9.0 estimates the bucket width from the data instead of a
constant that made every point collide, which is what buys the 8.4× search.

Correctness

scanned is the fraction of the dataset a query actually computes distances for; an approximate
index scanning ~1.0 is not an index.

Index recall 0.8.0 recall 0.9.0 scanned 0.8.0 scanned 0.9.0
HNSW 0.635 1.000 0.135 0.170
NNDescent crash 0.841 crash 0.161
LSH 1.000 0.749 1.000 0.058
BallTree 1.000 1.000 0.915 0.267

HNSW returned the right neighbour 64% of the time in 0.8.0, NNDescent did not run at all, and LSH
was a brute-force scan — its 1.000 recall was an artifact of that. Also fixed: MeanShift's JS
fallback disagreed with its kernel, and PCA returned stale projections after parameter().

DR quality is unchanged or better throughout.

  • Badges by @saehm in #41
  • Add PaCMAP and LocalMAP dimensionality reduction algorithms by @patcon in #49

New Contributors

Full Changelog: v0.8.0...v0.9.0

v0.8.0

Choose a tag to compare

@saehm saehm released this 25 Feb 08:18

What's Changed

  • Many bugfixes
  • New Documentation
  • Added DR methods: SMACOF
  • Added KNN methods: ANNOY, KDTree, LSH, NNDescent
  • Added Clustering methods: CURE, MeanShift, XMeans
  • Types
  • Bugfix in UMAP algorithm by @johkehrer in #29
  • Bump terser from 5.10.0 to 5.14.2 by @dependabot[bot] in #31

Full Changelog: v0.6.0...v0.8.0

0.6.0

Choose a tag to compare

@saehm saehm released this 05 Mar 08:42

What's Changed

Full Changelog: v0.5.2...v0.6.0

0.5.2

Choose a tag to compare

@saehm saehm released this 01 Mar 12:20

Bugfixes
new API

0.4.1

Choose a tag to compare

@saehm saehm released this 16 Feb 16:21

Bugfixes

v0.3.5

Choose a tag to compare

@saehm saehm released this 24 Oct 09:34

added TopoMap #9

v0.3.1

Choose a tag to compare

@saehm saehm released this 14 Oct 10:29
npm fix

v0.3.0

Choose a tag to compare

@saehm saehm released this 14 Sep 10:00
fixes

v0.2.1

Choose a tag to compare

@saehm saehm released this 06 Sep 14:05

0.2.0

Choose a tag to compare

@saehm saehm released this 06 Sep 13:21

...