@ssmeo/mcp-local-rag 0.18.13 → 0.19.0
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/download-model.d.ts +3 -0
- package/dist/cli/download-model.d.ts.map +1 -0
- package/dist/cli/download-model.js +21 -0
- package/dist/cli/download-model.js.map +1 -0
- 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 +351 -24
- package/dist/embedder/index.js.map +1 -1
- package/dist/embedder/remote.d.ts +42 -4
- package/dist/embedder/remote.d.ts.map +1 -1
- package/dist/embedder/remote.js +113 -5
- 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.js +1 -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/captioner.d.ts.map +1 -1
- package/dist/pdf-visual/captioner.js +7 -4
- package/dist/pdf-visual/captioner.js.map +1 -1
- 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 +8 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +129 -81
- 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-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 +33 -8
- 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,179 @@
|
|
|
1
|
+
import { stat } from 'node:fs/promises';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import { connect } from '@lancedb/lancedb';
|
|
4
|
+
import { toError } from '../utils/errors.js';
|
|
5
|
+
import { isRecord } from '../utils/type-guards.js';
|
|
6
|
+
import { DatabaseError } from './types.js';
|
|
7
|
+
/** Move indexed file keys beneath one directory prefix in a single table update. */
|
|
8
|
+
export async function relocateIndexedPaths(options) {
|
|
9
|
+
let connection;
|
|
10
|
+
try {
|
|
11
|
+
const { dbPath, tableName, validateDestinations } = options;
|
|
12
|
+
if (typeof dbPath !== 'string' || dbPath.length === 0) {
|
|
13
|
+
throw new DatabaseError('Relocation requires an existing database path');
|
|
14
|
+
}
|
|
15
|
+
if (typeof tableName !== 'string' || tableName.length === 0) {
|
|
16
|
+
throw new DatabaseError('Relocation requires a table name');
|
|
17
|
+
}
|
|
18
|
+
if (typeof validateDestinations !== 'function') {
|
|
19
|
+
throw new DatabaseError('Relocation requires destination validation');
|
|
20
|
+
}
|
|
21
|
+
const fromRoot = normalizeDirectory(options.fromPath, 'source');
|
|
22
|
+
const toRoot = normalizeDirectory(options.toPath, 'destination');
|
|
23
|
+
if (samePath(fromRoot, toRoot)) {
|
|
24
|
+
throw new DatabaseError('Source and destination directories must be different');
|
|
25
|
+
}
|
|
26
|
+
const dbInfo = await stat(dbPath).catch((error) => {
|
|
27
|
+
throw new DatabaseError(`Database directory does not exist: ${dbPath}`, {
|
|
28
|
+
cause: toError(error),
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
if (!dbInfo.isDirectory()) {
|
|
32
|
+
throw new DatabaseError(`Database path is not a directory: ${dbPath}`);
|
|
33
|
+
}
|
|
34
|
+
connection = await connect(dbPath, { readConsistencyInterval: 0 });
|
|
35
|
+
if (!(await connection.tableNames()).includes(tableName)) {
|
|
36
|
+
throw new DatabaseError(`Table does not exist: ${tableName}`);
|
|
37
|
+
}
|
|
38
|
+
const table = await connection.openTable(tableName);
|
|
39
|
+
const rawRows = await table.query().select(['filePath']).toArray();
|
|
40
|
+
const snapshot = createSnapshot(rawRows, fromRoot, toRoot);
|
|
41
|
+
if (snapshot.mappings.length === 0) {
|
|
42
|
+
return { filesRelocated: 0, chunksRelocated: 0 };
|
|
43
|
+
}
|
|
44
|
+
try {
|
|
45
|
+
await validateDestinations(snapshot.mappings);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
throw new DatabaseError('Destination validation failed; no database changes were made', {
|
|
49
|
+
cause: toError(error),
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
const sourceLiterals = snapshot.mappings.map(({ sourcePath }) => sqlString(sourcePath));
|
|
53
|
+
const destinationLiterals = snapshot.mappings.map(({ destinationPath }) => sqlString(destinationPath));
|
|
54
|
+
const sourceList = `[${sourceLiterals.join(', ')}]`;
|
|
55
|
+
const destinationList = `[${destinationLiterals.join(', ')}]`;
|
|
56
|
+
await table.update({
|
|
57
|
+
where: `\`filePath\` IN (${sourceLiterals.join(', ')})`,
|
|
58
|
+
valuesSql: {
|
|
59
|
+
filePath: `array_element(${destinationList}, CAST(array_position(${sourceList}, \`filePath\`) AS BIGINT))`,
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
return {
|
|
63
|
+
filesRelocated: snapshot.mappings.length,
|
|
64
|
+
chunksRelocated: snapshot.chunksRelocated,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
if (error instanceof DatabaseError) {
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
throw new DatabaseError('Failed to relocate indexed paths', { cause: toError(error) });
|
|
72
|
+
}
|
|
73
|
+
finally {
|
|
74
|
+
connection?.close();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function normalizeDirectory(value, label) {
|
|
78
|
+
if (typeof value !== 'string' ||
|
|
79
|
+
value.length === 0 ||
|
|
80
|
+
value.includes('\0') ||
|
|
81
|
+
!path.isAbsolute(value)) {
|
|
82
|
+
throw new DatabaseError(`The ${label} directory must be an absolute native path`);
|
|
83
|
+
}
|
|
84
|
+
return path.resolve(value);
|
|
85
|
+
}
|
|
86
|
+
function validateStoredPath(value) {
|
|
87
|
+
if (typeof value !== 'string' ||
|
|
88
|
+
value.length === 0 ||
|
|
89
|
+
value.includes('\0') ||
|
|
90
|
+
!path.isAbsolute(value)) {
|
|
91
|
+
throw new DatabaseError('Indexed file paths must be non-empty absolute native paths');
|
|
92
|
+
}
|
|
93
|
+
if (value.endsWith(path.sep) || (process.platform === 'win32' && value.endsWith('/'))) {
|
|
94
|
+
throw new DatabaseError(`Indexed file path is malformed: ${value}`);
|
|
95
|
+
}
|
|
96
|
+
return value;
|
|
97
|
+
}
|
|
98
|
+
function samePath(left, right) {
|
|
99
|
+
return process.platform === 'win32' ? left.toLowerCase() === right.toLowerCase() : left === right;
|
|
100
|
+
}
|
|
101
|
+
function isOutsideRelativePath(relativePath) {
|
|
102
|
+
return (relativePath === '..' ||
|
|
103
|
+
relativePath.startsWith(`..${path.sep}`) ||
|
|
104
|
+
path.isAbsolute(relativePath));
|
|
105
|
+
}
|
|
106
|
+
function relativeWithin(root, candidate) {
|
|
107
|
+
const relativePath = path.relative(root, path.normalize(candidate));
|
|
108
|
+
if (isOutsideRelativePath(relativePath)) {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
return relativePath;
|
|
112
|
+
}
|
|
113
|
+
function createSnapshot(rawRows, fromRoot, toRoot) {
|
|
114
|
+
const filePaths = rawRows.map(readIndexedPath);
|
|
115
|
+
const mappings = createMappings(filePaths, fromRoot, toRoot);
|
|
116
|
+
assertNoDestinationCollisions(filePaths, mappings);
|
|
117
|
+
const sourcePaths = new Set(mappings.map(({ sourcePath }) => sourcePath));
|
|
118
|
+
return {
|
|
119
|
+
filePaths,
|
|
120
|
+
mappings,
|
|
121
|
+
chunksRelocated: filePaths.filter((filePath) => sourcePaths.has(filePath)).length,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
function readIndexedPath(row) {
|
|
125
|
+
if (!isRecord(row)) {
|
|
126
|
+
throw new DatabaseError('Invalid indexed path row returned by LanceDB');
|
|
127
|
+
}
|
|
128
|
+
return validateStoredPath(row['filePath']);
|
|
129
|
+
}
|
|
130
|
+
function createMappings(filePaths, fromRoot, toRoot) {
|
|
131
|
+
const selected = new Map();
|
|
132
|
+
for (const filePath of filePaths) {
|
|
133
|
+
if (selected.has(filePath)) {
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
const relativePath = relativeWithin(fromRoot, filePath);
|
|
137
|
+
if (relativePath === null) {
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
if (relativePath.length === 0) {
|
|
141
|
+
throw new DatabaseError(`Indexed path is the source directory itself: ${filePath}`);
|
|
142
|
+
}
|
|
143
|
+
const destinationPath = path.join(toRoot, relativePath);
|
|
144
|
+
const destinationRelativePath = relativeWithin(toRoot, destinationPath);
|
|
145
|
+
if (destinationRelativePath === null || destinationRelativePath.length === 0) {
|
|
146
|
+
throw new DatabaseError(`Relocated path is outside the destination directory: ${filePath}`);
|
|
147
|
+
}
|
|
148
|
+
selected.set(filePath, destinationPath);
|
|
149
|
+
}
|
|
150
|
+
return [...selected].map(([sourcePath, destinationPath]) => ({
|
|
151
|
+
sourcePath,
|
|
152
|
+
destinationPath,
|
|
153
|
+
}));
|
|
154
|
+
}
|
|
155
|
+
function assertNoDestinationCollisions(filePaths, mappings) {
|
|
156
|
+
const sourceKeys = new Set(mappings.map(({ sourcePath }) => pathKey(sourcePath)));
|
|
157
|
+
const indexedPathKeys = new Set(filePaths.map(pathKey));
|
|
158
|
+
const destinationOwners = new Map();
|
|
159
|
+
for (const mapping of mappings) {
|
|
160
|
+
const destinationKey = pathKey(mapping.destinationPath);
|
|
161
|
+
const previousSource = destinationOwners.get(destinationKey);
|
|
162
|
+
if (previousSource !== undefined && previousSource !== mapping.sourcePath) {
|
|
163
|
+
throw new DatabaseError(`Multiple indexed paths map to the same destination: ${mapping.destinationPath}`);
|
|
164
|
+
}
|
|
165
|
+
destinationOwners.set(destinationKey, mapping.sourcePath);
|
|
166
|
+
if (indexedPathKeys.has(destinationKey) && !sourceKeys.has(destinationKey)) {
|
|
167
|
+
const existingKey = filePaths.find((filePath) => pathKey(filePath) === destinationKey);
|
|
168
|
+
throw new DatabaseError(`Relocation destination collides with an indexed path: ${existingKey}`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
function pathKey(value) {
|
|
173
|
+
const normalized = path.normalize(value);
|
|
174
|
+
return process.platform === 'win32' ? normalized.toLowerCase() : normalized;
|
|
175
|
+
}
|
|
176
|
+
function sqlString(value) {
|
|
177
|
+
return `'${value.replace(/'/g, "''")}'`;
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=relocate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relocate.js","sourceRoot":"","sources":["../../src/vectordb/relocate.ts"],"names":[],"mappings":"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"}
|
package/dist/vectordb/types.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { AppError } from '../utils/errors.js';
|
|
2
|
+
import { type SourceContext } from '../utils/source-context.js';
|
|
2
3
|
/** Multiplier for candidate count in hybrid search (to allow reranking) */
|
|
3
4
|
export declare const HYBRID_SEARCH_CANDIDATE_MULTIPLIER = 2;
|
|
5
|
+
/** Minimum semantic pool for keyword reranking without distance-gap grouping. */
|
|
6
|
+
export declare const HYBRID_SEARCH_MIN_CANDIDATES = 200;
|
|
4
7
|
/** FTS index name (bump version when changing tokenizer settings) */
|
|
5
8
|
export declare const FTS_INDEX_NAME = "fts_index_v2";
|
|
6
9
|
/** Threshold for cleaning up old index versions (1 minute) */
|
|
@@ -48,17 +51,6 @@ export interface SearchOptions {
|
|
|
48
51
|
*/
|
|
49
52
|
scope?: string[];
|
|
50
53
|
}
|
|
51
|
-
/**
|
|
52
|
-
* Document metadata
|
|
53
|
-
*/
|
|
54
|
-
export interface DocumentMetadata {
|
|
55
|
-
/** File name */
|
|
56
|
-
fileName: string;
|
|
57
|
-
/** File size in bytes */
|
|
58
|
-
fileSize: number;
|
|
59
|
-
/** File type (extension) */
|
|
60
|
-
fileType: string;
|
|
61
|
-
}
|
|
62
54
|
/**
|
|
63
55
|
* Validated, bounded image stored in a chunk's ordered attachment JSON.
|
|
64
56
|
*/
|
|
@@ -71,6 +63,8 @@ export interface VisualAttachment {
|
|
|
71
63
|
* Vector chunk
|
|
72
64
|
*/
|
|
73
65
|
export interface VectorChunk {
|
|
66
|
+
/** JSON display context, absent on legacy rows. */
|
|
67
|
+
sourceContext?: string;
|
|
74
68
|
/** Chunk ID (UUID) */
|
|
75
69
|
id: string;
|
|
76
70
|
/** File path (absolute) */
|
|
@@ -81,8 +75,6 @@ export interface VectorChunk {
|
|
|
81
75
|
text: string;
|
|
82
76
|
/** Embedding vector (dimension depends on model) */
|
|
83
77
|
vector: number[];
|
|
84
|
-
/** Metadata */
|
|
85
|
-
metadata: DocumentMetadata;
|
|
86
78
|
/** Document title extracted from file content (display-only, not used for scoring) */
|
|
87
79
|
fileTitle: string | null;
|
|
88
80
|
/** SHA-256 of the source file bytes; absent for chunks not ingested from a file. */
|
|
@@ -102,6 +94,7 @@ export interface VectorChunk {
|
|
|
102
94
|
* Search result
|
|
103
95
|
*/
|
|
104
96
|
export interface SearchResult {
|
|
97
|
+
sourceContext?: SourceContext;
|
|
105
98
|
/** Stable persisted row identity used for attachment hydration. */
|
|
106
99
|
id: string;
|
|
107
100
|
/** File path */
|
|
@@ -112,8 +105,6 @@ export interface SearchResult {
|
|
|
112
105
|
text: string;
|
|
113
106
|
/** Distance score using dot product (0 = identical, 1 = orthogonal, 2 = opposite) */
|
|
114
107
|
score: number;
|
|
115
|
-
/** Metadata */
|
|
116
|
-
metadata: DocumentMetadata;
|
|
117
108
|
/** Document title extracted from file content (display-only, not used for scoring) */
|
|
118
109
|
fileTitle: string | null;
|
|
119
110
|
}
|
|
@@ -129,9 +120,10 @@ export interface AttachmentHydrationResult {
|
|
|
129
120
|
}
|
|
130
121
|
/**
|
|
131
122
|
* Row from {@link VectorStore.getChunksByRange}. Distinct from `SearchResult`:
|
|
132
|
-
* no score (not ranked)
|
|
123
|
+
* no score (not ranked).
|
|
133
124
|
*/
|
|
134
125
|
export interface ChunkRow {
|
|
126
|
+
sourceContext?: SourceContext;
|
|
135
127
|
/** File path (absolute) */
|
|
136
128
|
filePath: string;
|
|
137
129
|
/** Chunk index (zero-based) */
|
|
@@ -145,20 +137,16 @@ export interface ChunkRow {
|
|
|
145
137
|
* Raw result from LanceDB query (internal type)
|
|
146
138
|
*/
|
|
147
139
|
export interface LanceDBRawResult {
|
|
140
|
+
sourceContext?: string | null;
|
|
148
141
|
id: string;
|
|
149
142
|
filePath: string;
|
|
150
143
|
chunkIndex: number;
|
|
151
144
|
text: string;
|
|
152
|
-
metadata: DocumentMetadata;
|
|
153
145
|
/** Document title (optional - existing rows lack this field before migration) */
|
|
154
146
|
fileTitle?: string | null;
|
|
155
147
|
_distance?: number;
|
|
156
148
|
_score?: number;
|
|
157
149
|
}
|
|
158
|
-
/**
|
|
159
|
-
* Type guard for LanceDB raw search result
|
|
160
|
-
*/
|
|
161
|
-
export declare function isLanceDBRawResult(value: unknown): value is LanceDBRawResult;
|
|
162
150
|
/**
|
|
163
151
|
* Convert LanceDB raw result to SearchResult with type validation
|
|
164
152
|
* @throws DatabaseError if the result is invalid
|
|
@@ -179,8 +167,7 @@ export declare function parseHydratedVisualAttachments(value: unknown): {
|
|
|
179
167
|
omittedCount: number;
|
|
180
168
|
};
|
|
181
169
|
/**
|
|
182
|
-
* The minimal range-read shape: no score (not ranked)
|
|
183
|
-
* needed for index-adjacent retrieval), so the shape check is narrower than
|
|
170
|
+
* The minimal range-read shape: no score (not ranked), so the shape check is narrower than
|
|
184
171
|
* {@link isLanceDBRawResult}. An empty or missing `fileTitle` reads as `null`.
|
|
185
172
|
*
|
|
186
173
|
* @throws DatabaseError when a required field is missing.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/vectordb/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/vectordb/types.ts"],"names":[],"mappings":"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"}
|
package/dist/vectordb/types.js
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
// VectorDB type definitions, constants, type guards, and error classes
|
|
2
2
|
import { AppError } from '../utils/errors.js';
|
|
3
3
|
import { MAX_VISUAL_RENDITION_BYTES } from '../utils/limits.js';
|
|
4
|
+
import { parseSourceContext } from '../utils/source-context.js';
|
|
4
5
|
import { isInteger, isRecord } from '../utils/type-guards.js';
|
|
5
6
|
// ============================================
|
|
6
7
|
// Constants
|
|
7
8
|
// ============================================
|
|
8
9
|
/** Multiplier for candidate count in hybrid search (to allow reranking) */
|
|
9
10
|
export const HYBRID_SEARCH_CANDIDATE_MULTIPLIER = 2;
|
|
11
|
+
/** Minimum semantic pool for keyword reranking without distance-gap grouping. */
|
|
12
|
+
export const HYBRID_SEARCH_MIN_CANDIDATES = 200;
|
|
10
13
|
/** FTS index name (bump version when changing tokenizer settings) */
|
|
11
14
|
export const FTS_INDEX_NAME = 'fts_index_v2';
|
|
12
15
|
/** Threshold for cleaning up old index versions (1 minute) */
|
|
@@ -16,9 +19,6 @@ export const DEFAULT_HYBRID_WEIGHT = 0.6;
|
|
|
16
19
|
// ============================================
|
|
17
20
|
// Type Guards
|
|
18
21
|
// ============================================
|
|
19
|
-
/**
|
|
20
|
-
* Type guard for DocumentMetadata
|
|
21
|
-
*/
|
|
22
22
|
/** A non-null object with a numeric `length` — indices read as `unknown`. */
|
|
23
23
|
function isArrayLike(value) {
|
|
24
24
|
return isRecord(value) && typeof value['length'] === 'number';
|
|
@@ -42,26 +42,17 @@ function toEmbeddingVector(value) {
|
|
|
42
42
|
}
|
|
43
43
|
return vector;
|
|
44
44
|
}
|
|
45
|
-
function isDocumentMetadata(value) {
|
|
46
|
-
if (!isRecord(value)) {
|
|
47
|
-
return false;
|
|
48
|
-
}
|
|
49
|
-
return (typeof value['fileName'] === 'string' &&
|
|
50
|
-
typeof value['fileSize'] === 'number' &&
|
|
51
|
-
typeof value['fileType'] === 'string');
|
|
52
|
-
}
|
|
53
45
|
/**
|
|
54
46
|
* Type guard for LanceDB raw search result
|
|
55
47
|
*/
|
|
56
|
-
|
|
48
|
+
function isLanceDBRawResult(value) {
|
|
57
49
|
if (!isRecord(value)) {
|
|
58
50
|
return false;
|
|
59
51
|
}
|
|
60
52
|
return (typeof value['id'] === 'string' &&
|
|
61
53
|
typeof value['filePath'] === 'string' &&
|
|
62
54
|
typeof value['chunkIndex'] === 'number' &&
|
|
63
|
-
typeof value['text'] === 'string'
|
|
64
|
-
isDocumentMetadata(value['metadata']));
|
|
55
|
+
typeof value['text'] === 'string');
|
|
65
56
|
}
|
|
66
57
|
/**
|
|
67
58
|
* Convert LanceDB raw result to SearchResult with type validation
|
|
@@ -81,8 +72,8 @@ export function toSearchResult(raw) {
|
|
|
81
72
|
chunkIndex: raw.chunkIndex,
|
|
82
73
|
text: raw.text,
|
|
83
74
|
score: raw._distance ?? raw._score ?? 0,
|
|
84
|
-
metadata: raw.metadata,
|
|
85
75
|
fileTitle: raw.fileTitle || null,
|
|
76
|
+
...contextProperty(raw.sourceContext),
|
|
86
77
|
};
|
|
87
78
|
}
|
|
88
79
|
/**
|
|
@@ -95,7 +86,7 @@ export function toVectorChunk(raw) {
|
|
|
95
86
|
if (!isRecord(raw)) {
|
|
96
87
|
throw new DatabaseError('Invalid chunk row shape from LanceDB');
|
|
97
88
|
}
|
|
98
|
-
const { id, filePath, chunkIndex, text, vector,
|
|
89
|
+
const { id, filePath, chunkIndex, text, vector, fileTitle, contentHash, visualAttachments, visualProfile, sourceContext, timestamp, } = raw;
|
|
99
90
|
if (typeof id !== 'string' ||
|
|
100
91
|
typeof filePath !== 'string' ||
|
|
101
92
|
typeof chunkIndex !== 'number' ||
|
|
@@ -103,16 +94,12 @@ export function toVectorChunk(raw) {
|
|
|
103
94
|
typeof timestamp !== 'string') {
|
|
104
95
|
throw new DatabaseError('Invalid chunk row shape from LanceDB (scalar fields)');
|
|
105
96
|
}
|
|
106
|
-
if (!isDocumentMetadata(metadata)) {
|
|
107
|
-
throw new DatabaseError('Invalid chunk row shape from LanceDB (metadata)');
|
|
108
|
-
}
|
|
109
97
|
return {
|
|
110
98
|
id,
|
|
111
99
|
filePath,
|
|
112
100
|
chunkIndex,
|
|
113
101
|
text,
|
|
114
102
|
vector: toEmbeddingVector(vector),
|
|
115
|
-
metadata,
|
|
116
103
|
fileTitle: typeof fileTitle === 'string' && fileTitle.length > 0 ? fileTitle : null,
|
|
117
104
|
// Omit the key rather than store '' or undefined: the create path seeds ''
|
|
118
105
|
// for schema inference, and a '' that survived to a caller would read as a
|
|
@@ -122,6 +109,7 @@ export function toVectorChunk(raw) {
|
|
|
122
109
|
// (missing column, NULL, create-path ''). Any other string is preserved
|
|
123
110
|
// verbatim so a backup taken here restores the row unchanged.
|
|
124
111
|
...(typeof visualProfile === 'string' && visualProfile.length > 0 ? { visualProfile } : {}),
|
|
112
|
+
...(typeof sourceContext === 'string' && sourceContext ? { sourceContext } : {}),
|
|
125
113
|
visualAttachments: normalizeVisualAttachments(visualAttachments),
|
|
126
114
|
timestamp,
|
|
127
115
|
};
|
|
@@ -204,8 +192,7 @@ export function parseHydratedVisualAttachments(value) {
|
|
|
204
192
|
return { attachments, omittedCount };
|
|
205
193
|
}
|
|
206
194
|
/**
|
|
207
|
-
* The minimal range-read shape: no score (not ranked)
|
|
208
|
-
* needed for index-adjacent retrieval), so the shape check is narrower than
|
|
195
|
+
* The minimal range-read shape: no score (not ranked), so the shape check is narrower than
|
|
209
196
|
* {@link isLanceDBRawResult}. An empty or missing `fileTitle` reads as `null`.
|
|
210
197
|
*
|
|
211
198
|
* @throws DatabaseError when a required field is missing.
|
|
@@ -220,7 +207,7 @@ export function toChunkRow(raw) {
|
|
|
220
207
|
}
|
|
221
208
|
const rawFileTitle = raw['fileTitle'];
|
|
222
209
|
const fileTitle = typeof rawFileTitle === 'string' && rawFileTitle.length > 0 ? rawFileTitle : null;
|
|
223
|
-
return { filePath, chunkIndex, text, fileTitle };
|
|
210
|
+
return { filePath, chunkIndex, text, fileTitle, ...contextProperty(raw['sourceContext']) };
|
|
224
211
|
}
|
|
225
212
|
// ============================================
|
|
226
213
|
// Error Classes
|
|
@@ -234,4 +221,8 @@ export class DatabaseError extends AppError {
|
|
|
234
221
|
this.name = 'DatabaseError';
|
|
235
222
|
}
|
|
236
223
|
}
|
|
224
|
+
function contextProperty(value) {
|
|
225
|
+
const sourceContext = parseSourceContext(value);
|
|
226
|
+
return sourceContext ? { sourceContext } : {};
|
|
227
|
+
}
|
|
237
228
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/vectordb/types.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAEvE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAE7D,+CAA+C;AAC/C,YAAY;AACZ,+CAA+C;AAE/C,2EAA2E;AAC3E,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,CAAA;AAEnD,qEAAqE;AACrE,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAA;AAE5C,8DAA8D;AAC9D,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,GAAG,IAAI,CAAA;AAEjD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAA;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/vectordb/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ssmeo/mcp-local-rag",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.0",
|
|
4
4
|
"description": "Local RAG MCP Server - Easy-to-setup document search with minimal configuration (fork with remote embedding server support)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -67,33 +67,33 @@
|
|
|
67
67
|
"prepublishOnly": "npm run build && npx vitest run src/__tests__/embedder/"
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"@huggingface/transformers": "^4.3.
|
|
71
|
-
"@lancedb/lancedb": "^0.
|
|
72
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
70
|
+
"@huggingface/transformers": "^4.3.1",
|
|
71
|
+
"@lancedb/lancedb": "^0.40.0",
|
|
72
|
+
"@modelcontextprotocol/sdk": "^1.32.1",
|
|
73
73
|
"@mozilla/readability": "0.6.0",
|
|
74
|
-
"jsdom": "^30.
|
|
74
|
+
"jsdom": "^30.1.3",
|
|
75
75
|
"jszip": "^3.10.2",
|
|
76
|
-
"mammoth": "^1.
|
|
76
|
+
"mammoth": "^1.13.0",
|
|
77
77
|
"mupdf": "^1.28.1",
|
|
78
78
|
"turndown": "7.2.4"
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
|
-
"@biomejs/biome": "2.5.
|
|
81
|
+
"@biomejs/biome": "2.5.15",
|
|
82
82
|
"@types/jsdom": "^30.0.0",
|
|
83
|
-
"@types/node": "^26.6.
|
|
83
|
+
"@types/node": "^26.6.5",
|
|
84
84
|
"@types/turndown": "5.0.6",
|
|
85
85
|
"dpdm": "^4.3.0",
|
|
86
86
|
"husky": "^9.1.7",
|
|
87
|
-
"knip": "^6.
|
|
88
|
-
"lint-staged": "^17.
|
|
89
|
-
"tsx": "^4.23.
|
|
87
|
+
"knip": "^6.42.0",
|
|
88
|
+
"lint-staged": "^17.6.0",
|
|
89
|
+
"tsx": "^4.23.15",
|
|
90
90
|
"typescript": "^7.0.2",
|
|
91
|
-
"vite": "^8.3.
|
|
92
|
-
"vitest": "^
|
|
91
|
+
"vite": "^8.3.4",
|
|
92
|
+
"vitest": "^5.0.5"
|
|
93
93
|
},
|
|
94
94
|
"packageManager": "pnpm@11.24.0",
|
|
95
95
|
"engines": {
|
|
96
|
-
"node": ">=
|
|
96
|
+
"node": "^22.23.4 || ^24.22.1 || >=26.12.1"
|
|
97
97
|
},
|
|
98
98
|
"lint-staged": {
|
|
99
99
|
"src/**/*.{ts,tsx}": [
|