@amsterdamdatalabs/enact-docs-search 0.1.0 → 0.1.2
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/NOTICE +2 -2
- package/README.md +55 -5
- package/dist/cli.js +75 -21
- package/dist/cli.js.map +1 -1
- package/dist/dependency-errors.d.ts +3 -0
- package/dist/dependency-errors.d.ts.map +1 -0
- package/dist/dependency-errors.js +26 -0
- package/dist/dependency-errors.js.map +1 -0
- package/dist/doctor.d.ts +17 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +88 -0
- package/dist/doctor.js.map +1 -0
- package/dist/embeddings/embedding-service.d.ts +9 -0
- package/dist/embeddings/embedding-service.d.ts.map +1 -1
- package/dist/embeddings/embedding-service.js +34 -9
- package/dist/embeddings/embedding-service.js.map +1 -1
- package/dist/indexing/indexing-service.d.ts +2 -0
- package/dist/indexing/indexing-service.d.ts.map +1 -1
- package/dist/indexing/indexing-service.js +90 -32
- package/dist/indexing/indexing-service.js.map +1 -1
- package/dist/search/search-service.d.ts +1 -1
- package/dist/storage/persistence.d.ts +33 -5
- package/dist/storage/persistence.d.ts.map +1 -1
- package/dist/storage/persistence.js +88 -24
- package/dist/storage/persistence.js.map +1 -1
- package/dist/storage/vector-store.d.ts +28 -1
- package/dist/storage/vector-store.d.ts.map +1 -1
- package/dist/storage/vector-store.js +43 -9
- package/dist/storage/vector-store.js.map +1 -1
- package/package.json +10 -2
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { rename, unlink } from "node:fs/promises";
|
|
1
2
|
import { scopeOfPath } from "../types.js";
|
|
3
|
+
import { semanticDependencyMessage } from "../dependency-errors.js";
|
|
2
4
|
export class DependencyError extends Error {
|
|
3
5
|
}
|
|
4
6
|
async function loadHierarchicalNSW() {
|
|
@@ -10,10 +12,7 @@ async function loadHierarchicalNSW() {
|
|
|
10
12
|
return HierarchicalNSW;
|
|
11
13
|
}
|
|
12
14
|
catch (error) {
|
|
13
|
-
throw new DependencyError("
|
|
14
|
-
"native binding failed to build for this platform).\n" +
|
|
15
|
-
"Run `npm install` in the enact-docs-search directory, then retry.\n" +
|
|
16
|
-
`Original error: ${error.message}`);
|
|
15
|
+
throw new DependencyError(semanticDependencyMessage("hnswlib-node", error));
|
|
17
16
|
}
|
|
18
17
|
}
|
|
19
18
|
export class VectorStore {
|
|
@@ -25,12 +24,13 @@ export class VectorStore {
|
|
|
25
24
|
metadata = new Map();
|
|
26
25
|
nextLabel = 0;
|
|
27
26
|
deletedLabels = [];
|
|
28
|
-
maxElements
|
|
27
|
+
maxElements;
|
|
29
28
|
M = 16;
|
|
30
29
|
efConstruction = 200;
|
|
31
30
|
efSearch = 50;
|
|
32
31
|
constructor(options) {
|
|
33
32
|
this.dimensions = options.dimensions;
|
|
33
|
+
this.maxElements = options.initialMaxElements ?? 10000;
|
|
34
34
|
}
|
|
35
35
|
/** Initialize a fresh, empty index. */
|
|
36
36
|
async initialize() {
|
|
@@ -59,11 +59,27 @@ export class VectorStore {
|
|
|
59
59
|
this.deletedLabels = [...sidecar.deletedLabels];
|
|
60
60
|
this.ready = true;
|
|
61
61
|
}
|
|
62
|
-
/**
|
|
62
|
+
/**
|
|
63
|
+
* Persist the raw HNSW index plus the sidecar label/metadata mapping.
|
|
64
|
+
*
|
|
65
|
+
* Writes to a sibling temp path and renames over `indexPath` so a crash
|
|
66
|
+
* mid-write (this binary file is large and the native write isn't
|
|
67
|
+
* instantaneous) can never leave a truncated `indexPath` in place —
|
|
68
|
+
* `loadFromDisk`'s `readIndex` has no way to recover from a corrupt file,
|
|
69
|
+
* and that failure would otherwise repeat on every subsequent run.
|
|
70
|
+
*/
|
|
63
71
|
async saveToDisk(indexPath) {
|
|
64
72
|
if (!this.index)
|
|
65
73
|
throw new Error("Vector store not initialized");
|
|
66
|
-
|
|
74
|
+
const tmpPath = `${indexPath}.tmp-${process.pid}-${Date.now()}`;
|
|
75
|
+
try {
|
|
76
|
+
await this.index.writeIndex(tmpPath);
|
|
77
|
+
await rename(tmpPath, indexPath);
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
await unlink(tmpPath).catch(() => { });
|
|
81
|
+
throw error;
|
|
82
|
+
}
|
|
67
83
|
return {
|
|
68
84
|
idToLabel: Array.from(this.idToLabel.entries()),
|
|
69
85
|
metadata: Array.from(this.metadata.entries()),
|
|
@@ -75,13 +91,31 @@ export class VectorStore {
|
|
|
75
91
|
isReady() {
|
|
76
92
|
return this.ready;
|
|
77
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* hnswlib's internal `cur_element_count` counts every label ever added,
|
|
96
|
+
* including ones later `markDelete`d — deletion only tombstones a slot, it
|
|
97
|
+
* never frees capacity (see hnswalg.h's addPoint: capacity is checked
|
|
98
|
+
* against `cur_element_count`, not the live point count). `add()` never
|
|
99
|
+
* reuses a deleted label (see the comment in `add()` below), so capacity
|
|
100
|
+
* is consumed monotonically by every add call, live or not.
|
|
101
|
+
*
|
|
102
|
+
* This must NOT be approximated with `this.idToLabel.size` (the live
|
|
103
|
+
* count): after any delete+re-add cycle — which is exactly what every
|
|
104
|
+
* incremental re-index does per changed file — live count stays flat
|
|
105
|
+
* while consumed capacity keeps climbing, so that check would never fire
|
|
106
|
+
* and `addPoint` would eventually throw "The number of elements exceeds
|
|
107
|
+
* the specified limit" past the initial capacity. `getCurrentCount()`
|
|
108
|
+
* reads the native counter directly, so it can't drift out of sync with
|
|
109
|
+
* our own bookkeeping.
|
|
110
|
+
*/
|
|
78
111
|
resizeIfNeeded() {
|
|
79
112
|
if (!this.index)
|
|
80
113
|
return;
|
|
81
|
-
|
|
82
|
-
|
|
114
|
+
let consumedCount = this.index.getCurrentCount();
|
|
115
|
+
while (consumedCount >= this.maxElements - 1) {
|
|
83
116
|
this.maxElements *= 2;
|
|
84
117
|
this.index.resizeIndex(this.maxElements);
|
|
118
|
+
consumedCount = this.index.getCurrentCount();
|
|
85
119
|
}
|
|
86
120
|
}
|
|
87
121
|
async add(doc) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-store.js","sourceRoot":"","sources":["../../src/storage/vector-store.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"vector-store.js","sourceRoot":"","sources":["../../src/storage/vector-store.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amsterdamdatalabs/enact-docs-search",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Hybrid (BM25 + vector) semantic search CLI over a repo's docs/.plans/.specs knowledge trees.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"repository": {
|
|
@@ -22,11 +22,12 @@
|
|
|
22
22
|
"scripts": {
|
|
23
23
|
"build": "rm -rf dist && tsc -p tsconfig.json",
|
|
24
24
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
25
|
+
"test": "npm run build && node --test",
|
|
25
26
|
"prepublishOnly": "npm run build",
|
|
26
27
|
"start": "node dist/cli.js"
|
|
27
28
|
},
|
|
28
29
|
"dependencies": {
|
|
29
|
-
"@
|
|
30
|
+
"@huggingface/transformers": "3.4.2",
|
|
30
31
|
"hnswlib-node": "^3.0.0",
|
|
31
32
|
"minisearch": "^7.2.0"
|
|
32
33
|
},
|
|
@@ -36,5 +37,12 @@
|
|
|
36
37
|
},
|
|
37
38
|
"engines": {
|
|
38
39
|
"node": ">=22"
|
|
40
|
+
},
|
|
41
|
+
"allowScripts": {
|
|
42
|
+
"hnswlib-node@3.0.0": true,
|
|
43
|
+
"hnswlib-node": true,
|
|
44
|
+
"onnxruntime-node@1.20.1": true,
|
|
45
|
+
"protobufjs@7.6.5": true,
|
|
46
|
+
"sharp@0.33.5": true
|
|
39
47
|
}
|
|
40
48
|
}
|