rag-lite-ts 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +94 -65
- package/dist/cli/indexer.d.ts.map +1 -1
- package/dist/cli/indexer.js +78 -50
- package/dist/cli/indexer.js.map +1 -1
- package/dist/cli/search.d.ts.map +1 -1
- package/dist/cli/search.js +13 -30
- package/dist/cli/search.js.map +1 -1
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +34 -73
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +50 -255
- package/dist/config.js.map +1 -1
- package/dist/core/adapters.d.ts +93 -0
- package/dist/core/adapters.d.ts.map +1 -0
- package/dist/core/adapters.js +139 -0
- package/dist/core/adapters.js.map +1 -0
- package/dist/core/chunker.d.ts +117 -0
- package/dist/core/chunker.d.ts.map +1 -0
- package/dist/core/chunker.js +73 -0
- package/dist/core/chunker.js.map +1 -0
- package/dist/core/config.d.ts +102 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +240 -0
- package/dist/core/config.js.map +1 -0
- package/dist/{db.d.ts → core/db.d.ts} +25 -9
- package/dist/core/db.d.ts.map +1 -0
- package/dist/{db.js → core/db.js} +86 -16
- package/dist/core/db.js.map +1 -0
- package/dist/{error-handler.d.ts → core/error-handler.d.ts} +23 -2
- package/dist/core/error-handler.d.ts.map +1 -0
- package/dist/{error-handler.js → core/error-handler.js} +51 -8
- package/dist/core/error-handler.js.map +1 -0
- package/dist/core/index.d.ts +57 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +66 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/ingestion.d.ts +143 -0
- package/dist/core/ingestion.d.ts.map +1 -0
- package/dist/core/ingestion.js +347 -0
- package/dist/core/ingestion.js.map +1 -0
- package/dist/core/interfaces.d.ts +408 -0
- package/dist/core/interfaces.d.ts.map +1 -0
- package/dist/core/interfaces.js +106 -0
- package/dist/core/interfaces.js.map +1 -0
- package/dist/{path-manager.d.ts → core/path-manager.d.ts} +5 -0
- package/dist/core/path-manager.d.ts.map +1 -0
- package/dist/{path-manager.js → core/path-manager.js} +5 -0
- package/dist/core/path-manager.js.map +1 -0
- package/dist/core/search-example.d.ts +25 -0
- package/dist/core/search-example.d.ts.map +1 -0
- package/dist/core/search-example.js +138 -0
- package/dist/core/search-example.js.map +1 -0
- package/dist/core/search-pipeline-example.d.ts +21 -0
- package/dist/core/search-pipeline-example.d.ts.map +1 -0
- package/dist/core/search-pipeline-example.js +188 -0
- package/dist/core/search-pipeline-example.js.map +1 -0
- package/dist/core/search-pipeline.d.ts +111 -0
- package/dist/core/search-pipeline.d.ts.map +1 -0
- package/dist/core/search-pipeline.js +287 -0
- package/dist/core/search-pipeline.js.map +1 -0
- package/dist/core/search.d.ts +104 -0
- package/dist/core/search.d.ts.map +1 -0
- package/dist/core/search.js +218 -0
- package/dist/core/search.js.map +1 -0
- package/dist/core/types.d.ts +63 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +6 -0
- package/dist/core/types.js.map +1 -0
- package/dist/{vector-index.d.ts → core/vector-index.d.ts} +4 -0
- package/dist/core/vector-index.d.ts.map +1 -0
- package/dist/{vector-index.js → core/vector-index.js} +19 -0
- package/dist/core/vector-index.js.map +1 -0
- package/dist/dom-polyfills.d.ts +6 -0
- package/dist/dom-polyfills.d.ts.map +1 -0
- package/dist/dom-polyfills.js +40 -0
- package/dist/dom-polyfills.js.map +1 -0
- package/dist/examples/clean-api-examples.d.ts +44 -0
- package/dist/examples/clean-api-examples.d.ts.map +1 -0
- package/dist/examples/clean-api-examples.js +206 -0
- package/dist/examples/clean-api-examples.js.map +1 -0
- package/dist/factories/index.d.ts +43 -0
- package/dist/factories/index.d.ts.map +1 -0
- package/dist/factories/index.js +44 -0
- package/dist/factories/index.js.map +1 -0
- package/dist/factories/text-factory.d.ts +466 -0
- package/dist/factories/text-factory.d.ts.map +1 -0
- package/dist/factories/text-factory.js +719 -0
- package/dist/factories/text-factory.js.map +1 -0
- package/dist/file-processor.d.ts +2 -2
- package/dist/file-processor.d.ts.map +1 -1
- package/dist/file-processor.js +3 -3
- package/dist/file-processor.js.map +1 -1
- package/dist/index-manager.d.ts +3 -2
- package/dist/index-manager.d.ts.map +1 -1
- package/dist/index-manager.js +13 -11
- package/dist/index-manager.js.map +1 -1
- package/dist/index.d.ts +63 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +91 -16
- package/dist/index.js.map +1 -1
- package/dist/indexer.js +1 -1
- package/dist/indexer.js.map +1 -1
- package/dist/ingestion.d.ts +30 -156
- package/dist/ingestion.d.ts.map +1 -1
- package/dist/ingestion.js +58 -675
- package/dist/ingestion.js.map +1 -1
- package/dist/mcp-server.js +86 -55
- package/dist/mcp-server.js.map +1 -1
- package/dist/preprocess.js +1 -1
- package/dist/preprocess.js.map +1 -1
- package/dist/search-standalone.js +1 -1
- package/dist/search-standalone.js.map +1 -1
- package/dist/search.d.ts +32 -76
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +80 -428
- package/dist/search.js.map +1 -1
- package/dist/text/chunker.d.ts +32 -0
- package/dist/text/chunker.d.ts.map +1 -0
- package/dist/{chunker.js → text/chunker.js} +98 -75
- package/dist/text/chunker.js.map +1 -0
- package/dist/{embedder.d.ts → text/embedder.d.ts} +22 -1
- package/dist/text/embedder.d.ts.map +1 -0
- package/dist/{embedder.js → text/embedder.js} +71 -4
- package/dist/text/embedder.js.map +1 -0
- package/dist/text/index.d.ts +7 -0
- package/dist/text/index.d.ts.map +1 -0
- package/dist/text/index.js +8 -0
- package/dist/text/index.js.map +1 -0
- package/dist/text/preprocessors/index.d.ts +17 -0
- package/dist/text/preprocessors/index.d.ts.map +1 -0
- package/dist/text/preprocessors/index.js +38 -0
- package/dist/text/preprocessors/index.js.map +1 -0
- package/dist/text/preprocessors/mdx.d.ts +25 -0
- package/dist/text/preprocessors/mdx.d.ts.map +1 -0
- package/dist/text/preprocessors/mdx.js +101 -0
- package/dist/text/preprocessors/mdx.js.map +1 -0
- package/dist/text/preprocessors/mermaid.d.ts +68 -0
- package/dist/text/preprocessors/mermaid.d.ts.map +1 -0
- package/dist/text/preprocessors/mermaid.js +330 -0
- package/dist/text/preprocessors/mermaid.js.map +1 -0
- package/dist/text/preprocessors/registry.d.ts +56 -0
- package/dist/text/preprocessors/registry.d.ts.map +1 -0
- package/dist/text/preprocessors/registry.js +180 -0
- package/dist/text/preprocessors/registry.js.map +1 -0
- package/dist/text/reranker.d.ts +60 -0
- package/dist/text/reranker.d.ts.map +1 -0
- package/dist/{reranker.js → text/reranker.js} +134 -19
- package/dist/text/reranker.js.map +1 -0
- package/dist/{tokenizer.d.ts → text/tokenizer.d.ts} +1 -0
- package/dist/text/tokenizer.d.ts.map +1 -0
- package/dist/{tokenizer.js → text/tokenizer.js} +7 -2
- package/dist/text/tokenizer.js.map +1 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/chunker.d.ts +0 -47
- package/dist/chunker.d.ts.map +0 -1
- package/dist/chunker.js.map +0 -1
- package/dist/db.d.ts.map +0 -1
- package/dist/db.js.map +0 -1
- package/dist/embedder.d.ts.map +0 -1
- package/dist/embedder.js.map +0 -1
- package/dist/error-handler.d.ts.map +0 -1
- package/dist/error-handler.js.map +0 -1
- package/dist/path-manager.d.ts.map +0 -1
- package/dist/path-manager.js.map +0 -1
- package/dist/reranker.d.ts +0 -40
- package/dist/reranker.d.ts.map +0 -1
- package/dist/reranker.js.map +0 -1
- package/dist/resource-manager-demo.d.ts +0 -7
- package/dist/resource-manager-demo.d.ts.map +0 -1
- package/dist/resource-manager-demo.js +0 -52
- package/dist/resource-manager-demo.js.map +0 -1
- package/dist/resource-manager.d.ts +0 -129
- package/dist/resource-manager.d.ts.map +0 -1
- package/dist/resource-manager.js +0 -389
- package/dist/resource-manager.js.map +0 -1
- package/dist/tokenizer.d.ts.map +0 -1
- package/dist/tokenizer.js.map +0 -1
- package/dist/vector-index.d.ts.map +0 -1
- package/dist/vector-index.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* CORE MODULE — Shared between text-only (rag-lite-ts) and future multimodal (rag-lite-mm)
|
|
3
|
+
* Model-agnostic. No transformer or modality-specific logic.
|
|
4
4
|
*/
|
|
5
5
|
import { EXIT_CODES } from './config.js';
|
|
6
6
|
/**
|
|
@@ -45,15 +45,48 @@ export class CategorizedError extends Error {
|
|
|
45
45
|
this.name = 'CategorizedError';
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Default error context implementation - provides generic guidance
|
|
50
|
+
*/
|
|
51
|
+
class DefaultErrorContext {
|
|
52
|
+
getErrorMessage(error, context) {
|
|
53
|
+
return error.message;
|
|
54
|
+
}
|
|
55
|
+
getSuggestions(error, context) {
|
|
56
|
+
return [
|
|
57
|
+
'Check the error message above for specific details',
|
|
58
|
+
'Try running the command again',
|
|
59
|
+
'If the problem persists, please report it as a bug'
|
|
60
|
+
];
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Global error context - can be injected by implementations
|
|
64
|
+
let globalErrorContext = new DefaultErrorContext();
|
|
65
|
+
/**
|
|
66
|
+
* Set the global error context for dependency injection
|
|
67
|
+
* @param errorContext - Implementation-specific error context
|
|
68
|
+
*/
|
|
69
|
+
export function setErrorContext(errorContext) {
|
|
70
|
+
globalErrorContext = errorContext;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Get the current error context
|
|
74
|
+
* @returns Current error context
|
|
75
|
+
*/
|
|
76
|
+
export function getErrorContext() {
|
|
77
|
+
return globalErrorContext;
|
|
78
|
+
}
|
|
48
79
|
/**
|
|
49
80
|
* Handle errors with appropriate logging and exit behavior
|
|
81
|
+
* Supports dependency injection of implementation-specific error contexts
|
|
50
82
|
* @param error - Error to handle
|
|
51
83
|
* @param context - Context where error occurred
|
|
52
84
|
* @param options - Handling options
|
|
53
85
|
*/
|
|
54
86
|
export function handleError(error, context, options = {}) {
|
|
55
|
-
const { category = ErrorCategory.GENERAL, severity = ErrorSeverity.ERROR, exitCode = EXIT_CODES.GENERAL_ERROR, skipError = false, showStack = false } = options;
|
|
56
|
-
const
|
|
87
|
+
const { category = ErrorCategory.GENERAL, severity = ErrorSeverity.ERROR, exitCode = EXIT_CODES.GENERAL_ERROR, skipError = false, showStack = false, errorContext = globalErrorContext } = options;
|
|
88
|
+
const errorObj = error instanceof Error ? error : new Error(String(error));
|
|
89
|
+
const errorMessage = errorContext.getErrorMessage(errorObj, context);
|
|
57
90
|
const timestamp = new Date().toISOString();
|
|
58
91
|
// Format error message based on severity
|
|
59
92
|
const severityPrefix = severity === ErrorSeverity.FATAL ? '🚨' :
|
|
@@ -67,13 +100,13 @@ export function handleError(error, context, options = {}) {
|
|
|
67
100
|
console.log(logMessage);
|
|
68
101
|
}
|
|
69
102
|
// Show stack trace for debugging if requested
|
|
70
|
-
if (showStack &&
|
|
71
|
-
console.error('Stack trace:',
|
|
103
|
+
if (showStack && errorObj.stack) {
|
|
104
|
+
console.error('Stack trace:', errorObj.stack);
|
|
72
105
|
}
|
|
73
106
|
// Handle based on severity
|
|
74
107
|
if (severity === ErrorSeverity.FATAL) {
|
|
75
108
|
console.error('\nThe system cannot continue and will exit immediately.');
|
|
76
|
-
provideContextualGuidance(category, exitCode);
|
|
109
|
+
provideContextualGuidance(category, exitCode, errorObj, context, errorContext);
|
|
77
110
|
process.exit(exitCode);
|
|
78
111
|
}
|
|
79
112
|
else if (severity === ErrorSeverity.ERROR && !skipError) {
|
|
@@ -82,9 +115,19 @@ export function handleError(error, context, options = {}) {
|
|
|
82
115
|
}
|
|
83
116
|
/**
|
|
84
117
|
* Provide contextual guidance based on error category and exit code
|
|
118
|
+
* Uses dependency injection to get implementation-specific suggestions
|
|
85
119
|
*/
|
|
86
|
-
function provideContextualGuidance(category, exitCode) {
|
|
120
|
+
function provideContextualGuidance(category, exitCode, error, context, errorContext) {
|
|
87
121
|
console.error('\nTroubleshooting guidance:');
|
|
122
|
+
// Get implementation-specific suggestions first
|
|
123
|
+
const customSuggestions = errorContext.getSuggestions(error, context);
|
|
124
|
+
if (customSuggestions.length > 0) {
|
|
125
|
+
customSuggestions.forEach(suggestion => {
|
|
126
|
+
console.error(`- ${suggestion}`);
|
|
127
|
+
});
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
// Fallback to generic category-based guidance
|
|
88
131
|
switch (category) {
|
|
89
132
|
case ErrorCategory.CONFIGURATION:
|
|
90
133
|
console.error('- Check your configuration file for syntax errors');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../src/core/error-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CORE MODULE — Shared between text-only (rag-lite-ts) and future multimodal (rag-lite-mm)
|
|
3
|
+
* Model-agnostic. No transformer or modality-specific logic.
|
|
4
|
+
*
|
|
5
|
+
* This module provides the clean re-export surface for the core layer, enabling
|
|
6
|
+
* dependency injection patterns for different implementations (text-only, multimodal, etc.).
|
|
7
|
+
*
|
|
8
|
+
* DEPENDENCY INJECTION ARCHITECTURE:
|
|
9
|
+
*
|
|
10
|
+
* The core layer uses explicit dependency injection to maintain clean separation between
|
|
11
|
+
* model-agnostic logic and implementation-specific components:
|
|
12
|
+
*
|
|
13
|
+
* 1. Core Classes (SearchEngine, IngestionPipeline):
|
|
14
|
+
* - Accept injected functions (EmbedFunction, RerankFunction) in constructors
|
|
15
|
+
* - Coordinate model-agnostic operations (database, vector index, search pipeline)
|
|
16
|
+
* - No knowledge of specific embedding models or transformers
|
|
17
|
+
*
|
|
18
|
+
* 2. Dependency Injection Interfaces:
|
|
19
|
+
* - EmbedFunction: (query: string, contentType?: string) => Promise<EmbeddingResult>
|
|
20
|
+
* - RerankFunction: (query: string, results: SearchResult[], contentType?: string) => Promise<SearchResult[]>
|
|
21
|
+
* - Support different content types (text, image, etc.) and embedding dimensions
|
|
22
|
+
*
|
|
23
|
+
* 3. Usage Patterns:
|
|
24
|
+
*
|
|
25
|
+
* // Direct dependency injection (advanced users)
|
|
26
|
+
* const embedFn = await createTextEmbedder();
|
|
27
|
+
* const rerankFn = await createTextReranker();
|
|
28
|
+
* const indexManager = new IndexManager('./index.bin');
|
|
29
|
+
* const db = await openDatabase('./db.sqlite');
|
|
30
|
+
* const search = new SearchEngine(embedFn, indexManager, db, rerankFn);
|
|
31
|
+
*
|
|
32
|
+
* // Factory pattern (recommended for common use cases)
|
|
33
|
+
* const search = await TextSearchFactory.create('./index.bin', './db.sqlite');
|
|
34
|
+
*
|
|
35
|
+
* 4. Extension Points:
|
|
36
|
+
* - New implementations (multimodal, custom models) implement the same interfaces
|
|
37
|
+
* - Core classes remain unchanged when adding new modalities
|
|
38
|
+
* - Plugin architecture enabled through interface-based design
|
|
39
|
+
*
|
|
40
|
+
* 5. Benefits:
|
|
41
|
+
* - Clean separation of concerns
|
|
42
|
+
* - Testability through mock injection
|
|
43
|
+
* - Future extensibility without core changes
|
|
44
|
+
* - Support for different embedding dimensions and content types
|
|
45
|
+
*/
|
|
46
|
+
export { type ContentDocument, type ContentChunk, type Document, type Chunk, type EmbeddingResult, type SearchResult, type SearchOptions, } from './types.js';
|
|
47
|
+
export { type EmbedFunction, type RerankFunction, type EmbeddingQueryInterface, type RerankingInterface, type SearchEngineConfig, type ContentTypeStrategy, type ModelAgnosticInterface, type ExtendedEmbeddingInterface, type ExtendedRerankingInterface, type SearchPipelineInterface, type SearchDependencyFactory, InterfaceValidator } from './interfaces.js';
|
|
48
|
+
export * from './adapters.js';
|
|
49
|
+
export * from './config.js';
|
|
50
|
+
export { type DatabaseConnection, openDatabase, initializeSchema, insertDocument, insertChunk, upsertDocument, getChunksByEmbeddingIds, getModelVersion, setModelVersion, getStoredModelInfo, setStoredModelInfo } from './db.js';
|
|
51
|
+
export { type VectorIndexOptions, VectorIndex } from './vector-index.js';
|
|
52
|
+
export { type ChunkConfig, type GenericDocument, type GenericChunk, type ChunkingStrategy, ChunkingStrategyRegistry, DEFAULT_CHUNK_CONFIG, chunkingRegistry, chunkGenericDocument, registerTextChunkingStrategy } from './chunker.js';
|
|
53
|
+
export * from './search.js';
|
|
54
|
+
export * from './ingestion.js';
|
|
55
|
+
export * from './path-manager.js';
|
|
56
|
+
export * from './error-handler.js';
|
|
57
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAGH,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,KAAK,EACV,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,aAAa,GAEnB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAGzB,cAAc,eAAe,CAAC;AAG9B,cAAc,aAAa,CAAC;AAG5B,OAAO,EACL,KAAK,kBAAkB,EACvB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,KAAK,kBAAkB,EACvB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,4BAA4B,EAC7B,MAAM,cAAc,CAAC;AAGtB,cAAc,aAAa,CAAC;AAG5B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CORE MODULE — Shared between text-only (rag-lite-ts) and future multimodal (rag-lite-mm)
|
|
3
|
+
* Model-agnostic. No transformer or modality-specific logic.
|
|
4
|
+
*
|
|
5
|
+
* This module provides the clean re-export surface for the core layer, enabling
|
|
6
|
+
* dependency injection patterns for different implementations (text-only, multimodal, etc.).
|
|
7
|
+
*
|
|
8
|
+
* DEPENDENCY INJECTION ARCHITECTURE:
|
|
9
|
+
*
|
|
10
|
+
* The core layer uses explicit dependency injection to maintain clean separation between
|
|
11
|
+
* model-agnostic logic and implementation-specific components:
|
|
12
|
+
*
|
|
13
|
+
* 1. Core Classes (SearchEngine, IngestionPipeline):
|
|
14
|
+
* - Accept injected functions (EmbedFunction, RerankFunction) in constructors
|
|
15
|
+
* - Coordinate model-agnostic operations (database, vector index, search pipeline)
|
|
16
|
+
* - No knowledge of specific embedding models or transformers
|
|
17
|
+
*
|
|
18
|
+
* 2. Dependency Injection Interfaces:
|
|
19
|
+
* - EmbedFunction: (query: string, contentType?: string) => Promise<EmbeddingResult>
|
|
20
|
+
* - RerankFunction: (query: string, results: SearchResult[], contentType?: string) => Promise<SearchResult[]>
|
|
21
|
+
* - Support different content types (text, image, etc.) and embedding dimensions
|
|
22
|
+
*
|
|
23
|
+
* 3. Usage Patterns:
|
|
24
|
+
*
|
|
25
|
+
* // Direct dependency injection (advanced users)
|
|
26
|
+
* const embedFn = await createTextEmbedder();
|
|
27
|
+
* const rerankFn = await createTextReranker();
|
|
28
|
+
* const indexManager = new IndexManager('./index.bin');
|
|
29
|
+
* const db = await openDatabase('./db.sqlite');
|
|
30
|
+
* const search = new SearchEngine(embedFn, indexManager, db, rerankFn);
|
|
31
|
+
*
|
|
32
|
+
* // Factory pattern (recommended for common use cases)
|
|
33
|
+
* const search = await TextSearchFactory.create('./index.bin', './db.sqlite');
|
|
34
|
+
*
|
|
35
|
+
* 4. Extension Points:
|
|
36
|
+
* - New implementations (multimodal, custom models) implement the same interfaces
|
|
37
|
+
* - Core classes remain unchanged when adding new modalities
|
|
38
|
+
* - Plugin architecture enabled through interface-based design
|
|
39
|
+
*
|
|
40
|
+
* 5. Benefits:
|
|
41
|
+
* - Clean separation of concerns
|
|
42
|
+
* - Testability through mock injection
|
|
43
|
+
* - Future extensibility without core changes
|
|
44
|
+
* - Support for different embedding dimensions and content types
|
|
45
|
+
*/
|
|
46
|
+
// Dependency injection interfaces and utilities
|
|
47
|
+
export { InterfaceValidator } from './interfaces.js';
|
|
48
|
+
// Adapter utilities for converting implementations to dependency injection
|
|
49
|
+
export * from './adapters.js';
|
|
50
|
+
// Core configuration management - model-agnostic settings
|
|
51
|
+
export * from './config.js';
|
|
52
|
+
// Database operations - supports different content types through metadata
|
|
53
|
+
export { openDatabase, initializeSchema, insertDocument, insertChunk, upsertDocument, getChunksByEmbeddingIds, getModelVersion, setModelVersion, getStoredModelInfo, setStoredModelInfo } from './db.js';
|
|
54
|
+
// Vector index operations - works with any embedding dimensions
|
|
55
|
+
export { VectorIndex } from './vector-index.js';
|
|
56
|
+
// Generic chunking interfaces and strategies - supports text, image metadata, etc.
|
|
57
|
+
export { ChunkingStrategyRegistry, DEFAULT_CHUNK_CONFIG, chunkingRegistry, chunkGenericDocument, registerTextChunkingStrategy } from './chunker.js';
|
|
58
|
+
// Core search engine - uses dependency injection for embedding and reranking
|
|
59
|
+
export * from './search.js';
|
|
60
|
+
// Core ingestion pipeline - uses dependency injection for embedding
|
|
61
|
+
export * from './ingestion.js';
|
|
62
|
+
// Path management utilities - content-type agnostic
|
|
63
|
+
export * from './path-manager.js';
|
|
64
|
+
// Error handling framework - supports implementation-specific error contexts
|
|
65
|
+
export * from './error-handler.js';
|
|
66
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAcH,gDAAgD;AAChD,OAAO,EAYL,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAEzB,2EAA2E;AAC3E,cAAc,eAAe,CAAC;AAE9B,0DAA0D;AAC1D,cAAc,aAAa,CAAC;AAE5B,0EAA0E;AAC1E,OAAO,EAEL,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,gEAAgE;AAChE,OAAO,EAEL,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAE3B,mFAAmF;AACnF,OAAO,EAKL,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,4BAA4B,EAC7B,MAAM,cAAc,CAAC;AAEtB,6EAA6E;AAC7E,cAAc,aAAa,CAAC;AAE5B,oEAAoE;AACpE,cAAc,gBAAgB,CAAC;AAE/B,oDAAoD;AACpD,cAAc,mBAAmB,CAAC;AAElC,6EAA6E;AAC7E,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CORE MODULE — Shared between text-only (rag-lite-ts) and future multimodal (rag-lite-mm)
|
|
3
|
+
* Model-agnostic. No transformer or modality-specific logic.
|
|
4
|
+
*/
|
|
5
|
+
import { type FileProcessorOptions } from '../file-processor.js';
|
|
6
|
+
import { type ChunkConfig } from './chunker.js';
|
|
7
|
+
import { IndexManager } from '../index-manager.js';
|
|
8
|
+
import { type DatabaseConnection } from './db.js';
|
|
9
|
+
import type { EmbedFunction } from './interfaces.js';
|
|
10
|
+
/**
|
|
11
|
+
* Options for the ingestion pipeline
|
|
12
|
+
*/
|
|
13
|
+
export interface IngestionOptions {
|
|
14
|
+
/** File processing options */
|
|
15
|
+
fileOptions?: FileProcessorOptions;
|
|
16
|
+
/** Chunking configuration */
|
|
17
|
+
chunkConfig?: ChunkConfig;
|
|
18
|
+
/** Whether to force rebuild the index */
|
|
19
|
+
forceRebuild?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Result of the ingestion process
|
|
23
|
+
*/
|
|
24
|
+
export interface IngestionResult {
|
|
25
|
+
/** Total documents processed */
|
|
26
|
+
documentsProcessed: number;
|
|
27
|
+
/** Total chunks created */
|
|
28
|
+
chunksCreated: number;
|
|
29
|
+
/** Total embeddings generated */
|
|
30
|
+
embeddingsGenerated: number;
|
|
31
|
+
/** Number of documents that failed processing */
|
|
32
|
+
documentErrors: number;
|
|
33
|
+
/** Number of chunks that failed embedding */
|
|
34
|
+
embeddingErrors: number;
|
|
35
|
+
/** Processing time in milliseconds */
|
|
36
|
+
processingTimeMs: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Main ingestion pipeline class
|
|
40
|
+
* Coordinates the entire process from file discovery to vector storage
|
|
41
|
+
* Uses explicit dependency injection for clean architecture
|
|
42
|
+
*/
|
|
43
|
+
export declare class IngestionPipeline {
|
|
44
|
+
private embedFn;
|
|
45
|
+
private indexManager;
|
|
46
|
+
private db;
|
|
47
|
+
private defaultChunkConfig?;
|
|
48
|
+
private pathManager;
|
|
49
|
+
/**
|
|
50
|
+
* Creates a new IngestionPipeline with explicit dependency injection
|
|
51
|
+
*
|
|
52
|
+
* DEPENDENCY INJECTION PATTERN:
|
|
53
|
+
* This constructor requires all dependencies to be explicitly provided, enabling:
|
|
54
|
+
* - Clean separation between core ingestion logic and implementation-specific components
|
|
55
|
+
* - Support for different embedding models and content types
|
|
56
|
+
* - Testability through mock injection
|
|
57
|
+
* - Future extensibility for multimodal content processing
|
|
58
|
+
*
|
|
59
|
+
* @param embedFn - Function to embed document chunks into vectors
|
|
60
|
+
* - Signature: (query: string, contentType?: string) => Promise<EmbeddingResult>
|
|
61
|
+
* - Must handle chunk text and return consistent embedding format
|
|
62
|
+
* - Examples:
|
|
63
|
+
* - Text: const embedFn = (text) => textEmbedder.embedSingle(text)
|
|
64
|
+
* - Multimodal: const embedFn = (content, type) => type === 'image' ? clipEmbedder.embedImage(content) : clipEmbedder.embedText(content)
|
|
65
|
+
* - Custom: const embedFn = (text) => customModel.embed(text)
|
|
66
|
+
*
|
|
67
|
+
* @param indexManager - Vector index manager for storing embeddings
|
|
68
|
+
* - Handles vector storage and indexing operations
|
|
69
|
+
* - Must support the embedding dimensions produced by embedFn
|
|
70
|
+
* - Example: new IndexManager('./index.bin')
|
|
71
|
+
*
|
|
72
|
+
* @param db - Database connection for metadata storage
|
|
73
|
+
* - Stores document and chunk metadata with content type support
|
|
74
|
+
* - Supports different content types through metadata fields
|
|
75
|
+
* - Example: await openDatabase('./db.sqlite')
|
|
76
|
+
*
|
|
77
|
+
* USAGE EXAMPLES:
|
|
78
|
+
* ```typescript
|
|
79
|
+
* // Text-only ingestion pipeline
|
|
80
|
+
* const textEmbedFn = await createTextEmbedder();
|
|
81
|
+
* const indexManager = new IndexManager('./index.bin');
|
|
82
|
+
* const db = await openDatabase('./db.sqlite');
|
|
83
|
+
* const ingestion = new IngestionPipeline(textEmbedFn, indexManager, db);
|
|
84
|
+
*
|
|
85
|
+
* // Custom embedding implementation
|
|
86
|
+
* const customEmbedFn = async (text) => ({
|
|
87
|
+
* embedding_id: generateId(),
|
|
88
|
+
* vector: await myCustomModel.embed(text)
|
|
89
|
+
* });
|
|
90
|
+
* const ingestion = new IngestionPipeline(customEmbedFn, indexManager, db);
|
|
91
|
+
*
|
|
92
|
+
* // Multimodal ingestion (future)
|
|
93
|
+
* const multimodalEmbedFn = async (content, contentType) => {
|
|
94
|
+
* if (contentType === 'image') {
|
|
95
|
+
* return { embedding_id: generateId(), vector: await clipModel.embedImage(content) };
|
|
96
|
+
* }
|
|
97
|
+
* return { embedding_id: generateId(), vector: await clipModel.embedText(content) };
|
|
98
|
+
* };
|
|
99
|
+
* const ingestion = new IngestionPipeline(multimodalEmbedFn, indexManager, db);
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
constructor(embedFn: EmbedFunction, indexManager: IndexManager, db: DatabaseConnection, defaultChunkConfig?: ChunkConfig | undefined);
|
|
103
|
+
/**
|
|
104
|
+
* Ingest documents from a directory
|
|
105
|
+
* @param directoryPath - Path to directory containing documents
|
|
106
|
+
* @param options - Optional ingestion configuration
|
|
107
|
+
* @returns Promise resolving to ingestion results
|
|
108
|
+
*/
|
|
109
|
+
ingestDirectory(directoryPath: string, options?: IngestionOptions): Promise<IngestionResult>;
|
|
110
|
+
/**
|
|
111
|
+
* Ingest a single file
|
|
112
|
+
* @param filePath - Path to the file to ingest
|
|
113
|
+
* @param options - Optional ingestion configuration
|
|
114
|
+
* @returns Promise resolving to ingestion results
|
|
115
|
+
*/
|
|
116
|
+
ingestFile(filePath: string, options?: IngestionOptions): Promise<IngestionResult>;
|
|
117
|
+
/**
|
|
118
|
+
* Ingest documents from a path (file or directory)
|
|
119
|
+
* Implements the complete pipeline: file processing → chunking → embedding → storage
|
|
120
|
+
*/
|
|
121
|
+
ingestPath(path: string, options?: IngestionOptions): Promise<IngestionResult>;
|
|
122
|
+
/**
|
|
123
|
+
* Chunk all documents and organize results
|
|
124
|
+
*/
|
|
125
|
+
private chunkDocuments;
|
|
126
|
+
/**
|
|
127
|
+
* Generate embeddings for all chunks with error handling
|
|
128
|
+
*/
|
|
129
|
+
private generateEmbeddings;
|
|
130
|
+
/**
|
|
131
|
+
* Store documents and chunks in database
|
|
132
|
+
*/
|
|
133
|
+
private storeDocumentsAndChunks;
|
|
134
|
+
/**
|
|
135
|
+
* Update vector index with new embeddings
|
|
136
|
+
*/
|
|
137
|
+
private updateVectorIndex;
|
|
138
|
+
/**
|
|
139
|
+
* Clean up resources - explicit cleanup method
|
|
140
|
+
*/
|
|
141
|
+
cleanup(): Promise<void>;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=ingestion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingestion.d.ts","sourceRoot":"","sources":["../../src/core/ingestion.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAA2B,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAA+B,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAI/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8BAA8B;IAC9B,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,6BAA6B;IAC7B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,yCAAyC;IACzC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,gCAAgC;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2BAA2B;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iDAAiD;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,eAAe,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,qBAAa,iBAAiB;IAyD1B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,kBAAkB,CAAC;IA3D7B,OAAO,CAAC,WAAW,CAAsB;IAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoDG;gBAEO,OAAO,EAAE,aAAa,EACtB,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE,kBAAkB,EACtB,kBAAkB,CAAC,EAAE,WAAW,YAAA;IAoB1C;;;;;OAKG;IACG,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC;IAQtG;;;;;OAKG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC;IAQ5F;;;OAGG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC;IAqFxF;;OAEG;YACW,cAAc;IA2C5B;;OAEG;YACW,kBAAkB;IA0ChC;;OAEG;YACW,uBAAuB;IAwErC;;OAEG;YACW,iBAAiB;IAiB/B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ/B"}
|