@ruvector/node 0.1.25 → 0.1.26
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/README.md +71 -0
- package/package.json +6 -9
package/README.md
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<p align="center"><img src="https://raw.githubusercontent.com/ruvnet/RuVector/main/assets/ruvector/packages/node.svg" alt="@ruvector/node: Unified RuVector package for Node.js — high-performance vector database with GNN capabilities." width="100%"></p>
|
|
2
|
+
|
|
3
|
+
# @ruvector/node
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@ruvector/node)
|
|
6
|
+
[](https://github.com/ruvnet/ruvector/blob/main/LICENSE)
|
|
7
|
+
|
|
8
|
+
One install for the native RuVector vector database and its graph-neural-network (GNN) layer in Node.js. This package re-exports [`@ruvector/core`](https://www.npmjs.com/package/@ruvector/core) (`VectorDB`) and [`@ruvector/gnn`](https://www.npmjs.com/package/@ruvector/gnn) (`RuvectorLayer`, `TensorCompress`, …); both are native N-API modules installed as dependencies.
|
|
9
|
+
|
|
10
|
+
## Install
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npm install @ruvector/node
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Requires Node.js 18+ on a platform with prebuilt binaries for both dependencies (Linux x64/ARM64 glibc, macOS x64/ARM64, Windows x64).
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
```javascript
|
|
21
|
+
const { VectorDB, RuvectorLayer, TensorCompress, differentiableSearch } = require('@ruvector/node');
|
|
22
|
+
|
|
23
|
+
// Vector database (from @ruvector/core)
|
|
24
|
+
const db = new VectorDB({ dimensions: 4, storagePath: './vectors.db', hnswConfig: {} });
|
|
25
|
+
await db.insert({ id: 'a', vector: new Float32Array([1, 0, 0, 0]) });
|
|
26
|
+
await db.insert({ id: 'b', vector: new Float32Array([0, 1, 0, 0]) });
|
|
27
|
+
const [best] = await db.search({ vector: new Float32Array([1, 0.1, 0, 0]), k: 1 }); // best.id === 'a'
|
|
28
|
+
|
|
29
|
+
// GNN layer (from @ruvector/gnn): inputDim, hiddenDim, heads, dropout
|
|
30
|
+
const layer = new RuvectorLayer(4, 8, 2, 0.1);
|
|
31
|
+
const h = layer.forward(
|
|
32
|
+
new Float32Array([1, 0, 0, 0]), // node embedding
|
|
33
|
+
[new Float32Array([0, 1, 0, 0]), new Float32Array([0, 0, 1, 0])], // neighbor embeddings
|
|
34
|
+
new Float32Array([0.5, 0.5]) // edge weights
|
|
35
|
+
); // Float32Array of length hiddenDim (8)
|
|
36
|
+
|
|
37
|
+
// Soft top-k over candidate embeddings
|
|
38
|
+
const { indices, weights } = differentiableSearch(
|
|
39
|
+
new Float32Array([1, 0, 0, 0]),
|
|
40
|
+
[new Float32Array([1, 0, 0, 0]), new Float32Array([0, 1, 0, 0])],
|
|
41
|
+
1, // k
|
|
42
|
+
1.0 // temperature
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
// Access-frequency-aware embedding compression
|
|
46
|
+
const tc = new TensorCompress();
|
|
47
|
+
const packed = tc.compress(new Float32Array([0.1, 0.2, 0.3, 0.4]), 0.5); // JSON string
|
|
48
|
+
const restored = tc.decompress(packed); // Float32Array
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
ES modules work too: `import { VectorDB, RuvectorLayer } from '@ruvector/node'`. A default export bundles the same functions.
|
|
52
|
+
|
|
53
|
+
Vectors must be `Float32Array`. See the [`@ruvector/core` README](https://www.npmjs.com/package/@ruvector/core) for `VectorDB` options (distance metrics, `hnswConfig`, `storagePath` defaults) and the [`@ruvector/gnn` README](https://www.npmjs.com/package/@ruvector/gnn) for the GNN API.
|
|
54
|
+
|
|
55
|
+
## Exports
|
|
56
|
+
|
|
57
|
+
| Entry point | Exports |
|
|
58
|
+
|-------------|---------|
|
|
59
|
+
| `@ruvector/node` | `VectorDB`, `RuvectorLayer`, `TensorCompress`, `differentiableSearch`, `hierarchicalForward`, `getCompressionLevel`, `initGnn`; types `VectorEntry`, `SearchQuery`, `CoreSearchResult`, `GnnSearchResult`, `CompressionLevelConfig` |
|
|
60
|
+
| `@ruvector/node/gnn` | `RuvectorLayer`, `TensorCompress`, `differentiableSearch`, `hierarchicalForward`, `getCompressionLevel`, `init`; types `SearchResult`, `CompressionLevelConfig` |
|
|
61
|
+
|
|
62
|
+
## Related packages
|
|
63
|
+
|
|
64
|
+
- [`@ruvector/core`](https://www.npmjs.com/package/@ruvector/core) — the vector database re-exported here; install it alone if you don't need GNN.
|
|
65
|
+
- [`@ruvector/gnn`](https://www.npmjs.com/package/@ruvector/gnn) — the GNN layers re-exported here.
|
|
66
|
+
- [`@ruvector/graph-wasm`](https://www.npmjs.com/package/@ruvector/graph-wasm) — property graph + Cypher in WebAssembly, for the relationships your GNN consumes.
|
|
67
|
+
- [`ruvector`](https://www.npmjs.com/package/ruvector) — umbrella package and CLI (`npx ruvector`).
|
|
68
|
+
|
|
69
|
+
## License
|
|
70
|
+
|
|
71
|
+
MIT
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ruvector/node",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.26",
|
|
4
4
|
"description": "Unified Ruvector package - High-performance vector database with GNN capabilities for Node.js",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -42,20 +42,17 @@
|
|
|
42
42
|
"LICENSE"
|
|
43
43
|
],
|
|
44
44
|
"keywords": [
|
|
45
|
-
"
|
|
46
|
-
"database",
|
|
45
|
+
"ruvector",
|
|
46
|
+
"vector-database",
|
|
47
47
|
"embeddings",
|
|
48
48
|
"similarity-search",
|
|
49
|
+
"semantic-search",
|
|
49
50
|
"hnsw",
|
|
50
51
|
"gnn",
|
|
51
52
|
"graph-neural-network",
|
|
52
|
-
"rust",
|
|
53
|
-
"napi",
|
|
54
|
-
"semantic-search",
|
|
55
|
-
"machine-learning",
|
|
56
53
|
"rag",
|
|
57
|
-
"
|
|
58
|
-
"
|
|
54
|
+
"napi",
|
|
55
|
+
"rust"
|
|
59
56
|
],
|
|
60
57
|
"author": "rUv",
|
|
61
58
|
"license": "MIT",
|