usearch 2.8.14 → 2.8.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/prerelease.yml +4 -4
- package/.github/workflows/release.yml +5 -2
- package/CITATION.cff +1 -1
- package/Cargo.toml +1 -1
- package/README.md +2 -2
- package/VERSION +1 -1
- package/conanfile.py +1 -1
- package/include/usearch/index.hpp +1 -1
- package/include/usearch/index_plugins.hpp +2 -1
- package/package.json +1 -1
- package/simsimd/README.md +55 -25
- package/simsimd/bench.js +51 -0
- package/simsimd/binding.gyp +18 -0
- package/simsimd/include/simsimd/probability.h +5 -5
- package/simsimd/include/simsimd/simsimd.h +6 -2
- package/simsimd/include/simsimd/spatial.h +19 -20
- package/simsimd/javascript/bench.js +20 -10
- package/simsimd/javascript/dist-package-cjs.json +3 -0
- package/simsimd/javascript/dist-package-esm.json +3 -0
- package/simsimd/javascript/fallback.ts +193 -0
- package/simsimd/javascript/node-gyp-build.d.ts +1 -0
- package/simsimd/javascript/simsimd.ts +124 -0
- package/simsimd/javascript/test.mjs +153 -0
- package/simsimd/javascript/tsconfig-base.json +25 -0
- package/simsimd/javascript/tsconfig-cjs.json +8 -0
- package/simsimd/javascript/tsconfig-esm.json +8 -0
- package/simsimd/package-lock.json +1688 -0
- package/simsimd/package.json +26 -11
- package/wasmer.toml +1 -1
- package/simsimd/javascript/simsimd.js +0 -45
- package/simsimd/javascript/test/simsimd.test.js +0 -47
package/simsimd/package.json
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "simsimd",
|
|
3
|
-
"version": "3.6.
|
|
3
|
+
"version": "3.6.7",
|
|
4
4
|
"description": "Fastest SIMD-Accelerated Vector Similarity Functions for x86 and Arm",
|
|
5
5
|
"homepage": "https://github.com/ashvardanian/simsimd",
|
|
6
6
|
"author": "Ash Vardanian",
|
|
7
7
|
"license": "Apache 2.0",
|
|
8
|
-
"main": "javascript/simsimd.js",
|
|
9
8
|
"keywords": [
|
|
10
9
|
"vector",
|
|
11
10
|
"distance",
|
|
@@ -22,25 +21,41 @@
|
|
|
22
21
|
"simd",
|
|
23
22
|
"f16"
|
|
24
23
|
],
|
|
25
|
-
"type": "module",
|
|
26
24
|
"scripts": {
|
|
27
|
-
"
|
|
25
|
+
"install": "node-gyp-build",
|
|
26
|
+
"prebuild-single": "prebuildify --napi --strip --target=10.4.0",
|
|
27
|
+
"prebuild-arm64": "prebuildify --arch arm64 --napi --strip --target=10.4.0",
|
|
28
|
+
"prebuild-darwin-x64+arm64": "prebuildify --arch arm64+x64 --napi --strip --target=10.4.0",
|
|
29
|
+
"build-js": "rm -fr javascript/dist/* && tsc -p javascript/tsconfig-esm.json && tsc -p javascript/tsconfig-cjs.json && cp javascript/dist-package-esm.json javascript/dist/esm/package.json && cp javascript/dist-package-cjs.json javascript/dist/cjs/package.json",
|
|
30
|
+
"test": "node --test ./javascript/test.mjs",
|
|
28
31
|
"bench": "node ./javascript/bench.js"
|
|
29
32
|
},
|
|
30
|
-
"
|
|
33
|
+
"main": "javascript/dist/cjs/simsimd.js",
|
|
34
|
+
"module": "javascript/dist/esm/simsimd.js",
|
|
35
|
+
"exports": {
|
|
36
|
+
".": {
|
|
37
|
+
"import": "./javascript/dist/esm/simsimd.js",
|
|
38
|
+
"require": "./javascript/dist/cjs/simsimd.js"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
31
41
|
"engines": {
|
|
32
42
|
"node": "~10 >=10.20 || >=12.17"
|
|
33
43
|
},
|
|
34
44
|
"dependencies": {
|
|
35
|
-
"@types/node": "^20.
|
|
36
|
-
"bindings": "
|
|
37
|
-
"node-addon-api": "^3.
|
|
45
|
+
"@types/node": "^20.10.7",
|
|
46
|
+
"bindings": "^1.5.0",
|
|
47
|
+
"node-addon-api": "^3.2.1",
|
|
48
|
+
"node-gyp-build": "^4.8.0"
|
|
38
49
|
},
|
|
39
50
|
"devDependencies": {
|
|
51
|
+
"@types/bindings": "^1.5.5",
|
|
52
|
+
"node-gyp": "^10.0.1",
|
|
53
|
+
"prebuildify": "^6.0.0",
|
|
54
|
+
"typescript": "^5.3.3"
|
|
55
|
+
},
|
|
56
|
+
"optionalDependencies": {
|
|
40
57
|
"benchmark": "^2.1.4",
|
|
41
58
|
"mathjs": "^11.11.2",
|
|
42
|
-
"
|
|
43
|
-
"typescript": "^5.1.6",
|
|
44
|
-
"usearch": "^2.7.2"
|
|
59
|
+
"usearch": "^2.8.15"
|
|
45
60
|
}
|
|
46
61
|
}
|
package/wasmer.toml
CHANGED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
const compiled = require('bindings')('simsimd');
|
|
2
|
-
|
|
3
|
-
module.exports = {
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* @brief Computes the squared Euclidean distance between two vectors.
|
|
7
|
-
* @param {Float32Array|Int8Array} a - The first vector.
|
|
8
|
-
* @param {Float32Array|Int8Array} b - The second vector.
|
|
9
|
-
* @returns {number} The squared Euclidean distance between vectors a and b.
|
|
10
|
-
*/
|
|
11
|
-
sqeuclidean: compiled.sqeuclidean,
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* @brief Computes the cosine similarity between two vectors.
|
|
15
|
-
* @param {Float32Array|Int8Array} a - The first vector.
|
|
16
|
-
* @param {Float32Array|Int8Array} b - The second vector.
|
|
17
|
-
* @returns {number} The cosine similarity between vectors a and b.
|
|
18
|
-
*/
|
|
19
|
-
cosine: compiled.cosine,
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* @brief Computes the inner product of two vectors.
|
|
23
|
-
* @param {Float32Array} a - The first vector.
|
|
24
|
-
* @param {Float32Array} b - The second vector.
|
|
25
|
-
* @returns {number} The inner product of vectors a and b.
|
|
26
|
-
*/
|
|
27
|
-
inner: compiled.inner,
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* @brief Computes the bitwise Hamming distance between two vectors.
|
|
31
|
-
* @param {Uint8Array} a - The first vector.
|
|
32
|
-
* @param {Uint8Array} b - The second vector.
|
|
33
|
-
* @returns {number} The Hamming distance between vectors a and b.
|
|
34
|
-
*/
|
|
35
|
-
hamming: compiled.hamming,
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* @brief Computes the bitwise Jaccard similarity coefficient between two vectors.
|
|
39
|
-
* @param {Uint8Array} a - The first vector.
|
|
40
|
-
* @param {Uint8Array} b - The second vector.
|
|
41
|
-
* @returns {number} The Jaccard similarity coefficient between vectors a and b.
|
|
42
|
-
*/
|
|
43
|
-
jaccard: compiled.jaccard,
|
|
44
|
-
|
|
45
|
-
};
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import test from 'node:test';
|
|
2
|
-
import bindings from 'bindings';
|
|
3
|
-
import assert from 'node:assert';
|
|
4
|
-
|
|
5
|
-
const simsimd = bindings('simsimd');
|
|
6
|
-
|
|
7
|
-
function assertAlmostEqual(actual, expected, tolerance = 1e-6) {
|
|
8
|
-
const lowerBound = expected - tolerance;
|
|
9
|
-
const upperBound = expected + tolerance;
|
|
10
|
-
assert(actual >= lowerBound && actual <= upperBound, `Expected ${actual} to be almost equal to ${expected}`);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
test('Distance from itself', () => {
|
|
14
|
-
|
|
15
|
-
const f32s = new Float32Array([1.0, 2.0, 3.0]);
|
|
16
|
-
assertAlmostEqual(simsimd.sqeuclidean(f32s, f32s), 0.0, 0.01);
|
|
17
|
-
assertAlmostEqual(simsimd.cosine(f32s, f32s), 0.0, 0.01);
|
|
18
|
-
|
|
19
|
-
const f32sNormalized = new Float32Array([1.0 / Math.sqrt(14), 2.0 / Math.sqrt(14), 3.0 / Math.sqrt(14)]);
|
|
20
|
-
assertAlmostEqual(simsimd.inner(f32sNormalized, f32sNormalized), 0.0, 0.01);
|
|
21
|
-
|
|
22
|
-
const f32sDistribution = new Float32Array([1.0 / 6, 2.0 / 6, 3.0 / 6]);
|
|
23
|
-
assertAlmostEqual(simsimd.kullbackleibler(f32sDistribution, f32sDistribution), 0.0, 0.01);
|
|
24
|
-
assertAlmostEqual(simsimd.jensenshannon(f32sDistribution, f32sDistribution), 0.0, 0.01);
|
|
25
|
-
|
|
26
|
-
const u8s = new Uint8Array([1, 2, 3]);
|
|
27
|
-
assertAlmostEqual(simsimd.hamming(u8s, u8s), 0.0, 0.01);
|
|
28
|
-
assertAlmostEqual(simsimd.jaccard(u8s, u8s), 0.0, 0.01);
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
const f32Array1 = new Float32Array([1.0, 2.0, 3.0]);
|
|
32
|
-
const f32Array2 = new Float32Array([4.0, 5.0, 6.0]);
|
|
33
|
-
|
|
34
|
-
test('Squared Euclidean Distance', () => {
|
|
35
|
-
const result = simsimd.sqeuclidean(f32Array1, f32Array2);
|
|
36
|
-
assertAlmostEqual(result, 27.0, 0.01);
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
test('Inner Product', () => {
|
|
40
|
-
const result = simsimd.inner(f32Array1, f32Array2);
|
|
41
|
-
assertAlmostEqual(result, -31.0, 0.01);
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
test('Cosine Similarity', () => {
|
|
45
|
-
const result = simsimd.cosine(f32Array1, f32Array2);
|
|
46
|
-
assertAlmostEqual(result, 0.029, 0.01);
|
|
47
|
-
});
|