@ssmeo/mcp-local-rag 0.18.14 → 0.19.1
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.de.md +248 -215
- package/README.es.md +241 -215
- package/README.fr.md +249 -215
- package/README.md +207 -297
- package/README.pt-BR.md +236 -215
- package/README.zh-CN.md +133 -206
- package/dist/chunker/semantic-chunker.d.ts +23 -5
- package/dist/chunker/semantic-chunker.d.ts.map +1 -1
- package/dist/chunker/semantic-chunker.js +13 -5
- package/dist/chunker/semantic-chunker.js.map +1 -1
- package/dist/cli/common.d.ts +7 -0
- package/dist/cli/common.d.ts.map +1 -1
- package/dist/cli/common.js +26 -2
- package/dist/cli/common.js.map +1 -1
- package/dist/cli/delete.d.ts.map +1 -1
- package/dist/cli/delete.js +2 -0
- package/dist/cli/delete.js.map +1 -1
- package/dist/cli/file-collection.d.ts +2 -1
- package/dist/cli/file-collection.d.ts.map +1 -1
- package/dist/cli/file-collection.js +2 -2
- package/dist/cli/file-collection.js.map +1 -1
- package/dist/cli/ingest.d.ts +1 -0
- package/dist/cli/ingest.d.ts.map +1 -1
- package/dist/cli/ingest.js +45 -25
- package/dist/cli/ingest.js.map +1 -1
- package/dist/cli/list.d.ts.map +1 -1
- package/dist/cli/list.js +9 -13
- package/dist/cli/list.js.map +1 -1
- package/dist/cli/options.d.ts +8 -0
- package/dist/cli/options.d.ts.map +1 -1
- package/dist/cli/options.js +21 -0
- package/dist/cli/options.js.map +1 -1
- package/dist/cli/query.d.ts.map +1 -1
- package/dist/cli/query.js +2 -1
- package/dist/cli/query.js.map +1 -1
- package/dist/cli/read-neighbors.d.ts.map +1 -1
- package/dist/cli/read-neighbors.js +1 -0
- package/dist/cli/read-neighbors.js.map +1 -1
- package/dist/cli/relocate.d.ts +3 -0
- package/dist/cli/relocate.d.ts.map +1 -0
- package/dist/cli/relocate.js +135 -0
- package/dist/cli/relocate.js.map +1 -0
- package/dist/cli/sync.d.ts.map +1 -1
- package/dist/cli/sync.js +17 -8
- package/dist/cli/sync.js.map +1 -1
- package/dist/cli-main.d.ts +1 -1
- package/dist/cli-main.d.ts.map +1 -1
- package/dist/cli-main.js +5 -0
- package/dist/cli-main.js.map +1 -1
- package/dist/embedder/embedding-snapshot.d.ts +52 -0
- package/dist/embedder/embedding-snapshot.d.ts.map +1 -0
- package/dist/embedder/embedding-snapshot.js +413 -0
- package/dist/embedder/embedding-snapshot.js.map +1 -0
- package/dist/embedder/index.d.ts +36 -5
- package/dist/embedder/index.d.ts.map +1 -1
- package/dist/embedder/index.js +346 -23
- package/dist/embedder/index.js.map +1 -1
- package/dist/embedder/remote.d.ts +16 -2
- package/dist/embedder/remote.d.ts.map +1 -1
- package/dist/embedder/remote.js +48 -11
- package/dist/embedder/remote.js.map +1 -1
- package/dist/embedder/sentence-transformers-config.d.ts +24 -0
- package/dist/embedder/sentence-transformers-config.d.ts.map +1 -0
- package/dist/embedder/sentence-transformers-config.js +93 -0
- package/dist/embedder/sentence-transformers-config.js.map +1 -0
- package/dist/features/sync.d.ts +7 -0
- package/dist/features/sync.d.ts.map +1 -1
- package/dist/features/sync.js +2 -1
- package/dist/features/sync.js.map +1 -1
- package/dist/ingest/compute.d.ts +15 -7
- package/dist/ingest/compute.d.ts.map +1 -1
- package/dist/ingest/compute.js +74 -14
- package/dist/ingest/compute.js.map +1 -1
- package/dist/ingest/file.d.ts +3 -3
- package/dist/ingest/file.d.ts.map +1 -1
- package/dist/ingest/file.js +0 -5
- package/dist/ingest/file.js.map +1 -1
- package/dist/ingest/visual.d.ts +6 -2
- package/dist/ingest/visual.d.ts.map +1 -1
- package/dist/ingest/visual.js +20 -4
- package/dist/ingest/visual.js.map +1 -1
- package/dist/parser/docx-parser.d.ts +2 -0
- package/dist/parser/docx-parser.d.ts.map +1 -1
- package/dist/parser/docx-parser.js +12 -3
- package/dist/parser/docx-parser.js.map +1 -1
- package/dist/parser/index.d.ts +11 -1
- package/dist/parser/index.d.ts.map +1 -1
- package/dist/parser/index.js +27 -11
- package/dist/parser/index.js.map +1 -1
- package/dist/parser/pdf-extract.d.ts +2 -0
- package/dist/parser/pdf-extract.d.ts.map +1 -1
- package/dist/parser/pdf-extract.js +3 -0
- package/dist/parser/pdf-extract.js.map +1 -1
- package/dist/parser/pdf-filter.d.ts +2 -9
- package/dist/parser/pdf-filter.d.ts.map +1 -1
- package/dist/parser/pdf-filter.js +110 -144
- package/dist/parser/pdf-filter.js.map +1 -1
- package/dist/parser/pdf-headings.d.ts +6 -0
- package/dist/parser/pdf-headings.d.ts.map +1 -0
- package/dist/parser/pdf-headings.js +166 -0
- package/dist/parser/pdf-headings.js.map +1 -0
- package/dist/parser/text-source-map.d.ts +3 -0
- package/dist/parser/text-source-map.d.ts.map +1 -0
- package/dist/parser/text-source-map.js +33 -0
- package/dist/parser/text-source-map.js.map +1 -0
- package/dist/pdf-visual/detector.js +3 -3
- package/dist/pdf-visual/detector.js.map +1 -1
- package/dist/rerank/command.d.ts +10 -7
- package/dist/rerank/command.d.ts.map +1 -1
- package/dist/rerank/command.js +51 -10
- package/dist/rerank/command.js.map +1 -1
- package/dist/rerank/index.d.ts +3 -3
- package/dist/rerank/index.d.ts.map +1 -1
- package/dist/rerank/index.js +3 -3
- package/dist/rerank/index.js.map +1 -1
- package/dist/server/index.d.ts +5 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +168 -95
- package/dist/server/index.js.map +1 -1
- package/dist/server/list-scanner.d.ts +2 -1
- package/dist/server/list-scanner.d.ts.map +1 -1
- package/dist/server/list-scanner.js +2 -2
- package/dist/server/list-scanner.js.map +1 -1
- package/dist/server/tool-definitions.js +2 -2
- package/dist/server/tool-definitions.js.map +1 -1
- package/dist/server/types.d.ts +9 -0
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server-main.d.ts +2 -2
- package/dist/server-main.d.ts.map +1 -1
- package/dist/server-main.js +22 -20
- package/dist/server-main.js.map +1 -1
- package/dist/utils/base-dirs.d.ts +9 -10
- package/dist/utils/base-dirs.d.ts.map +1 -1
- package/dist/utils/base-dirs.js +28 -30
- package/dist/utils/base-dirs.js.map +1 -1
- package/dist/utils/scan.d.ts +25 -5
- package/dist/utils/scan.d.ts.map +1 -1
- package/dist/utils/scan.js +40 -10
- package/dist/utils/scan.js.map +1 -1
- package/dist/utils/source-context.d.ts +29 -0
- package/dist/utils/source-context.d.ts.map +1 -0
- package/dist/utils/source-context.js +86 -0
- package/dist/utils/source-context.js.map +1 -0
- package/dist/utils/sync-lock.d.ts +8 -0
- package/dist/utils/sync-lock.d.ts.map +1 -1
- package/dist/utils/sync-lock.js +41 -9
- package/dist/utils/sync-lock.js.map +1 -1
- package/dist/utils/sync-path-key.d.ts +1 -1
- package/dist/utils/sync-path-key.d.ts.map +1 -1
- package/dist/utils/sync-path-key.js +1 -1
- package/dist/utils/sync-path-key.js.map +1 -1
- package/dist/vectordb/index.d.ts +4 -2
- package/dist/vectordb/index.d.ts.map +1 -1
- package/dist/vectordb/index.js +30 -7
- package/dist/vectordb/index.js.map +1 -1
- package/dist/vectordb/relocate.d.ts +18 -0
- package/dist/vectordb/relocate.d.ts.map +1 -0
- package/dist/vectordb/relocate.js +179 -0
- package/dist/vectordb/relocate.js.map +1 -0
- package/dist/vectordb/types.d.ts +10 -23
- package/dist/vectordb/types.d.ts.map +1 -1
- package/dist/vectordb/types.js +14 -23
- package/dist/vectordb/types.js.map +1 -1
- package/package.json +14 -14
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
2
|
+
import { mkdir, readFile, rename, stat, unlink, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { dirname, join, resolve } from 'node:path';
|
|
4
|
+
import { deserialize, serialize } from 'node:v8';
|
|
5
|
+
export const MAX_EMBEDDING_SNAPSHOT_BYTES = 16 * 1024 * 1024;
|
|
6
|
+
const SNAPSHOT_FORMAT_VERSION = 1;
|
|
7
|
+
const ENTRY_OVERHEAD_BYTES = 96;
|
|
8
|
+
/** Exact indexed path identity is shared by CLI and MCP for the same DB key. */
|
|
9
|
+
export function embeddingSnapshotPath(dbPath, filePath) {
|
|
10
|
+
const digest = createHash('sha256').update(filePath).digest('hex');
|
|
11
|
+
return join(resolve(dbPath), 'embedding-cache', `${digest}.bin`);
|
|
12
|
+
}
|
|
13
|
+
/** Best-effort cleanup: a missing or inaccessible acceleration file is harmless. */
|
|
14
|
+
export async function removeEmbeddingSnapshot(dbPath, filePath) {
|
|
15
|
+
try {
|
|
16
|
+
await unlink(embeddingSnapshotPath(dbPath, filePath));
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
// Snapshot cleanup must not change the adapter's deletion result.
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* One ingestion's read/collect/publish state. It owns no shared Embedder state
|
|
24
|
+
* and is discarded by the composition root after that file's DB mutation.
|
|
25
|
+
*/
|
|
26
|
+
export class DocumentEmbeddingSession {
|
|
27
|
+
snapshotPath;
|
|
28
|
+
embedder;
|
|
29
|
+
identity = null;
|
|
30
|
+
loaded = false;
|
|
31
|
+
collecting = true;
|
|
32
|
+
disposed = false;
|
|
33
|
+
collectedBytes = 0;
|
|
34
|
+
previous = new Map();
|
|
35
|
+
collected = new Map();
|
|
36
|
+
constructor(dbPath, filePath, embedder) {
|
|
37
|
+
this.snapshotPath = embeddingSnapshotPath(dbPath, filePath);
|
|
38
|
+
this.embedder = embedder;
|
|
39
|
+
}
|
|
40
|
+
get titlePrefix() {
|
|
41
|
+
return this.embedder.titlePrefix ?? false;
|
|
42
|
+
}
|
|
43
|
+
get headingPrefix() {
|
|
44
|
+
return this.embedder.headingPrefix ?? false;
|
|
45
|
+
}
|
|
46
|
+
async getTokenLimit() {
|
|
47
|
+
return (await this.embedder.getTokenLimit?.()) ?? null;
|
|
48
|
+
}
|
|
49
|
+
async countTokens(texts, role) {
|
|
50
|
+
if (!this.embedder.countTokens) {
|
|
51
|
+
return [];
|
|
52
|
+
}
|
|
53
|
+
return await this.embedder.countTokens(texts, role);
|
|
54
|
+
}
|
|
55
|
+
async getDocumentPrompt() {
|
|
56
|
+
return (await this.embedder.getDocumentPrompt?.()) ?? '';
|
|
57
|
+
}
|
|
58
|
+
async embedBatch(texts, role) {
|
|
59
|
+
if (this.disposed || texts.length === 0) {
|
|
60
|
+
return await this.embedder.embedBatch(texts, role);
|
|
61
|
+
}
|
|
62
|
+
const identity = await this.loadPreviousIfPresent();
|
|
63
|
+
if (!identity) {
|
|
64
|
+
return await this.embedAndCollectWithoutPrevious(texts, role);
|
|
65
|
+
}
|
|
66
|
+
return await this.embedWithPrevious(texts, role, identity);
|
|
67
|
+
}
|
|
68
|
+
async embedWithPrevious(texts, role, identity) {
|
|
69
|
+
const request = createEmbeddingBatchRequest(texts, role);
|
|
70
|
+
this.collectPreviousInputs(request, identity.dimension);
|
|
71
|
+
const inferred = await this.inferMissingWithIdentity(request, identity);
|
|
72
|
+
if (inferred === null) {
|
|
73
|
+
return await this.embedder.embedBatch(texts, role);
|
|
74
|
+
}
|
|
75
|
+
return await this.completeResults(request, inferred);
|
|
76
|
+
}
|
|
77
|
+
collectPreviousInputs(request, dimension) {
|
|
78
|
+
for (const [index, text] of request.texts.entries()) {
|
|
79
|
+
const key = inputDigest(request.role, text);
|
|
80
|
+
request.requestedKeys.push(key);
|
|
81
|
+
const vector = this.collected.get(key) ?? this.previous.get(key);
|
|
82
|
+
if (!vector || vector.length !== dimension || !isFiniteVector(vector)) {
|
|
83
|
+
if (!request.missingInputs.has(key)) {
|
|
84
|
+
request.missingInputs.set(key, text);
|
|
85
|
+
}
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
request.results[index] = Array.from(vector);
|
|
89
|
+
if (this.previous.has(key)) {
|
|
90
|
+
this.remember(key, vector);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
async inferMissingWithIdentity(request, identity) {
|
|
95
|
+
const inferred = new Map();
|
|
96
|
+
const missedKeys = [...request.missingInputs.keys()];
|
|
97
|
+
if (missedKeys.length === 0) {
|
|
98
|
+
return inferred;
|
|
99
|
+
}
|
|
100
|
+
const missedVectors = await this.embedder.embedBatch([...request.missingInputs.values()], request.role);
|
|
101
|
+
if (missedVectors.length !== missedKeys.length) {
|
|
102
|
+
this.discardUntrustedVectors();
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
for (const [index, key] of missedKeys.entries()) {
|
|
106
|
+
const vector = missedVectors[index];
|
|
107
|
+
if (!vector || !isValidInference(vector, identity.dimension)) {
|
|
108
|
+
this.discardUntrustedVectors();
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
const stored = Float32Array.from(vector);
|
|
112
|
+
this.previous.delete(key);
|
|
113
|
+
inferred.set(key, stored);
|
|
114
|
+
this.remember(key, stored);
|
|
115
|
+
}
|
|
116
|
+
return inferred;
|
|
117
|
+
}
|
|
118
|
+
async completeResults(request, inferred) {
|
|
119
|
+
for (const [index, key] of request.requestedKeys.entries()) {
|
|
120
|
+
if (request.results[index] === undefined) {
|
|
121
|
+
const vector = inferred.get(key) ?? this.collected.get(key) ?? this.previous.get(key);
|
|
122
|
+
if (vector) {
|
|
123
|
+
request.results[index] = Array.from(vector);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (!hasOnlyVectors(request.results)) {
|
|
128
|
+
return await this.embedder.embedBatch(request.texts, request.role);
|
|
129
|
+
}
|
|
130
|
+
return request.results;
|
|
131
|
+
}
|
|
132
|
+
discardUntrustedVectors() {
|
|
133
|
+
// A mismatch means identity discovery did not describe the actual output.
|
|
134
|
+
// Drop both caches and avoid publishing values from this session.
|
|
135
|
+
this.previous.clear();
|
|
136
|
+
this.collected.clear();
|
|
137
|
+
this.collecting = false;
|
|
138
|
+
}
|
|
139
|
+
/** Publish only after the adapter's per-file insertion has succeeded. */
|
|
140
|
+
async publish() {
|
|
141
|
+
if (this.disposed) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
try {
|
|
145
|
+
await this.resolvePublicationIdentity();
|
|
146
|
+
if (!this.identity) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
if (!this.collecting) {
|
|
150
|
+
await removeSnapshotPath(this.snapshotPath);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
await this.writeSnapshot();
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
console.warn(`Warning: unable to save embedding snapshot: ${messageOf(error)}`);
|
|
157
|
+
}
|
|
158
|
+
finally {
|
|
159
|
+
this.dispose();
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
async resolvePublicationIdentity() {
|
|
163
|
+
if (this.identity || !this.collecting || this.collected.size === 0) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
let identity;
|
|
167
|
+
try {
|
|
168
|
+
identity = await this.embedder.getComputationIdentity();
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
identity = null;
|
|
172
|
+
}
|
|
173
|
+
if (!identity || !isValidIdentity(identity)) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
this.identity = identity;
|
|
177
|
+
for (const [key, vector] of this.collected) {
|
|
178
|
+
if (vector.length !== identity.dimension || !isFiniteVector(vector)) {
|
|
179
|
+
this.collected.delete(key);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
async writeSnapshot() {
|
|
184
|
+
const identity = this.identity;
|
|
185
|
+
if (!identity) {
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
const envelope = {
|
|
189
|
+
formatVersion: SNAPSHOT_FORMAT_VERSION,
|
|
190
|
+
fingerprint: identity.fingerprint,
|
|
191
|
+
dimension: identity.dimension,
|
|
192
|
+
entries: [...this.collected.entries()],
|
|
193
|
+
};
|
|
194
|
+
const bytes = serialize(envelope);
|
|
195
|
+
if (bytes.byteLength > MAX_EMBEDDING_SNAPSHOT_BYTES) {
|
|
196
|
+
await removeSnapshotPath(this.snapshotPath);
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
await mkdir(dirname(this.snapshotPath), { recursive: true });
|
|
200
|
+
const temporaryPath = `${this.snapshotPath}.${process.pid}.${randomUUID()}.tmp`;
|
|
201
|
+
try {
|
|
202
|
+
await writeFile(temporaryPath, bytes, { flag: 'wx' });
|
|
203
|
+
await rename(temporaryPath, this.snapshotPath);
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
await removeSnapshotPath(temporaryPath);
|
|
207
|
+
console.warn(`Warning: unable to save embedding snapshot: ${messageOf(error)}`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/** Drop all per-document vectors on success, failure, or zero-chunk return. */
|
|
211
|
+
dispose() {
|
|
212
|
+
this.disposed = true;
|
|
213
|
+
this.previous.clear();
|
|
214
|
+
this.collected.clear();
|
|
215
|
+
this.collectedBytes = 0;
|
|
216
|
+
this.identity = null;
|
|
217
|
+
}
|
|
218
|
+
async loadPrevious(identity) {
|
|
219
|
+
this.identity = identity;
|
|
220
|
+
try {
|
|
221
|
+
const fileInfo = await stat(this.snapshotPath);
|
|
222
|
+
if (fileInfo.size <= 0 || fileInfo.size > MAX_EMBEDDING_SNAPSHOT_BYTES) {
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
const envelope = deserialize(await readFile(this.snapshotPath));
|
|
226
|
+
if (!isSnapshotEnvelope(envelope, identity)) {
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
const seenKeys = new Set();
|
|
230
|
+
for (const [key, vector] of envelope.entries) {
|
|
231
|
+
if (seenKeys.has(key)) {
|
|
232
|
+
this.previous.clear();
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
seenKeys.add(key);
|
|
236
|
+
this.previous.set(key, vector);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
// Missing, unreadable, truncated, or incompatible snapshots are misses.
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
async loadPreviousIfPresent() {
|
|
244
|
+
if (this.loaded) {
|
|
245
|
+
return this.identity;
|
|
246
|
+
}
|
|
247
|
+
this.loaded = true;
|
|
248
|
+
// A cold document has no reusable vectors. Avoid waiting on model-asset
|
|
249
|
+
// hashing before its first inference; initialization already started that
|
|
250
|
+
// work, and publish can await it after parsing and embedding have completed.
|
|
251
|
+
try {
|
|
252
|
+
const fileInfo = await stat(this.snapshotPath);
|
|
253
|
+
if (fileInfo.size <= 0 || fileInfo.size > MAX_EMBEDDING_SNAPSHOT_BYTES) {
|
|
254
|
+
return null;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
catch {
|
|
258
|
+
return null;
|
|
259
|
+
}
|
|
260
|
+
let identity;
|
|
261
|
+
try {
|
|
262
|
+
identity = await this.embedder.getComputationIdentity();
|
|
263
|
+
}
|
|
264
|
+
catch {
|
|
265
|
+
return null;
|
|
266
|
+
}
|
|
267
|
+
if (!identity || !isValidIdentity(identity)) {
|
|
268
|
+
return null;
|
|
269
|
+
}
|
|
270
|
+
await this.loadPrevious(identity);
|
|
271
|
+
return identity;
|
|
272
|
+
}
|
|
273
|
+
async embedAndCollectWithoutPrevious(texts, role) {
|
|
274
|
+
if (!this.collecting) {
|
|
275
|
+
return await this.embedder.embedBatch(texts, role);
|
|
276
|
+
}
|
|
277
|
+
const request = createEmbeddingBatchRequest(texts, role);
|
|
278
|
+
this.collectCurrentInputs(request);
|
|
279
|
+
const inferred = await this.inferWithoutPrevious(request);
|
|
280
|
+
if (inferred === null) {
|
|
281
|
+
return await this.embedder.embedBatch(texts, role);
|
|
282
|
+
}
|
|
283
|
+
return await this.completeResults(request, inferred);
|
|
284
|
+
}
|
|
285
|
+
collectCurrentInputs(request) {
|
|
286
|
+
for (const [index, text] of request.texts.entries()) {
|
|
287
|
+
const key = inputDigest(request.role, text);
|
|
288
|
+
request.requestedKeys.push(key);
|
|
289
|
+
const vector = this.collected.get(key);
|
|
290
|
+
if (vector) {
|
|
291
|
+
request.results[index] = Array.from(vector);
|
|
292
|
+
}
|
|
293
|
+
else if (!request.missingInputs.has(key)) {
|
|
294
|
+
request.missingInputs.set(key, text);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
async inferWithoutPrevious(request) {
|
|
299
|
+
const inferred = new Map();
|
|
300
|
+
const keys = [...request.missingInputs.keys()];
|
|
301
|
+
if (keys.length === 0) {
|
|
302
|
+
return inferred;
|
|
303
|
+
}
|
|
304
|
+
const vectors = await this.embedder.embedBatch([...request.missingInputs.values()], request.role);
|
|
305
|
+
if (vectors.length !== keys.length) {
|
|
306
|
+
this.stopCollecting();
|
|
307
|
+
return null;
|
|
308
|
+
}
|
|
309
|
+
for (const [index, key] of keys.entries()) {
|
|
310
|
+
const vector = vectors[index];
|
|
311
|
+
if (!vector) {
|
|
312
|
+
this.stopCollecting();
|
|
313
|
+
return null;
|
|
314
|
+
}
|
|
315
|
+
inferred.set(key, vector);
|
|
316
|
+
if (vector.length > 0 && vector.every(Number.isFinite)) {
|
|
317
|
+
this.remember(key, Float32Array.from(vector));
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
return inferred;
|
|
321
|
+
}
|
|
322
|
+
remember(key, vector) {
|
|
323
|
+
if (!this.collecting) {
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
if (!this.collected.has(key)) {
|
|
327
|
+
const entryBytes = Buffer.byteLength(key, 'utf8') + vector.byteLength + ENTRY_OVERHEAD_BYTES;
|
|
328
|
+
if (this.collectedBytes + entryBytes > MAX_EMBEDDING_SNAPSHOT_BYTES) {
|
|
329
|
+
this.collecting = false;
|
|
330
|
+
this.collected.clear();
|
|
331
|
+
this.collectedBytes = 0;
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
this.collectedBytes += entryBytes;
|
|
335
|
+
}
|
|
336
|
+
this.collected.set(key, vector);
|
|
337
|
+
}
|
|
338
|
+
stopCollecting() {
|
|
339
|
+
this.collecting = false;
|
|
340
|
+
this.collected.clear();
|
|
341
|
+
this.collectedBytes = 0;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
function inputDigest(role, text) {
|
|
345
|
+
return createHash('sha256')
|
|
346
|
+
.update(serialize([role ?? 'default', text]))
|
|
347
|
+
.digest('hex');
|
|
348
|
+
}
|
|
349
|
+
function createEmbeddingBatchRequest(texts, role) {
|
|
350
|
+
return {
|
|
351
|
+
texts,
|
|
352
|
+
role,
|
|
353
|
+
results: Array.from({ length: texts.length }),
|
|
354
|
+
requestedKeys: [],
|
|
355
|
+
missingInputs: new Map(),
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
function isValidIdentity(value) {
|
|
359
|
+
return (/^[a-f\d]{64}$/.test(value.fingerprint) &&
|
|
360
|
+
Number.isInteger(value.dimension) &&
|
|
361
|
+
value.dimension > 0);
|
|
362
|
+
}
|
|
363
|
+
function isFiniteVector(vector) {
|
|
364
|
+
for (const value of vector) {
|
|
365
|
+
if (!Number.isFinite(value)) {
|
|
366
|
+
return false;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
return true;
|
|
370
|
+
}
|
|
371
|
+
function isValidInference(vector, dimension) {
|
|
372
|
+
return vector.length === dimension && vector.every(Number.isFinite);
|
|
373
|
+
}
|
|
374
|
+
function hasOnlyVectors(values) {
|
|
375
|
+
return values.every((value) => value !== undefined);
|
|
376
|
+
}
|
|
377
|
+
function isSnapshotEnvelope(value, identity) {
|
|
378
|
+
if (typeof value !== 'object' || value === null) {
|
|
379
|
+
return false;
|
|
380
|
+
}
|
|
381
|
+
if (!('formatVersion' in value) ||
|
|
382
|
+
value.formatVersion !== SNAPSHOT_FORMAT_VERSION ||
|
|
383
|
+
!('fingerprint' in value) ||
|
|
384
|
+
value.fingerprint !== identity.fingerprint ||
|
|
385
|
+
!('dimension' in value) ||
|
|
386
|
+
value.dimension !== identity.dimension ||
|
|
387
|
+
!('entries' in value) ||
|
|
388
|
+
!Array.isArray(value.entries)) {
|
|
389
|
+
return false;
|
|
390
|
+
}
|
|
391
|
+
return value.entries.every((entry) => isSnapshotEntry(entry, identity.dimension));
|
|
392
|
+
}
|
|
393
|
+
function isSnapshotEntry(value, dimension) {
|
|
394
|
+
return (Array.isArray(value) &&
|
|
395
|
+
value.length === 2 &&
|
|
396
|
+
typeof value[0] === 'string' &&
|
|
397
|
+
/^[a-f\d]{64}$/.test(value[0]) &&
|
|
398
|
+
value[1] instanceof Float32Array &&
|
|
399
|
+
value[1].length === dimension &&
|
|
400
|
+
isFiniteVector(value[1]));
|
|
401
|
+
}
|
|
402
|
+
async function removeSnapshotPath(path) {
|
|
403
|
+
try {
|
|
404
|
+
await unlink(path);
|
|
405
|
+
}
|
|
406
|
+
catch {
|
|
407
|
+
// Deletion and ingestion remain successful when stale acceleration data lingers.
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
function messageOf(error) {
|
|
411
|
+
return error instanceof Error ? error.message : String(error);
|
|
412
|
+
}
|
|
413
|
+
//# sourceMappingURL=embedding-snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding-snapshot.js","sourceRoot":"","sources":["../../src/embedder/embedding-snapshot.ts"],"names":[],"mappings":"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"}
|
package/dist/embedder/index.d.ts
CHANGED
|
@@ -17,7 +17,16 @@ export interface EmbedderConfig {
|
|
|
17
17
|
* distinction gates failure-path error enrichment, so keep it.
|
|
18
18
|
*/
|
|
19
19
|
dtype?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Embed document chunks behind a `Title:` line naming their document
|
|
22
|
+
* (default: false). Read by ingestion, which builds the embedding input.
|
|
23
|
+
*/
|
|
24
|
+
titlePrefix?: boolean;
|
|
25
|
+
/** Add section paths to chunk embeddings when they fit (default: false). */
|
|
26
|
+
headingPrefix?: boolean;
|
|
20
27
|
}
|
|
28
|
+
/** Selects the model's prompt; omitted means its default prompt. */
|
|
29
|
+
export type EmbeddingRole = 'query' | 'document';
|
|
21
30
|
interface TokenizerOptions {
|
|
22
31
|
padding?: boolean;
|
|
23
32
|
truncation?: boolean;
|
|
@@ -31,6 +40,10 @@ export interface PipelineTokenizer {
|
|
|
31
40
|
/** `unknown` because a model may omit it or report a sentinel; see {@link usableTokenLimit}. */
|
|
32
41
|
model_max_length?: unknown;
|
|
33
42
|
}
|
|
43
|
+
export interface EmbeddingComputationIdentity {
|
|
44
|
+
fingerprint: string;
|
|
45
|
+
dimension: number;
|
|
46
|
+
}
|
|
34
47
|
export interface TokenLimitClamp {
|
|
35
48
|
/** The effective token cap, or `null` for degraded mode (no cap, no clamp). */
|
|
36
49
|
tokenLimit: number | null;
|
|
@@ -75,8 +88,15 @@ export declare class Embedder {
|
|
|
75
88
|
*/
|
|
76
89
|
private truncationWarned;
|
|
77
90
|
private degradedModeWarned;
|
|
91
|
+
private prompts;
|
|
92
|
+
private warnings;
|
|
78
93
|
private readonly config;
|
|
94
|
+
private computationIdentityPromise;
|
|
79
95
|
constructor(config: EmbedderConfig);
|
|
96
|
+
get headingPrefix(): boolean;
|
|
97
|
+
get titlePrefix(): boolean;
|
|
98
|
+
/** Model settings this tool cannot honor; empty until the model loads. */
|
|
99
|
+
get modelWarnings(): readonly string[];
|
|
80
100
|
/**
|
|
81
101
|
* Release resources held by the Embedder pipeline
|
|
82
102
|
*/
|
|
@@ -100,6 +120,12 @@ export declare class Embedder {
|
|
|
100
120
|
* This method is called automatically by embed() and embedBatch()
|
|
101
121
|
*/
|
|
102
122
|
private ensureInitialized;
|
|
123
|
+
/** Identity of the loaded embedding function, or `null` when local assets cannot be proven. */
|
|
124
|
+
getComputationIdentity(): Promise<EmbeddingComputationIdentity | null>;
|
|
125
|
+
private createComputationIdentity;
|
|
126
|
+
private hashModelAssets;
|
|
127
|
+
private captureModelAssetSnapshot;
|
|
128
|
+
private resolveAssetPath;
|
|
103
129
|
/**
|
|
104
130
|
* The effective token cap, or `null` when none could be resolved.
|
|
105
131
|
*
|
|
@@ -120,24 +146,29 @@ export declare class Embedder {
|
|
|
120
146
|
*/
|
|
121
147
|
private planTokenLengths;
|
|
122
148
|
/**
|
|
123
|
-
* The true token length of each text
|
|
124
|
-
* inference.
|
|
149
|
+
* The true token length of each text as embedded for `role`, prompt
|
|
150
|
+
* included, in input order. Tokenization only, no inference.
|
|
125
151
|
*
|
|
126
152
|
* Measured with `truncation: false` through the pre-clamp tokenizer, so a
|
|
127
153
|
* length above {@link getTokenLimit} means inference will truncate. Throws
|
|
128
154
|
* when no such tokenizer was captured, rather than returning a length
|
|
129
155
|
* measured through an unknown surface.
|
|
130
156
|
*/
|
|
131
|
-
countTokens(texts: string[]): Promise<number[]>;
|
|
157
|
+
countTokens(texts: string[], role?: EmbeddingRole): Promise<number[]>;
|
|
158
|
+
/** The prompt this model's config sets for documents, or `''`. */
|
|
159
|
+
getDocumentPrompt(): Promise<string>;
|
|
160
|
+
private withPrompt;
|
|
161
|
+
/** Measures `texts` as given; each caller applies the prompt exactly once. */
|
|
162
|
+
private measureTokens;
|
|
132
163
|
/**
|
|
133
164
|
* Single-text embedding; the vector dimension depends on the model.
|
|
134
165
|
*
|
|
135
166
|
* Delegates to {@link embedBatch} so this path shares its clamp, measurement
|
|
136
167
|
* and warning rather than reaching the pipeline unguarded.
|
|
137
168
|
*/
|
|
138
|
-
embed(text: string): Promise<number[]>;
|
|
169
|
+
embed(text: string, role?: EmbeddingRole): Promise<number[]>;
|
|
139
170
|
/** Batched embedding; the vector dimension depends on the model. */
|
|
140
|
-
embedBatch(texts: string[]): Promise<number[][]>;
|
|
171
|
+
embedBatch(texts: string[], role?: EmbeddingRole): Promise<number[][]>;
|
|
141
172
|
}
|
|
142
173
|
export {};
|
|
143
174
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/embedder/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/embedder/index.ts"],"names":[],"mappings":"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"}
|