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.
Files changed (182) hide show
  1. package/README.md +94 -65
  2. package/dist/cli/indexer.d.ts.map +1 -1
  3. package/dist/cli/indexer.js +78 -50
  4. package/dist/cli/indexer.js.map +1 -1
  5. package/dist/cli/search.d.ts.map +1 -1
  6. package/dist/cli/search.js +13 -30
  7. package/dist/cli/search.js.map +1 -1
  8. package/dist/cli.js +2 -2
  9. package/dist/cli.js.map +1 -1
  10. package/dist/config.d.ts +34 -73
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +50 -255
  13. package/dist/config.js.map +1 -1
  14. package/dist/core/adapters.d.ts +93 -0
  15. package/dist/core/adapters.d.ts.map +1 -0
  16. package/dist/core/adapters.js +139 -0
  17. package/dist/core/adapters.js.map +1 -0
  18. package/dist/core/chunker.d.ts +117 -0
  19. package/dist/core/chunker.d.ts.map +1 -0
  20. package/dist/core/chunker.js +73 -0
  21. package/dist/core/chunker.js.map +1 -0
  22. package/dist/core/config.d.ts +102 -0
  23. package/dist/core/config.d.ts.map +1 -0
  24. package/dist/core/config.js +240 -0
  25. package/dist/core/config.js.map +1 -0
  26. package/dist/{db.d.ts → core/db.d.ts} +25 -9
  27. package/dist/core/db.d.ts.map +1 -0
  28. package/dist/{db.js → core/db.js} +86 -16
  29. package/dist/core/db.js.map +1 -0
  30. package/dist/{error-handler.d.ts → core/error-handler.d.ts} +23 -2
  31. package/dist/core/error-handler.d.ts.map +1 -0
  32. package/dist/{error-handler.js → core/error-handler.js} +51 -8
  33. package/dist/core/error-handler.js.map +1 -0
  34. package/dist/core/index.d.ts +57 -0
  35. package/dist/core/index.d.ts.map +1 -0
  36. package/dist/core/index.js +66 -0
  37. package/dist/core/index.js.map +1 -0
  38. package/dist/core/ingestion.d.ts +143 -0
  39. package/dist/core/ingestion.d.ts.map +1 -0
  40. package/dist/core/ingestion.js +347 -0
  41. package/dist/core/ingestion.js.map +1 -0
  42. package/dist/core/interfaces.d.ts +408 -0
  43. package/dist/core/interfaces.d.ts.map +1 -0
  44. package/dist/core/interfaces.js +106 -0
  45. package/dist/core/interfaces.js.map +1 -0
  46. package/dist/{path-manager.d.ts → core/path-manager.d.ts} +5 -0
  47. package/dist/core/path-manager.d.ts.map +1 -0
  48. package/dist/{path-manager.js → core/path-manager.js} +5 -0
  49. package/dist/core/path-manager.js.map +1 -0
  50. package/dist/core/search-example.d.ts +25 -0
  51. package/dist/core/search-example.d.ts.map +1 -0
  52. package/dist/core/search-example.js +138 -0
  53. package/dist/core/search-example.js.map +1 -0
  54. package/dist/core/search-pipeline-example.d.ts +21 -0
  55. package/dist/core/search-pipeline-example.d.ts.map +1 -0
  56. package/dist/core/search-pipeline-example.js +188 -0
  57. package/dist/core/search-pipeline-example.js.map +1 -0
  58. package/dist/core/search-pipeline.d.ts +111 -0
  59. package/dist/core/search-pipeline.d.ts.map +1 -0
  60. package/dist/core/search-pipeline.js +287 -0
  61. package/dist/core/search-pipeline.js.map +1 -0
  62. package/dist/core/search.d.ts +104 -0
  63. package/dist/core/search.d.ts.map +1 -0
  64. package/dist/core/search.js +218 -0
  65. package/dist/core/search.js.map +1 -0
  66. package/dist/core/types.d.ts +63 -0
  67. package/dist/core/types.d.ts.map +1 -0
  68. package/dist/core/types.js +6 -0
  69. package/dist/core/types.js.map +1 -0
  70. package/dist/{vector-index.d.ts → core/vector-index.d.ts} +4 -0
  71. package/dist/core/vector-index.d.ts.map +1 -0
  72. package/dist/{vector-index.js → core/vector-index.js} +19 -0
  73. package/dist/core/vector-index.js.map +1 -0
  74. package/dist/dom-polyfills.d.ts +6 -0
  75. package/dist/dom-polyfills.d.ts.map +1 -0
  76. package/dist/dom-polyfills.js +40 -0
  77. package/dist/dom-polyfills.js.map +1 -0
  78. package/dist/examples/clean-api-examples.d.ts +44 -0
  79. package/dist/examples/clean-api-examples.d.ts.map +1 -0
  80. package/dist/examples/clean-api-examples.js +206 -0
  81. package/dist/examples/clean-api-examples.js.map +1 -0
  82. package/dist/factories/index.d.ts +43 -0
  83. package/dist/factories/index.d.ts.map +1 -0
  84. package/dist/factories/index.js +44 -0
  85. package/dist/factories/index.js.map +1 -0
  86. package/dist/factories/text-factory.d.ts +466 -0
  87. package/dist/factories/text-factory.d.ts.map +1 -0
  88. package/dist/factories/text-factory.js +719 -0
  89. package/dist/factories/text-factory.js.map +1 -0
  90. package/dist/file-processor.d.ts +2 -2
  91. package/dist/file-processor.d.ts.map +1 -1
  92. package/dist/file-processor.js +3 -3
  93. package/dist/file-processor.js.map +1 -1
  94. package/dist/index-manager.d.ts +3 -2
  95. package/dist/index-manager.d.ts.map +1 -1
  96. package/dist/index-manager.js +13 -11
  97. package/dist/index-manager.js.map +1 -1
  98. package/dist/index.d.ts +63 -8
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +91 -16
  101. package/dist/index.js.map +1 -1
  102. package/dist/indexer.js +1 -1
  103. package/dist/indexer.js.map +1 -1
  104. package/dist/ingestion.d.ts +30 -156
  105. package/dist/ingestion.d.ts.map +1 -1
  106. package/dist/ingestion.js +58 -675
  107. package/dist/ingestion.js.map +1 -1
  108. package/dist/mcp-server.js +86 -55
  109. package/dist/mcp-server.js.map +1 -1
  110. package/dist/preprocess.js +1 -1
  111. package/dist/preprocess.js.map +1 -1
  112. package/dist/search-standalone.js +1 -1
  113. package/dist/search-standalone.js.map +1 -1
  114. package/dist/search.d.ts +32 -76
  115. package/dist/search.d.ts.map +1 -1
  116. package/dist/search.js +80 -428
  117. package/dist/search.js.map +1 -1
  118. package/dist/text/chunker.d.ts +32 -0
  119. package/dist/text/chunker.d.ts.map +1 -0
  120. package/dist/{chunker.js → text/chunker.js} +98 -75
  121. package/dist/text/chunker.js.map +1 -0
  122. package/dist/{embedder.d.ts → text/embedder.d.ts} +22 -1
  123. package/dist/text/embedder.d.ts.map +1 -0
  124. package/dist/{embedder.js → text/embedder.js} +71 -4
  125. package/dist/text/embedder.js.map +1 -0
  126. package/dist/text/index.d.ts +7 -0
  127. package/dist/text/index.d.ts.map +1 -0
  128. package/dist/text/index.js +8 -0
  129. package/dist/text/index.js.map +1 -0
  130. package/dist/text/preprocessors/index.d.ts +17 -0
  131. package/dist/text/preprocessors/index.d.ts.map +1 -0
  132. package/dist/text/preprocessors/index.js +38 -0
  133. package/dist/text/preprocessors/index.js.map +1 -0
  134. package/dist/text/preprocessors/mdx.d.ts +25 -0
  135. package/dist/text/preprocessors/mdx.d.ts.map +1 -0
  136. package/dist/text/preprocessors/mdx.js +101 -0
  137. package/dist/text/preprocessors/mdx.js.map +1 -0
  138. package/dist/text/preprocessors/mermaid.d.ts +68 -0
  139. package/dist/text/preprocessors/mermaid.d.ts.map +1 -0
  140. package/dist/text/preprocessors/mermaid.js +330 -0
  141. package/dist/text/preprocessors/mermaid.js.map +1 -0
  142. package/dist/text/preprocessors/registry.d.ts +56 -0
  143. package/dist/text/preprocessors/registry.d.ts.map +1 -0
  144. package/dist/text/preprocessors/registry.js +180 -0
  145. package/dist/text/preprocessors/registry.js.map +1 -0
  146. package/dist/text/reranker.d.ts +60 -0
  147. package/dist/text/reranker.d.ts.map +1 -0
  148. package/dist/{reranker.js → text/reranker.js} +134 -19
  149. package/dist/text/reranker.js.map +1 -0
  150. package/dist/{tokenizer.d.ts → text/tokenizer.d.ts} +1 -0
  151. package/dist/text/tokenizer.d.ts.map +1 -0
  152. package/dist/{tokenizer.js → text/tokenizer.js} +7 -2
  153. package/dist/text/tokenizer.js.map +1 -0
  154. package/dist/types.d.ts +1 -1
  155. package/dist/types.d.ts.map +1 -1
  156. package/package.json +2 -2
  157. package/dist/chunker.d.ts +0 -47
  158. package/dist/chunker.d.ts.map +0 -1
  159. package/dist/chunker.js.map +0 -1
  160. package/dist/db.d.ts.map +0 -1
  161. package/dist/db.js.map +0 -1
  162. package/dist/embedder.d.ts.map +0 -1
  163. package/dist/embedder.js.map +0 -1
  164. package/dist/error-handler.d.ts.map +0 -1
  165. package/dist/error-handler.js.map +0 -1
  166. package/dist/path-manager.d.ts.map +0 -1
  167. package/dist/path-manager.js.map +0 -1
  168. package/dist/reranker.d.ts +0 -40
  169. package/dist/reranker.d.ts.map +0 -1
  170. package/dist/reranker.js.map +0 -1
  171. package/dist/resource-manager-demo.d.ts +0 -7
  172. package/dist/resource-manager-demo.d.ts.map +0 -1
  173. package/dist/resource-manager-demo.js +0 -52
  174. package/dist/resource-manager-demo.js.map +0 -1
  175. package/dist/resource-manager.d.ts +0 -129
  176. package/dist/resource-manager.d.ts.map +0 -1
  177. package/dist/resource-manager.js +0 -389
  178. package/dist/resource-manager.js.map +0 -1
  179. package/dist/tokenizer.d.ts.map +0 -1
  180. package/dist/tokenizer.js.map +0 -1
  181. package/dist/vector-index.d.ts.map +0 -1
  182. package/dist/vector-index.js.map +0 -1
@@ -0,0 +1,138 @@
1
+ /**
2
+ * CORE MODULE — Example usage of the new SearchEngine with dependency injection
3
+ * This file demonstrates how the refactored SearchEngine works with injected dependencies
4
+ */
5
+ import { SearchEngine } from './search.js';
6
+ /**
7
+ * Example embedding function that could be injected
8
+ * In practice, this would be created from a text embedder or multimodal embedder
9
+ */
10
+ const exampleEmbedFunction = async (query, contentType) => {
11
+ // This is just a mock - in real usage, this would call an actual embedding model
12
+ console.log(`Embedding query: "${query}" for content type: ${contentType || 'text'}`);
13
+ // Return a mock embedding result
14
+ return {
15
+ embedding_id: 'mock_' + Date.now(),
16
+ vector: new Float32Array(384).fill(0.1), // Mock 384-dimensional vector
17
+ contentType: contentType || 'text'
18
+ };
19
+ };
20
+ /**
21
+ * Example reranking function that could be injected
22
+ * In practice, this would be created from a cross-encoder reranker
23
+ */
24
+ const exampleRerankFunction = async (query, results, contentType) => {
25
+ console.log(`Reranking ${results.length} results for query: "${query}"`);
26
+ // Simple mock reranking - just reverse the order
27
+ return [...results].reverse();
28
+ };
29
+ /**
30
+ * Example usage of the new SearchEngine with dependency injection
31
+ */
32
+ export async function exampleUsage() {
33
+ console.log('=== SearchEngine Dependency Injection Example ===');
34
+ // Mock dependencies that would normally be created by factories
35
+ const mockIndexManager = {
36
+ search: (vector, k) => ({
37
+ embeddingIds: ['mock1', 'mock2'],
38
+ distances: [0.1, 0.2]
39
+ }),
40
+ getStats: () => ({ totalVectors: 100 })
41
+ };
42
+ const mockDb = {
43
+ all: async (query, params) => [
44
+ { id: 1, content: 'Mock content 1', document_id: 1, source: 'mock1.md', title: 'Mock 1' },
45
+ { id: 2, content: 'Mock content 2', document_id: 2, source: 'mock2.md', title: 'Mock 2' }
46
+ ],
47
+ close: async () => { }
48
+ };
49
+ // Create SearchEngine with injected dependencies (correct signature)
50
+ const searchEngine = new SearchEngine(exampleEmbedFunction, mockIndexManager, mockDb, exampleRerankFunction);
51
+ console.log('SearchEngine created with injected dependencies');
52
+ // Note: The core SearchEngine doesn't have setter methods - dependencies are injected via constructor
53
+ console.log('SearchEngine created and dependencies injected separately');
54
+ // Get stats before initialization
55
+ const statsBeforeInit = await searchEngine.getStats();
56
+ console.log('Stats before initialization:', statsBeforeInit);
57
+ // Note: In a real scenario, you would initialize and search like this:
58
+ // await searchEngine.initialize();
59
+ // const results = await searchEngine.search('example query');
60
+ // console.log('Search results:', results);
61
+ console.log('Example completed successfully');
62
+ }
63
+ /**
64
+ * Example of how to create embedding and reranking functions from existing components
65
+ */
66
+ export function createAdapterExample() {
67
+ console.log('=== Adapter Example ===');
68
+ // Mock embedder
69
+ const mockEmbedder = {
70
+ async embedSingle(query) {
71
+ return {
72
+ embedding_id: 'emb_' + Date.now(),
73
+ vector: new Float32Array(384).fill(0.2)
74
+ };
75
+ }
76
+ };
77
+ // Mock reranker
78
+ const mockReranker = {
79
+ isLoaded: () => true,
80
+ async rerank(query, results) {
81
+ return results.map(r => ({ ...r, score: r.score * 1.1 }));
82
+ }
83
+ };
84
+ // Create adapter functions
85
+ const embedFn = async (query, contentType) => {
86
+ const result = await mockEmbedder.embedSingle(query);
87
+ return {
88
+ ...result,
89
+ contentType: contentType || 'text'
90
+ };
91
+ };
92
+ const rerankFn = async (query, results, contentType) => {
93
+ // Convert to reranker format
94
+ const rerankResults = results.map(r => ({
95
+ text: r.content,
96
+ score: r.score,
97
+ document: {
98
+ id: r.document.id,
99
+ source: r.document.source,
100
+ title: r.document.title
101
+ }
102
+ }));
103
+ // Call reranker
104
+ const reranked = await mockReranker.rerank(query, rerankResults);
105
+ // Convert back to core format
106
+ return reranked.map((r, i) => ({
107
+ content: r.text,
108
+ score: r.score,
109
+ contentType: results[i].contentType,
110
+ document: {
111
+ ...r.document,
112
+ contentType: results[i].document.contentType
113
+ },
114
+ metadata: results[i].metadata
115
+ }));
116
+ };
117
+ // Mock dependencies for the example
118
+ const mockIndexManager = {
119
+ search: (vector, k) => ({
120
+ embeddingIds: ['emb1', 'emb2'],
121
+ distances: [0.15, 0.25]
122
+ }),
123
+ getStats: () => ({ totalVectors: 50 })
124
+ };
125
+ const mockDb = {
126
+ all: async (query, params) => [
127
+ { id: 1, content: 'Example content 1', document_id: 1, source: 'doc1.md', title: 'Document 1' }
128
+ ],
129
+ close: async () => { }
130
+ };
131
+ // Create SearchEngine with adapted functions (correct signature)
132
+ const searchEngine = new SearchEngine(embedFn, mockIndexManager, mockDb, rerankFn);
133
+ console.log('SearchEngine created with adapters');
134
+ console.log('Adapter example completed');
135
+ }
136
+ // Export for testing purposes
137
+ export { exampleEmbedFunction, exampleRerankFunction };
138
+ //# sourceMappingURL=search-example.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-example.js","sourceRoot":"","sources":["../../src/core/search-example.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * CORE MODULE — Example usage of the SearchPipelineCoordinator
3
+ * Demonstrates model-agnostic search pipeline coordination
4
+ */
5
+ /**
6
+ * Example demonstrating direct use of SearchPipelineCoordinator
7
+ */
8
+ export declare function demonstrateSearchPipelineCoordination(): Promise<void>;
9
+ /**
10
+ * Example demonstrating pipeline step-by-step execution
11
+ */
12
+ export declare function demonstrateStepByStepPipeline(): Promise<void>;
13
+ /**
14
+ * Example demonstrating error handling in pipeline coordination
15
+ */
16
+ export declare function demonstrateErrorHandling(): Promise<void>;
17
+ /**
18
+ * Run all examples
19
+ */
20
+ export declare function runAllExamples(): Promise<void>;
21
+ //# sourceMappingURL=search-pipeline-example.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-pipeline-example.d.ts","sourceRoot":"","sources":["../../src/core/search-pipeline-example.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;GAEG;AACH,wBAAsB,qCAAqC,kBAwE1D;AAED;;GAEG;AACH,wBAAsB,6BAA6B,kBAmFlD;AAED;;GAEG;AACH,wBAAsB,wBAAwB,kBAiD7C;AAED;;GAEG;AACH,wBAAsB,cAAc,kBAKnC"}
@@ -0,0 +1,188 @@
1
+ /**
2
+ * CORE MODULE — Example usage of the SearchPipelineCoordinator
3
+ * Demonstrates model-agnostic search pipeline coordination
4
+ */
5
+ import { SearchPipelineFactory } from './search-pipeline.js';
6
+ import { SearchEngine } from './search.js';
7
+ /**
8
+ * Example demonstrating direct use of SearchPipelineCoordinator
9
+ */
10
+ export async function demonstrateSearchPipelineCoordination() {
11
+ console.log('=== Search Pipeline Coordination Example ===');
12
+ // Create mock dependencies (in real usage, these would be actual implementations)
13
+ const mockEmbedFunction = async (query, contentType) => {
14
+ console.log(`[Pipeline] Embedding query: "${query}" (${contentType || 'text'})`);
15
+ return {
16
+ embedding_id: 'mock_' + Date.now(),
17
+ vector: new Float32Array(384).fill(0.1),
18
+ contentType: contentType || 'text'
19
+ };
20
+ };
21
+ const mockRerankFunction = async (query, results, contentType) => {
22
+ console.log(`[Pipeline] Reranking ${results.length} results for: "${query}"`);
23
+ // Simple mock reranking - boost scores slightly
24
+ return results.map(r => ({ ...r, score: Math.min(1.0, r.score * 1.1) }));
25
+ };
26
+ const mockIndexManager = {
27
+ search: async (vector, topK) => {
28
+ console.log(`[Pipeline] Vector search with ${vector.length}D vector, topK=${topK}`);
29
+ return {
30
+ embeddingIds: ['id1', 'id2', 'id3'],
31
+ distances: [0.1, 0.2, 0.3]
32
+ };
33
+ }
34
+ };
35
+ const mockDbConnection = {}; // Mock database connection
36
+ // Method 1: Create coordinator using factory
37
+ console.log('\n--- Method 1: Using SearchPipelineFactory ---');
38
+ const coordinator1 = SearchPipelineFactory.create(mockEmbedFunction, mockIndexManager, mockDbConnection, mockRerankFunction, 'text');
39
+ console.log('Pipeline status:', coordinator1.getStatus());
40
+ console.log('Pipeline ready:', coordinator1.isReady());
41
+ // Method 2: Create coordinator manually
42
+ console.log('\n--- Method 2: Manual Configuration ---');
43
+ const coordinator2 = SearchPipelineFactory.createEmpty();
44
+ coordinator2.setEmbedFunction(mockEmbedFunction);
45
+ coordinator2.setIndexManager(mockIndexManager);
46
+ coordinator2.setDatabaseConnection(mockDbConnection);
47
+ coordinator2.setRerankFunction(mockRerankFunction);
48
+ coordinator2.setDefaultContentType('text');
49
+ console.log('Manual coordinator status:', coordinator2.getStatus());
50
+ // Method 3: SearchEngine with pipeline coordination
51
+ console.log('\n--- Method 3: SearchEngine with Pipeline Coordination ---');
52
+ const searchEngine = new SearchEngine(mockEmbedFunction, mockIndexManager, mockDbConnection, mockRerankFunction);
53
+ const stats = await searchEngine.getStats();
54
+ console.log('SearchEngine stats:', stats);
55
+ console.log('\nSearch pipeline coordination examples completed successfully');
56
+ }
57
+ /**
58
+ * Example demonstrating pipeline step-by-step execution
59
+ */
60
+ export async function demonstrateStepByStepPipeline() {
61
+ console.log('\n=== Step-by-Step Pipeline Execution ===');
62
+ const coordinator = SearchPipelineFactory.createEmpty();
63
+ // Step 1: Set up embedding function
64
+ const embedFn = async (query, contentType) => {
65
+ console.log(`Step 1: Embedding "${query}"`);
66
+ return {
67
+ embedding_id: 'step_' + Date.now(),
68
+ vector: new Float32Array(384).fill(0.2),
69
+ contentType: contentType || 'text'
70
+ };
71
+ };
72
+ coordinator.setEmbedFunction(embedFn);
73
+ // Step 2: Set up index manager
74
+ const indexManager = {
75
+ search: async (vector, topK) => {
76
+ console.log(`Step 2: Vector search with topK=${topK}`);
77
+ return {
78
+ embeddingIds: ['step_id1', 'step_id2'],
79
+ distances: [0.15, 0.25]
80
+ };
81
+ }
82
+ };
83
+ coordinator.setIndexManager(indexManager);
84
+ // Step 3: Set up database connection (mock)
85
+ coordinator.setDatabaseConnection({});
86
+ // Step 4: Set up reranking function
87
+ const rerankFn = async (query, results) => {
88
+ console.log(`Step 5: Reranking ${results.length} results`);
89
+ return results.reverse(); // Simple reranking
90
+ };
91
+ coordinator.setRerankFunction(rerankFn);
92
+ // Execute individual steps
93
+ try {
94
+ console.log('\n--- Executing Individual Pipeline Steps ---');
95
+ // Step 1: Embed query
96
+ const embedding = await coordinator.embedQuery('test query', 'text');
97
+ console.log('Embedding result:', { id: embedding.embedding_id, dimensions: embedding.vector.length });
98
+ // Step 2: Vector search
99
+ const searchResult = await coordinator.vectorSearch(embedding.vector, 5);
100
+ console.log('Search result:', searchResult);
101
+ // Step 3: Retrieve metadata (mock)
102
+ const mockChunks = [
103
+ {
104
+ embedding_id: 'step_id1',
105
+ text: 'Mock chunk 1',
106
+ document_id: 1,
107
+ document_source: 'doc1.txt',
108
+ document_title: 'Document 1',
109
+ content_type: 'text'
110
+ },
111
+ {
112
+ embedding_id: 'step_id2',
113
+ text: 'Mock chunk 2',
114
+ document_id: 2,
115
+ document_source: 'doc2.txt',
116
+ document_title: 'Document 2',
117
+ content_type: 'text'
118
+ }
119
+ ];
120
+ // Step 4: Format results
121
+ const formattedResults = coordinator.formatResults(mockChunks, searchResult.distances, searchResult.embeddingIds);
122
+ console.log('Formatted results:', formattedResults.map(r => ({ content: r.content, score: r.score })));
123
+ // Step 5: Rerank results
124
+ const rerankedResults = await coordinator.rerankResults('test query', formattedResults);
125
+ console.log('Reranked results:', rerankedResults.map(r => ({ content: r.content, score: r.score })));
126
+ }
127
+ catch (error) {
128
+ console.error('Pipeline step failed:', error);
129
+ }
130
+ console.log('\nStep-by-step pipeline execution completed');
131
+ }
132
+ /**
133
+ * Example demonstrating error handling in pipeline coordination
134
+ */
135
+ export async function demonstrateErrorHandling() {
136
+ console.log('\n=== Pipeline Error Handling ===');
137
+ const coordinator = SearchPipelineFactory.createEmpty();
138
+ // Test 1: Missing dependencies
139
+ try {
140
+ await coordinator.executeSearchPipeline('test query');
141
+ }
142
+ catch (error) {
143
+ console.log('Expected error for missing dependencies:', error instanceof Error ? error.message : error);
144
+ }
145
+ // Test 2: Embedding function error
146
+ const failingEmbedFn = async () => {
147
+ throw new Error('Embedding model failed');
148
+ };
149
+ coordinator.setEmbedFunction(failingEmbedFn);
150
+ coordinator.setIndexManager({ search: async () => ({ embeddingIds: [], distances: [] }) });
151
+ coordinator.setDatabaseConnection({});
152
+ try {
153
+ await coordinator.executeSearchPipeline('test query');
154
+ }
155
+ catch (error) {
156
+ console.log('Expected error for embedding failure:', error instanceof Error ? error.message : error);
157
+ }
158
+ // Test 3: Reranking failure (should not break pipeline)
159
+ const workingEmbedFn = async (query) => ({
160
+ embedding_id: 'working',
161
+ vector: new Float32Array(384).fill(0.1),
162
+ contentType: 'text'
163
+ });
164
+ const failingRerankFn = async () => {
165
+ throw new Error('Reranking failed');
166
+ };
167
+ coordinator.setEmbedFunction(workingEmbedFn);
168
+ coordinator.setRerankFunction(failingRerankFn);
169
+ // This should work despite reranking failure
170
+ try {
171
+ const results = await coordinator.executeSearchPipeline('test query', { rerank: true });
172
+ console.log('Pipeline succeeded despite reranking failure, results:', results.length);
173
+ }
174
+ catch (error) {
175
+ console.log('Unexpected error:', error);
176
+ }
177
+ console.log('Error handling demonstration completed');
178
+ }
179
+ /**
180
+ * Run all examples
181
+ */
182
+ export async function runAllExamples() {
183
+ await demonstrateSearchPipelineCoordination();
184
+ await demonstrateStepByStepPipeline();
185
+ await demonstrateErrorHandling();
186
+ console.log('\n=== All Search Pipeline Examples Completed ===');
187
+ }
188
+ //# sourceMappingURL=search-pipeline-example.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-pipeline-example.js","sourceRoot":"","sources":["../../src/core/search-pipeline-example.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
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 { SearchResult, SearchOptions, EmbeddingResult } from './types.js';
6
+ import type { EmbedFunction, RerankFunction, SearchPipelineInterface } from './interfaces.js';
7
+ /**
8
+ * Core search pipeline coordinator
9
+ * Orchestrates the search pipeline: query processing → vector search → metadata retrieval → optional reranking
10
+ * Remains completely independent of specific embedding models or transformer libraries
11
+ */
12
+ export declare class SearchPipelineCoordinator implements SearchPipelineInterface {
13
+ private embedQueryFn;
14
+ private rerankResultsFn;
15
+ private indexManager;
16
+ private dbConnection;
17
+ private defaultContentType;
18
+ /**
19
+ * Set the embedding function for query processing
20
+ */
21
+ setEmbedFunction(embedFn: EmbedFunction): void;
22
+ /**
23
+ * Set the reranking function for result reranking
24
+ */
25
+ setRerankFunction(rerankFn: RerankFunction): void;
26
+ /**
27
+ * Set the index manager for vector search
28
+ */
29
+ setIndexManager(indexManager: any): void;
30
+ /**
31
+ * Set the database connection for metadata retrieval
32
+ */
33
+ setDatabaseConnection(dbConnection: any): void;
34
+ /**
35
+ * Set the default content type
36
+ */
37
+ setDefaultContentType(contentType: string): void;
38
+ /**
39
+ * Execute the complete search pipeline
40
+ * Coordinates all steps without knowledge of specific embedding models
41
+ */
42
+ executeSearchPipeline(query: string, options?: SearchOptions): Promise<SearchResult[]>;
43
+ /**
44
+ * Step 1: Process and embed the query
45
+ * Uses injected embedding function without knowledge of specific models
46
+ */
47
+ embedQuery(query: string, contentType?: string): Promise<EmbeddingResult>;
48
+ /**
49
+ * Step 2: Perform vector search
50
+ * Uses index manager without knowledge of specific embedding models
51
+ */
52
+ vectorSearch(queryVector: Float32Array, topK: number): Promise<{
53
+ embeddingIds: string[];
54
+ distances: number[];
55
+ }>;
56
+ /**
57
+ * Step 3: Retrieve metadata from database
58
+ * Uses database connection without knowledge of specific data formats
59
+ */
60
+ retrieveMetadata(embeddingIds: string[]): Promise<any[]>;
61
+ /**
62
+ * Step 4: Format initial results
63
+ * Formats results in core format without knowledge of specific content types
64
+ */
65
+ formatResults(chunks: any[], distances: number[], embeddingIds: string[]): SearchResult[];
66
+ /**
67
+ * Step 5: Optional reranking
68
+ * Uses injected reranking function without knowledge of specific models
69
+ */
70
+ rerankResults(query: string, results: SearchResult[], contentType?: string): Promise<SearchResult[]>;
71
+ /**
72
+ * Validate that all required dependencies are set
73
+ */
74
+ private validateDependencies;
75
+ /**
76
+ * Parse metadata safely
77
+ */
78
+ private parseMetadata;
79
+ /**
80
+ * Check if the pipeline is ready to execute
81
+ */
82
+ isReady(): boolean;
83
+ /**
84
+ * Get pipeline status information
85
+ */
86
+ getStatus(): {
87
+ hasEmbedFunction: boolean;
88
+ hasRerankFunction: boolean;
89
+ hasIndexManager: boolean;
90
+ hasDatabaseConnection: boolean;
91
+ isReady: boolean;
92
+ };
93
+ /**
94
+ * Reset all dependencies (useful for testing or reconfiguration)
95
+ */
96
+ reset(): void;
97
+ }
98
+ /**
99
+ * Factory for creating search pipeline coordinators
100
+ */
101
+ export declare class SearchPipelineFactory {
102
+ /**
103
+ * Create a search pipeline coordinator with all dependencies
104
+ */
105
+ static create(embedFn: EmbedFunction, indexManager: any, dbConnection: any, rerankFn?: RerankFunction, defaultContentType?: string): SearchPipelineCoordinator;
106
+ /**
107
+ * Create an empty coordinator for manual configuration
108
+ */
109
+ static createEmpty(): SearchPipelineCoordinator;
110
+ }
111
+ //# sourceMappingURL=search-pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-pipeline.d.ts","sourceRoot":"","sources":["../../src/core/search-pipeline.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AAEzB;;;;GAIG;AACH,qBAAa,yBAA0B,YAAW,uBAAuB;IACvE,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,kBAAkB,CAAkB;IAE5C;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAI9C;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAIjD;;OAEG;IACH,eAAe,CAAC,YAAY,EAAE,GAAG,GAAG,IAAI;IAIxC;;OAEG;IACH,qBAAqB,CAAC,YAAY,EAAE,GAAG,GAAG,IAAI;IAI9C;;OAEG;IACH,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAIhD;;;OAGG;IACG,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,EAAE,CAAC;IA8D1B;;;OAGG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAY/E;;;OAGG;IACG,YAAY,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QACnE,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IAiBF;;;OAGG;IACG,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAa9D;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE;IAoCzF;;;OAGG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAa1G;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAkB5B;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,SAAS,IAAI;QACX,gBAAgB,EAAE,OAAO,CAAC;QAC1B,iBAAiB,EAAE,OAAO,CAAC;QAC3B,eAAe,EAAE,OAAO,CAAC;QACzB,qBAAqB,EAAE,OAAO,CAAC;QAC/B,OAAO,EAAE,OAAO,CAAC;KAClB;IAUD;;OAEG;IACH,KAAK,IAAI,IAAI;CAOd;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAChC;;OAEG;IACH,MAAM,CAAC,MAAM,CACX,OAAO,EAAE,aAAa,EACtB,YAAY,EAAE,GAAG,EACjB,YAAY,EAAE,GAAG,EACjB,QAAQ,CAAC,EAAE,cAAc,EACzB,kBAAkB,GAAE,MAAe,GAClC,yBAAyB;IAc5B;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,yBAAyB;CAGhD"}