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
|
@@ -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"}
|