rag-lite-ts 1.0.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/LICENSE +21 -0
- package/README.md +240 -0
- package/dist/api-errors.d.ts +90 -0
- package/dist/api-errors.d.ts.map +1 -0
- package/dist/api-errors.js +320 -0
- package/dist/api-errors.js.map +1 -0
- package/dist/chunker.d.ts +47 -0
- package/dist/chunker.d.ts.map +1 -0
- package/dist/chunker.js +256 -0
- package/dist/chunker.js.map +1 -0
- package/dist/cli/indexer.d.ts +11 -0
- package/dist/cli/indexer.d.ts.map +1 -0
- package/dist/cli/indexer.js +272 -0
- package/dist/cli/indexer.js.map +1 -0
- package/dist/cli/search.d.ts +7 -0
- package/dist/cli/search.d.ts.map +1 -0
- package/dist/cli/search.js +206 -0
- package/dist/cli/search.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +362 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +90 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +281 -0
- package/dist/config.js.map +1 -0
- package/dist/db.d.ts +90 -0
- package/dist/db.d.ts.map +1 -0
- package/dist/db.js +340 -0
- package/dist/db.js.map +1 -0
- package/dist/embedder.d.ts +101 -0
- package/dist/embedder.d.ts.map +1 -0
- package/dist/embedder.js +323 -0
- package/dist/embedder.js.map +1 -0
- package/dist/error-handler.d.ts +91 -0
- package/dist/error-handler.d.ts.map +1 -0
- package/dist/error-handler.js +196 -0
- package/dist/error-handler.js.map +1 -0
- package/dist/file-processor.d.ts +59 -0
- package/dist/file-processor.d.ts.map +1 -0
- package/dist/file-processor.js +312 -0
- package/dist/file-processor.js.map +1 -0
- package/dist/index-manager.d.ts +99 -0
- package/dist/index-manager.d.ts.map +1 -0
- package/dist/index-manager.js +444 -0
- package/dist/index-manager.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/indexer.d.ts +7 -0
- package/dist/indexer.d.ts.map +1 -0
- package/dist/indexer.js +51 -0
- package/dist/indexer.js.map +1 -0
- package/dist/ingestion.d.ts +175 -0
- package/dist/ingestion.d.ts.map +1 -0
- package/dist/ingestion.js +705 -0
- package/dist/ingestion.js.map +1 -0
- package/dist/mcp-server.d.ts +14 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +680 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/path-manager.d.ts +42 -0
- package/dist/path-manager.d.ts.map +1 -0
- package/dist/path-manager.js +66 -0
- package/dist/path-manager.js.map +1 -0
- package/dist/preprocess.d.ts +19 -0
- package/dist/preprocess.d.ts.map +1 -0
- package/dist/preprocess.js +203 -0
- package/dist/preprocess.js.map +1 -0
- package/dist/preprocessors/index.d.ts +17 -0
- package/dist/preprocessors/index.d.ts.map +1 -0
- package/dist/preprocessors/index.js +38 -0
- package/dist/preprocessors/index.js.map +1 -0
- package/dist/preprocessors/mdx.d.ts +25 -0
- package/dist/preprocessors/mdx.d.ts.map +1 -0
- package/dist/preprocessors/mdx.js +101 -0
- package/dist/preprocessors/mdx.js.map +1 -0
- package/dist/preprocessors/mermaid.d.ts +68 -0
- package/dist/preprocessors/mermaid.d.ts.map +1 -0
- package/dist/preprocessors/mermaid.js +329 -0
- package/dist/preprocessors/mermaid.js.map +1 -0
- package/dist/preprocessors/registry.d.ts +56 -0
- package/dist/preprocessors/registry.d.ts.map +1 -0
- package/dist/preprocessors/registry.js +179 -0
- package/dist/preprocessors/registry.js.map +1 -0
- package/dist/reranker.d.ts +40 -0
- package/dist/reranker.d.ts.map +1 -0
- package/dist/reranker.js +212 -0
- package/dist/reranker.js.map +1 -0
- package/dist/resource-manager-demo.d.ts +7 -0
- package/dist/resource-manager-demo.d.ts.map +1 -0
- package/dist/resource-manager-demo.js +52 -0
- package/dist/resource-manager-demo.js.map +1 -0
- package/dist/resource-manager.d.ts +129 -0
- package/dist/resource-manager.d.ts.map +1 -0
- package/dist/resource-manager.js +389 -0
- package/dist/resource-manager.js.map +1 -0
- package/dist/search-standalone.d.ts +7 -0
- package/dist/search-standalone.d.ts.map +1 -0
- package/dist/search-standalone.js +117 -0
- package/dist/search-standalone.js.map +1 -0
- package/dist/search.d.ts +92 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +454 -0
- package/dist/search.js.map +1 -0
- package/dist/test-utils.d.ts +36 -0
- package/dist/test-utils.d.ts.map +1 -0
- package/dist/test-utils.js +27 -0
- package/dist/test-utils.js.map +1 -0
- package/dist/tokenizer.d.ts +21 -0
- package/dist/tokenizer.d.ts.map +1 -0
- package/dist/tokenizer.js +59 -0
- package/dist/tokenizer.js.map +1 -0
- package/dist/types.d.ts +44 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/vector-index.d.ts +64 -0
- package/dist/vector-index.d.ts.map +1 -0
- package/dist/vector-index.js +308 -0
- package/dist/vector-index.js.map +1 -0
- package/package.json +80 -0
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
import { openDatabase, initializeSchema, getStoredModelInfo, setStoredModelInfo } from './db.js';
|
|
2
|
+
import { IndexManager } from './index-manager.js';
|
|
3
|
+
import { initializeEmbeddingEngine } from './embedder.js';
|
|
4
|
+
import { config, getModelDefaults } from './config.js';
|
|
5
|
+
import { ErrorFactory } from './api-errors.js';
|
|
6
|
+
import { join, resolve } from 'path';
|
|
7
|
+
import { existsSync } from 'fs';
|
|
8
|
+
/**
|
|
9
|
+
* Internal ResourceManager for automatic initialization and cleanup
|
|
10
|
+
* Implements singleton pattern for resource sharing across instances
|
|
11
|
+
* Requirements: 5.1, 5.4 - Automatic resource management and lifecycle handling
|
|
12
|
+
*/
|
|
13
|
+
export class ResourceManager {
|
|
14
|
+
static instances = new Map();
|
|
15
|
+
static cleanupHandlersSet = false;
|
|
16
|
+
database = null;
|
|
17
|
+
indexManager = null;
|
|
18
|
+
embedder = null;
|
|
19
|
+
isInitialized = false;
|
|
20
|
+
initializationPromise = null;
|
|
21
|
+
resourceKey;
|
|
22
|
+
config;
|
|
23
|
+
/**
|
|
24
|
+
* Get or create ResourceManager instance for the given configuration
|
|
25
|
+
* Implements singleton pattern for resource sharing
|
|
26
|
+
* @param config - Resource configuration
|
|
27
|
+
* @returns ResourceManager instance
|
|
28
|
+
*/
|
|
29
|
+
static getInstance(config = {}) {
|
|
30
|
+
// Create a unique key based on the configuration
|
|
31
|
+
const resolvedConfig = ResourceManager.resolveConfig(config);
|
|
32
|
+
const key = `${resolvedConfig.dbPath}:${resolvedConfig.indexPath}:${resolvedConfig.modelName}`;
|
|
33
|
+
if (!ResourceManager.instances.has(key)) {
|
|
34
|
+
ResourceManager.instances.set(key, new ResourceManager(key, resolvedConfig));
|
|
35
|
+
}
|
|
36
|
+
return ResourceManager.instances.get(key);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Resolve and normalize configuration with defaults
|
|
40
|
+
*/
|
|
41
|
+
static resolveConfig(resourceConfig) {
|
|
42
|
+
const basePath = resourceConfig.basePath ? resolve(resourceConfig.basePath) : process.cwd();
|
|
43
|
+
return {
|
|
44
|
+
basePath,
|
|
45
|
+
dbPath: resourceConfig.dbPath ? resolve(resourceConfig.dbPath) : join(basePath, 'db.sqlite'),
|
|
46
|
+
indexPath: resourceConfig.indexPath ? resolve(resourceConfig.indexPath) : join(basePath, 'vector-index.bin'),
|
|
47
|
+
modelName: resourceConfig.modelName || config.embedding_model,
|
|
48
|
+
batchSize: resourceConfig.batchSize || config.batch_size,
|
|
49
|
+
skipModelCheck: resourceConfig.skipModelCheck || false
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Private constructor - use getInstance() instead
|
|
54
|
+
*/
|
|
55
|
+
constructor(resourceKey, config) {
|
|
56
|
+
this.resourceKey = resourceKey;
|
|
57
|
+
this.config = config;
|
|
58
|
+
// Set up automatic cleanup handlers
|
|
59
|
+
this.setupCleanupHandlers();
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Initialize all resources with lazy loading
|
|
63
|
+
* Requirements: 5.1 - Automatic resource management
|
|
64
|
+
*/
|
|
65
|
+
async initialize() {
|
|
66
|
+
// Return existing initialization promise if already in progress
|
|
67
|
+
if (this.initializationPromise) {
|
|
68
|
+
await this.initializationPromise;
|
|
69
|
+
return this.getResources();
|
|
70
|
+
}
|
|
71
|
+
// Start new initialization if not already initialized
|
|
72
|
+
if (!this.isInitialized) {
|
|
73
|
+
this.initializationPromise = this.performInitialization();
|
|
74
|
+
await this.initializationPromise;
|
|
75
|
+
}
|
|
76
|
+
return this.getResources();
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Perform the actual initialization steps
|
|
80
|
+
*/
|
|
81
|
+
async performInitialization() {
|
|
82
|
+
try {
|
|
83
|
+
console.log('Initializing resources...');
|
|
84
|
+
// Step 1: Initialize database
|
|
85
|
+
await this.initializeDatabase();
|
|
86
|
+
// Step 2: Initialize embedder (either from stored model info or config)
|
|
87
|
+
await this.initializeEmbedder();
|
|
88
|
+
// Step 3: Initialize index manager with model compatibility check
|
|
89
|
+
await this.initializeIndexManager();
|
|
90
|
+
this.isInitialized = true;
|
|
91
|
+
console.log('Resources initialized successfully');
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
// Clean up partial initialization on failure
|
|
95
|
+
await this.cleanup();
|
|
96
|
+
throw ErrorFactory.createResourceError(error, 'initialization');
|
|
97
|
+
}
|
|
98
|
+
finally {
|
|
99
|
+
this.initializationPromise = null;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Initialize database connection and schema
|
|
104
|
+
*/
|
|
105
|
+
async initializeDatabase() {
|
|
106
|
+
if (this.database) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
console.log('Opening database connection...');
|
|
110
|
+
this.database = await openDatabase(this.config.dbPath);
|
|
111
|
+
await initializeSchema(this.database);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Initialize embedder based on stored model info or configuration
|
|
115
|
+
* Requirements: 5.1 - Embedder initialization based on stored model info from database
|
|
116
|
+
*/
|
|
117
|
+
async initializeEmbedder() {
|
|
118
|
+
if (this.embedder) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
if (!this.database) {
|
|
122
|
+
throw new Error('Database must be initialized before embedder');
|
|
123
|
+
}
|
|
124
|
+
let modelName = this.config.modelName;
|
|
125
|
+
// Try to get stored model info from database first
|
|
126
|
+
try {
|
|
127
|
+
const storedModelInfo = await getStoredModelInfo(this.database);
|
|
128
|
+
if (storedModelInfo && storedModelInfo.modelName) {
|
|
129
|
+
modelName = storedModelInfo.modelName;
|
|
130
|
+
console.log(`Using stored model from database: ${modelName}`);
|
|
131
|
+
}
|
|
132
|
+
else if (this.config.modelName) {
|
|
133
|
+
console.log(`No stored model found, using configured model: ${modelName}`);
|
|
134
|
+
// Store the model info for future use
|
|
135
|
+
const modelDefaults = getModelDefaults(modelName);
|
|
136
|
+
await setStoredModelInfo(this.database, modelName, modelDefaults.dimensions);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
// Use default model from config
|
|
140
|
+
modelName = config.embedding_model;
|
|
141
|
+
console.log(`Using default model: ${modelName}`);
|
|
142
|
+
const modelDefaults = getModelDefaults(modelName);
|
|
143
|
+
await setStoredModelInfo(this.database, modelName, modelDefaults.dimensions);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
console.warn(`Failed to read stored model info: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
148
|
+
// Fall back to configured or default model
|
|
149
|
+
if (!modelName) {
|
|
150
|
+
modelName = config.embedding_model;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
console.log(`Loading embedding model: ${modelName}...`);
|
|
154
|
+
this.embedder = await initializeEmbeddingEngine(modelName, this.config.batchSize);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Initialize index manager with model compatibility validation
|
|
158
|
+
*/
|
|
159
|
+
async initializeIndexManager() {
|
|
160
|
+
if (this.indexManager) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
if (!this.database || !this.embedder) {
|
|
164
|
+
throw new Error('Database and embedder must be initialized before index manager');
|
|
165
|
+
}
|
|
166
|
+
console.log('Initializing index manager...');
|
|
167
|
+
// Get model info for index manager initialization
|
|
168
|
+
const storedModelInfo = await getStoredModelInfo(this.database);
|
|
169
|
+
const modelName = storedModelInfo?.modelName || this.embedder.getModelName();
|
|
170
|
+
const dimensions = storedModelInfo?.dimensions || getModelDefaults(modelName).dimensions;
|
|
171
|
+
this.indexManager = new IndexManager(this.config.indexPath, this.config.dbPath, dimensions, modelName);
|
|
172
|
+
await this.indexManager.initialize(this.config.skipModelCheck);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Get initialized resources
|
|
176
|
+
* @throws Error if resources are not initialized
|
|
177
|
+
*/
|
|
178
|
+
getResources() {
|
|
179
|
+
if (!this.isInitialized || !this.database || !this.indexManager || !this.embedder) {
|
|
180
|
+
throw new Error('Resources not properly initialized');
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
database: this.database,
|
|
184
|
+
indexManager: this.indexManager,
|
|
185
|
+
embedder: this.embedder
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Get database connection (lazy initialization)
|
|
190
|
+
*/
|
|
191
|
+
async getDatabase() {
|
|
192
|
+
if (!this.database) {
|
|
193
|
+
await this.initialize();
|
|
194
|
+
}
|
|
195
|
+
return this.database;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Get index manager (lazy initialization)
|
|
199
|
+
*/
|
|
200
|
+
async getIndexManager() {
|
|
201
|
+
if (!this.indexManager) {
|
|
202
|
+
await this.initialize();
|
|
203
|
+
}
|
|
204
|
+
return this.indexManager;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Get embedder (lazy initialization)
|
|
208
|
+
*/
|
|
209
|
+
async getEmbedder() {
|
|
210
|
+
if (!this.embedder) {
|
|
211
|
+
await this.initialize();
|
|
212
|
+
}
|
|
213
|
+
return this.embedder;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Check if resources are initialized
|
|
217
|
+
*/
|
|
218
|
+
isResourcesInitialized() {
|
|
219
|
+
return this.isInitialized;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Validate that required files exist for search operations
|
|
223
|
+
* @throws ResourceError with user-friendly message if files are missing
|
|
224
|
+
*/
|
|
225
|
+
async validateSearchFiles() {
|
|
226
|
+
if (!existsSync(this.config.dbPath)) {
|
|
227
|
+
throw ErrorFactory.createResourceError(new Error(`Database file not found: ${this.config.dbPath}`), 'missing_database');
|
|
228
|
+
}
|
|
229
|
+
if (!existsSync(this.config.indexPath)) {
|
|
230
|
+
throw ErrorFactory.createResourceError(new Error(`Vector index file not found: ${this.config.indexPath}`), 'missing_index');
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Set up automatic cleanup handlers
|
|
235
|
+
* Requirements: 5.5 - Automatic cleanup on process exit
|
|
236
|
+
*/
|
|
237
|
+
setupCleanupHandlers() {
|
|
238
|
+
if (ResourceManager.cleanupHandlersSet) {
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
ResourceManager.cleanupHandlersSet = true;
|
|
242
|
+
const cleanupAll = async () => {
|
|
243
|
+
const instances = Array.from(ResourceManager.instances.values());
|
|
244
|
+
await Promise.all(instances.map(instance => instance.cleanup()));
|
|
245
|
+
};
|
|
246
|
+
// Handle various exit scenarios
|
|
247
|
+
process.on('exit', () => {
|
|
248
|
+
// Synchronous cleanup for exit event
|
|
249
|
+
for (const instance of ResourceManager.instances.values()) {
|
|
250
|
+
try {
|
|
251
|
+
instance.performSyncCleanup();
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
// Silent cleanup on exit
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
process.on('SIGINT', async () => {
|
|
259
|
+
await cleanupAll();
|
|
260
|
+
process.exit(0);
|
|
261
|
+
});
|
|
262
|
+
process.on('SIGTERM', async () => {
|
|
263
|
+
await cleanupAll();
|
|
264
|
+
process.exit(0);
|
|
265
|
+
});
|
|
266
|
+
process.on('uncaughtException', async (error) => {
|
|
267
|
+
console.error('Uncaught exception:', error);
|
|
268
|
+
await cleanupAll();
|
|
269
|
+
process.exit(1);
|
|
270
|
+
});
|
|
271
|
+
process.on('unhandledRejection', async (reason) => {
|
|
272
|
+
console.error('Unhandled rejection:', reason);
|
|
273
|
+
await cleanupAll();
|
|
274
|
+
process.exit(1);
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Synchronous cleanup for process exit handlers
|
|
279
|
+
*/
|
|
280
|
+
performSyncCleanup() {
|
|
281
|
+
try {
|
|
282
|
+
if (this.database) {
|
|
283
|
+
// Note: Synchronous close is not available in sqlite3,
|
|
284
|
+
// but we set to null to prevent further use
|
|
285
|
+
this.database = null;
|
|
286
|
+
}
|
|
287
|
+
this.indexManager = null;
|
|
288
|
+
this.embedder = null;
|
|
289
|
+
this.isInitialized = false;
|
|
290
|
+
}
|
|
291
|
+
catch (error) {
|
|
292
|
+
// Silent cleanup
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Clean up all resources with proper error handling
|
|
297
|
+
* Requirements: 5.5 - Proper resource disposal and error handling during cleanup
|
|
298
|
+
*/
|
|
299
|
+
async cleanup() {
|
|
300
|
+
const errors = [];
|
|
301
|
+
// Clean up database connection
|
|
302
|
+
if (this.database) {
|
|
303
|
+
try {
|
|
304
|
+
await this.database.close();
|
|
305
|
+
console.log('Database connection closed successfully');
|
|
306
|
+
}
|
|
307
|
+
catch (error) {
|
|
308
|
+
const errorMsg = `Failed to close database: ${error instanceof Error ? error.message : String(error)}`;
|
|
309
|
+
errors.push(errorMsg);
|
|
310
|
+
console.error(errorMsg);
|
|
311
|
+
}
|
|
312
|
+
finally {
|
|
313
|
+
this.database = null;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
// Clean up index manager
|
|
317
|
+
if (this.indexManager) {
|
|
318
|
+
try {
|
|
319
|
+
await this.indexManager.close();
|
|
320
|
+
console.log('Index manager closed successfully');
|
|
321
|
+
}
|
|
322
|
+
catch (error) {
|
|
323
|
+
const errorMsg = `Failed to close index manager: ${error instanceof Error ? error.message : String(error)}`;
|
|
324
|
+
errors.push(errorMsg);
|
|
325
|
+
console.error(errorMsg);
|
|
326
|
+
}
|
|
327
|
+
finally {
|
|
328
|
+
this.indexManager = null;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
// Clean up embedder (no explicit cleanup needed, just nullify reference)
|
|
332
|
+
if (this.embedder) {
|
|
333
|
+
this.embedder = null;
|
|
334
|
+
console.log('Embedder reference cleared');
|
|
335
|
+
}
|
|
336
|
+
// Reset state
|
|
337
|
+
this.isInitialized = false;
|
|
338
|
+
this.initializationPromise = null;
|
|
339
|
+
// Remove from instances map
|
|
340
|
+
ResourceManager.instances.delete(this.resourceKey);
|
|
341
|
+
// Log cleanup completion
|
|
342
|
+
if (errors.length === 0) {
|
|
343
|
+
console.log('Resource cleanup completed successfully');
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
console.warn(`Resource cleanup completed with ${errors.length} error(s):`);
|
|
347
|
+
errors.forEach(error => console.warn(` - ${error}`));
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Clean up all instances (for testing or shutdown)
|
|
352
|
+
* Requirements: 5.5 - Ensure resources are properly disposed when no longer needed
|
|
353
|
+
*/
|
|
354
|
+
static async cleanupAll() {
|
|
355
|
+
const instances = Array.from(ResourceManager.instances.values());
|
|
356
|
+
if (instances.length === 0) {
|
|
357
|
+
console.log('No resource instances to clean up');
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
console.log(`Cleaning up ${instances.length} resource instance(s)...`);
|
|
361
|
+
const cleanupPromises = instances.map(async (instance, index) => {
|
|
362
|
+
try {
|
|
363
|
+
await instance.cleanup();
|
|
364
|
+
console.log(`Instance ${index + 1}/${instances.length} cleaned up successfully`);
|
|
365
|
+
}
|
|
366
|
+
catch (error) {
|
|
367
|
+
console.error(`Failed to cleanup instance ${index + 1}/${instances.length}:`, error instanceof Error ? error.message : String(error));
|
|
368
|
+
}
|
|
369
|
+
});
|
|
370
|
+
await Promise.allSettled(cleanupPromises);
|
|
371
|
+
ResourceManager.instances.clear();
|
|
372
|
+
console.log('All resource instances cleanup completed');
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Get the number of active resource instances
|
|
376
|
+
*/
|
|
377
|
+
static getActiveInstanceCount() {
|
|
378
|
+
return ResourceManager.instances.size;
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Check if a specific resource configuration is already managed
|
|
382
|
+
*/
|
|
383
|
+
static hasInstance(config) {
|
|
384
|
+
const resolvedConfig = ResourceManager.resolveConfig(config);
|
|
385
|
+
const key = `${resolvedConfig.dbPath}:${resolvedConfig.indexPath}:${resolvedConfig.modelName}`;
|
|
386
|
+
return ResourceManager.instances.has(key);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
//# sourceMappingURL=resource-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-manager.js","sourceRoot":"","sources":["../src/resource-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-standalone.d.ts","sourceRoot":"","sources":["../src/search-standalone.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Standalone search script for direct node execution
|
|
4
|
+
* Usage: node search.js <query> [--top-k <number>] [--rerank|--no-rerank]
|
|
5
|
+
*/
|
|
6
|
+
import { runSearch } from './cli/search.js';
|
|
7
|
+
import { EXIT_CODES, ConfigurationError } from './config.js';
|
|
8
|
+
function parseArgs() {
|
|
9
|
+
const args = process.argv.slice(2);
|
|
10
|
+
if (args.length === 0) {
|
|
11
|
+
console.error('RAG-lite TS Document Search');
|
|
12
|
+
console.error('');
|
|
13
|
+
console.error('Usage: node search.js <query> [options]');
|
|
14
|
+
console.error('');
|
|
15
|
+
console.error('Arguments:');
|
|
16
|
+
console.error(' <query> Search query (wrap in quotes if it contains spaces)');
|
|
17
|
+
console.error('');
|
|
18
|
+
console.error('Options:');
|
|
19
|
+
console.error(' --top-k <number> Number of results to return (default: 10, max: 100)');
|
|
20
|
+
console.error(' --rerank Enable reranking for better results');
|
|
21
|
+
console.error(' --no-rerank Disable reranking');
|
|
22
|
+
console.error('');
|
|
23
|
+
console.error('Examples:');
|
|
24
|
+
console.error(' node search.js "machine learning"');
|
|
25
|
+
console.error(' node search.js "API documentation" --top-k 10');
|
|
26
|
+
console.error(' node search.js "tutorial" --rerank');
|
|
27
|
+
console.error(' node search.js "how to install" --top-k 20 --rerank');
|
|
28
|
+
console.error('');
|
|
29
|
+
console.error('Note: Make sure you have ingested documents first using:');
|
|
30
|
+
console.error(' node indexer.js <path>');
|
|
31
|
+
process.exit(EXIT_CODES.INVALID_ARGUMENTS);
|
|
32
|
+
}
|
|
33
|
+
const queryParts = [];
|
|
34
|
+
const options = {};
|
|
35
|
+
for (let i = 0; i < args.length; i++) {
|
|
36
|
+
const arg = args[i];
|
|
37
|
+
if (arg === '--top-k') {
|
|
38
|
+
const nextArg = args[i + 1];
|
|
39
|
+
if (!nextArg) {
|
|
40
|
+
console.error('Error: --top-k requires a numeric value');
|
|
41
|
+
console.error('');
|
|
42
|
+
console.error('Examples:');
|
|
43
|
+
console.error(' --top-k 5 # Return 5 results');
|
|
44
|
+
console.error(' --top-k 20 # Return 20 results');
|
|
45
|
+
process.exit(EXIT_CODES.INVALID_ARGUMENTS);
|
|
46
|
+
}
|
|
47
|
+
const topK = parseInt(nextArg, 10);
|
|
48
|
+
if (isNaN(topK) || topK <= 0) {
|
|
49
|
+
console.error('Error: --top-k must be a positive number');
|
|
50
|
+
console.error('');
|
|
51
|
+
console.error('Examples:');
|
|
52
|
+
console.error(' --top-k 5 # Return 5 results');
|
|
53
|
+
console.error(' --top-k 20 # Return 20 results');
|
|
54
|
+
process.exit(EXIT_CODES.INVALID_ARGUMENTS);
|
|
55
|
+
}
|
|
56
|
+
if (topK > 100) {
|
|
57
|
+
console.warn(`Warning: Large --top-k value (${topK}) may impact performance. Consider using a smaller value.`);
|
|
58
|
+
}
|
|
59
|
+
options['top-k'] = topK;
|
|
60
|
+
i++; // Skip next argument
|
|
61
|
+
}
|
|
62
|
+
else if (arg === '--rerank') {
|
|
63
|
+
options.rerank = true;
|
|
64
|
+
}
|
|
65
|
+
else if (arg === '--no-rerank') {
|
|
66
|
+
options.rerank = false;
|
|
67
|
+
}
|
|
68
|
+
else if (arg === '--help' || arg === '-h') {
|
|
69
|
+
// Re-show help and exit
|
|
70
|
+
parseArgs();
|
|
71
|
+
}
|
|
72
|
+
else if (arg.startsWith('--')) {
|
|
73
|
+
console.error(`Error: Unknown option '${arg}'`);
|
|
74
|
+
console.error('');
|
|
75
|
+
console.error('Available options:');
|
|
76
|
+
console.error(' --top-k <number> Number of results to return');
|
|
77
|
+
console.error(' --rerank Enable reranking');
|
|
78
|
+
console.error(' --no-rerank Disable reranking');
|
|
79
|
+
console.error(' --help, -h Show this help');
|
|
80
|
+
process.exit(EXIT_CODES.INVALID_ARGUMENTS);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
queryParts.push(arg);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const query = queryParts.join(' ');
|
|
87
|
+
if (!query.trim()) {
|
|
88
|
+
console.error('Error: Query cannot be empty');
|
|
89
|
+
console.error('');
|
|
90
|
+
console.error('Please provide a search query:');
|
|
91
|
+
console.error(' node search.js "your search terms"');
|
|
92
|
+
process.exit(EXIT_CODES.INVALID_ARGUMENTS);
|
|
93
|
+
}
|
|
94
|
+
if (query.trim().length > 500) {
|
|
95
|
+
console.error('Error: Query is too long (maximum 500 characters)');
|
|
96
|
+
console.error('');
|
|
97
|
+
console.error('Please use a shorter, more specific query.');
|
|
98
|
+
process.exit(EXIT_CODES.INVALID_ARGUMENTS);
|
|
99
|
+
}
|
|
100
|
+
return { query, options };
|
|
101
|
+
}
|
|
102
|
+
async function main() {
|
|
103
|
+
const { query, options } = parseArgs();
|
|
104
|
+
await runSearch(query, options);
|
|
105
|
+
}
|
|
106
|
+
main().catch((error) => {
|
|
107
|
+
if (error instanceof ConfigurationError) {
|
|
108
|
+
console.error('Configuration Error:');
|
|
109
|
+
console.error(error.message);
|
|
110
|
+
process.exit(error.exitCode);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
console.error('Fatal Error:', error instanceof Error ? error.message : String(error));
|
|
114
|
+
process.exit(EXIT_CODES.GENERAL_ERROR);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
//# sourceMappingURL=search-standalone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-standalone.js","sourceRoot":"","sources":["../src/search-standalone.ts"],"names":[],"mappings":"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"}
|
package/dist/search.d.ts
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { EmbeddingEngine } from './embedder.js';
|
|
2
|
+
import { IndexManager } from './index-manager.js';
|
|
3
|
+
import { DatabaseConnection } from './db.js';
|
|
4
|
+
import type { SearchResult, SearchOptions } from './types.js';
|
|
5
|
+
/**
|
|
6
|
+
* User-friendly error class with actionable suggestions
|
|
7
|
+
*/
|
|
8
|
+
export declare class SearchError extends Error {
|
|
9
|
+
code: string;
|
|
10
|
+
suggestions: string[];
|
|
11
|
+
constructor(message: string, code: string, suggestions: string[]);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Search engine that provides semantic search capabilities
|
|
15
|
+
* Implements the core search pipeline: query embedding → vector search → metadata retrieval → optional reranking
|
|
16
|
+
* Supports concurrent read operations for multiple simultaneous queries
|
|
17
|
+
*/
|
|
18
|
+
export declare class SearchEngine {
|
|
19
|
+
private static instances;
|
|
20
|
+
private static cleanupHandlersSet;
|
|
21
|
+
private embedder;
|
|
22
|
+
private indexManager;
|
|
23
|
+
private dbConnection;
|
|
24
|
+
private reranker;
|
|
25
|
+
private isInitialized;
|
|
26
|
+
private indexPath;
|
|
27
|
+
private dbPath;
|
|
28
|
+
private enableReranking;
|
|
29
|
+
/**
|
|
30
|
+
* Creates a new SearchEngine with simplified constructor
|
|
31
|
+
* Search engine is ready to use immediately without requiring initialization calls (Requirement 3.5)
|
|
32
|
+
* @param indexPath - Path to vector index file (defaults to './vector-index.bin')
|
|
33
|
+
* @param dbPath - Path to database file (defaults to './db.sqlite')
|
|
34
|
+
*/
|
|
35
|
+
constructor(indexPath?: string, dbPath?: string);
|
|
36
|
+
/**
|
|
37
|
+
* Legacy constructor for backward compatibility
|
|
38
|
+
* @deprecated Use the simple constructor new SearchEngine(indexPath?, dbPath?) instead
|
|
39
|
+
*/
|
|
40
|
+
static createWithComponents(embedder: EmbeddingEngine, indexManager: IndexManager, dbConnection: DatabaseConnection, enableReranking?: boolean): SearchEngine;
|
|
41
|
+
/**
|
|
42
|
+
* Automatically initialize resources on first use with user-friendly error handling
|
|
43
|
+
* Implements lazy initialization as required by Requirements 3.5, 4.3, 5.1, 5.2
|
|
44
|
+
*/
|
|
45
|
+
private ensureInitialized;
|
|
46
|
+
/**
|
|
47
|
+
* Create user-friendly error messages with actionable suggestions
|
|
48
|
+
* Implements requirement 5.3: Clear, actionable error messages with specific next steps
|
|
49
|
+
*/
|
|
50
|
+
private createUserFriendlyError;
|
|
51
|
+
/**
|
|
52
|
+
* Initialize the search engine (public method for backward compatibility)
|
|
53
|
+
* Sets up database, index manager, and embedding engine
|
|
54
|
+
*/
|
|
55
|
+
initialize(): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Perform semantic search on the indexed documents (matches README API)
|
|
58
|
+
* Automatically initializes resources on first use (Requirements 4.1, 4.2, 4.4, 4.5)
|
|
59
|
+
* Supports concurrent read operations for multiple simultaneous queries
|
|
60
|
+
* @param query - Search query string
|
|
61
|
+
* @param options - Search options including top_k and rerank settings
|
|
62
|
+
* @returns Promise resolving to array of search results
|
|
63
|
+
*/
|
|
64
|
+
search(query: string, options?: SearchOptions): Promise<SearchResult[]>;
|
|
65
|
+
/**
|
|
66
|
+
* Format search results with proper structure
|
|
67
|
+
* @param chunks - Database chunks with metadata
|
|
68
|
+
* @param distances - Similarity distances from vector search
|
|
69
|
+
* @param embeddingIds - Embedding IDs in search result order
|
|
70
|
+
* @returns Formatted search results
|
|
71
|
+
*/
|
|
72
|
+
private formatSearchResults;
|
|
73
|
+
/**
|
|
74
|
+
* Get search engine statistics
|
|
75
|
+
* @returns Object with current search engine stats
|
|
76
|
+
*/
|
|
77
|
+
getStats(): Promise<{
|
|
78
|
+
totalChunks: number;
|
|
79
|
+
indexSize: number;
|
|
80
|
+
rerankingEnabled: boolean;
|
|
81
|
+
isInitialized: boolean;
|
|
82
|
+
}>;
|
|
83
|
+
/**
|
|
84
|
+
* Set up automatic cleanup on process exit (Requirement 5.5)
|
|
85
|
+
*/
|
|
86
|
+
private setupAutomaticCleanup;
|
|
87
|
+
/**
|
|
88
|
+
* Clean up resources (Requirement 5.5)
|
|
89
|
+
*/
|
|
90
|
+
cleanup(): Promise<void>;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAA6B,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAA6D,MAAM,SAAS,CAAC;AAExG,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAK9D;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;IAG3B,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,MAAM,EAAE;gBAF5B,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EAAE;CAK/B;AAyBD;;;;GAIG;AACH,qBAAa,YAAY;IAEvB,OAAO,CAAC,MAAM,CAAC,SAAS,CAA2B;IACnD,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAS;IAE1C,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,YAAY,CAAmC;IACvD,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAAkB;IAEzC;;;;;OAKG;gBACS,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAmB/C;;;OAGG;IACH,MAAM,CAAC,oBAAoB,CACzB,QAAQ,EAAE,eAAe,EACzB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,kBAAkB,EAChC,eAAe,GAAE,OAAe,GAC/B,YAAY;IAgBf;;;OAGG;YACW,iBAAiB;IA+F/B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAmH/B;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;;;;;;OAOG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAiFjF;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAsC3B;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC;IAmBF;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA0D7B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAsB/B"}
|