rag-lite-ts 2.1.1 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{core → cjs/core}/model-validator.js +1 -1
- package/dist/{core → cjs/core}/vector-index.js +4 -2
- package/dist/esm/api-errors.d.ts +90 -0
- package/dist/esm/api-errors.js +320 -0
- package/dist/esm/cli/indexer.d.ts +11 -0
- package/dist/esm/cli/indexer.js +471 -0
- package/dist/esm/cli/search.d.ts +7 -0
- package/dist/esm/cli/search.js +332 -0
- package/dist/esm/cli.d.ts +3 -0
- package/dist/esm/cli.js +529 -0
- package/dist/esm/config.d.ts +51 -0
- package/dist/esm/config.js +79 -0
- package/dist/esm/core/abstract-embedder.d.ts +125 -0
- package/dist/esm/core/abstract-embedder.js +264 -0
- package/dist/esm/core/actionable-error-messages.d.ts +60 -0
- package/dist/esm/core/actionable-error-messages.js +397 -0
- package/dist/esm/core/adapters.d.ts +93 -0
- package/dist/esm/core/adapters.js +139 -0
- package/dist/esm/core/batch-processing-optimizer.d.ts +155 -0
- package/dist/esm/core/batch-processing-optimizer.js +536 -0
- package/dist/esm/core/binary-index-format.d.ts +78 -0
- package/dist/esm/core/binary-index-format.js +291 -0
- package/dist/esm/core/chunker.d.ts +119 -0
- package/dist/esm/core/chunker.js +73 -0
- package/dist/esm/core/cli-database-utils.d.ts +53 -0
- package/dist/esm/core/cli-database-utils.js +239 -0
- package/dist/esm/core/config.d.ts +102 -0
- package/dist/esm/core/config.js +247 -0
- package/dist/esm/core/content-errors.d.ts +111 -0
- package/dist/esm/core/content-errors.js +362 -0
- package/dist/esm/core/content-manager.d.ts +335 -0
- package/dist/esm/core/content-manager.js +1476 -0
- package/dist/esm/core/content-performance-optimizer.d.ts +150 -0
- package/dist/esm/core/content-performance-optimizer.js +516 -0
- package/dist/esm/core/content-resolver.d.ts +104 -0
- package/dist/esm/core/content-resolver.js +285 -0
- package/dist/esm/core/cross-modal-search.d.ts +164 -0
- package/dist/esm/core/cross-modal-search.js +342 -0
- package/dist/esm/core/database-connection-manager.d.ts +109 -0
- package/dist/esm/core/database-connection-manager.js +310 -0
- package/dist/esm/core/db.d.ts +213 -0
- package/dist/esm/core/db.js +895 -0
- package/dist/esm/core/embedder-factory.d.ts +154 -0
- package/dist/esm/core/embedder-factory.js +311 -0
- package/dist/esm/core/error-handler.d.ts +112 -0
- package/dist/esm/core/error-handler.js +239 -0
- package/dist/esm/core/index.d.ts +59 -0
- package/dist/esm/core/index.js +69 -0
- package/dist/esm/core/ingestion.d.ts +202 -0
- package/dist/esm/core/ingestion.js +901 -0
- package/dist/esm/core/interfaces.d.ts +408 -0
- package/dist/esm/core/interfaces.js +106 -0
- package/dist/esm/core/lazy-dependency-loader.d.ts +147 -0
- package/dist/esm/core/lazy-dependency-loader.js +435 -0
- package/dist/esm/core/mode-detection-service.d.ts +150 -0
- package/dist/esm/core/mode-detection-service.js +565 -0
- package/dist/esm/core/mode-model-validator.d.ts +92 -0
- package/dist/esm/core/mode-model-validator.js +203 -0
- package/dist/esm/core/model-registry.d.ts +116 -0
- package/dist/esm/core/model-registry.js +411 -0
- package/dist/esm/core/model-validator.d.ts +217 -0
- package/dist/esm/core/model-validator.js +782 -0
- package/dist/esm/core/path-manager.d.ts +47 -0
- package/dist/esm/core/path-manager.js +71 -0
- package/dist/esm/core/raglite-paths.d.ts +121 -0
- package/dist/esm/core/raglite-paths.js +145 -0
- package/dist/esm/core/reranking-config.d.ts +42 -0
- package/dist/esm/core/reranking-config.js +147 -0
- package/dist/esm/core/reranking-factory.d.ts +92 -0
- package/dist/esm/core/reranking-factory.js +410 -0
- package/dist/esm/core/reranking-strategies.d.ts +310 -0
- package/dist/esm/core/reranking-strategies.js +650 -0
- package/dist/esm/core/resource-cleanup.d.ts +163 -0
- package/dist/esm/core/resource-cleanup.js +371 -0
- package/dist/esm/core/resource-manager.d.ts +212 -0
- package/dist/esm/core/resource-manager.js +564 -0
- package/dist/esm/core/search-pipeline.d.ts +111 -0
- package/dist/esm/core/search-pipeline.js +287 -0
- package/dist/esm/core/search.d.ts +141 -0
- package/dist/esm/core/search.js +320 -0
- package/dist/esm/core/streaming-operations.d.ts +145 -0
- package/dist/esm/core/streaming-operations.js +409 -0
- package/dist/esm/core/types.d.ts +66 -0
- package/dist/esm/core/types.js +6 -0
- package/dist/esm/core/universal-embedder.d.ts +177 -0
- package/dist/esm/core/universal-embedder.js +139 -0
- package/dist/esm/core/validation-messages.d.ts +99 -0
- package/dist/esm/core/validation-messages.js +334 -0
- package/dist/esm/core/vector-index.d.ts +72 -0
- package/dist/esm/core/vector-index.js +333 -0
- package/dist/esm/dom-polyfills.d.ts +6 -0
- package/dist/esm/dom-polyfills.js +37 -0
- package/dist/esm/factories/index.d.ts +27 -0
- package/dist/esm/factories/index.js +29 -0
- package/dist/esm/factories/ingestion-factory.d.ts +200 -0
- package/dist/esm/factories/ingestion-factory.js +477 -0
- package/dist/esm/factories/search-factory.d.ts +154 -0
- package/dist/esm/factories/search-factory.js +344 -0
- package/dist/esm/file-processor.d.ts +147 -0
- package/dist/esm/file-processor.js +963 -0
- package/dist/esm/index-manager.d.ts +116 -0
- package/dist/esm/index-manager.js +598 -0
- package/dist/esm/index.d.ts +75 -0
- package/dist/esm/index.js +110 -0
- package/dist/esm/indexer.d.ts +7 -0
- package/dist/esm/indexer.js +54 -0
- package/dist/esm/ingestion.d.ts +63 -0
- package/dist/esm/ingestion.js +124 -0
- package/dist/esm/mcp-server.d.ts +46 -0
- package/dist/esm/mcp-server.js +1820 -0
- package/dist/esm/multimodal/clip-embedder.d.ts +327 -0
- package/dist/esm/multimodal/clip-embedder.js +996 -0
- package/dist/esm/multimodal/index.d.ts +6 -0
- package/dist/esm/multimodal/index.js +6 -0
- package/dist/esm/preprocess.d.ts +19 -0
- package/dist/esm/preprocess.js +203 -0
- package/dist/esm/preprocessors/index.d.ts +17 -0
- package/dist/esm/preprocessors/index.js +38 -0
- package/dist/esm/preprocessors/mdx.d.ts +25 -0
- package/dist/esm/preprocessors/mdx.js +101 -0
- package/dist/esm/preprocessors/mermaid.d.ts +68 -0
- package/dist/esm/preprocessors/mermaid.js +329 -0
- package/dist/esm/preprocessors/registry.d.ts +56 -0
- package/dist/esm/preprocessors/registry.js +179 -0
- package/dist/esm/run-error-recovery-tests.d.ts +7 -0
- package/dist/esm/run-error-recovery-tests.js +101 -0
- package/dist/esm/search-standalone.d.ts +7 -0
- package/dist/esm/search-standalone.js +117 -0
- package/dist/esm/search.d.ts +99 -0
- package/dist/esm/search.js +177 -0
- package/dist/esm/test-utils.d.ts +18 -0
- package/dist/esm/test-utils.js +27 -0
- package/dist/esm/text/chunker.d.ts +33 -0
- package/dist/esm/text/chunker.js +279 -0
- package/dist/esm/text/embedder.d.ts +111 -0
- package/dist/esm/text/embedder.js +386 -0
- package/dist/esm/text/index.d.ts +8 -0
- package/dist/esm/text/index.js +9 -0
- package/dist/esm/text/preprocessors/index.d.ts +17 -0
- package/dist/esm/text/preprocessors/index.js +38 -0
- package/dist/esm/text/preprocessors/mdx.d.ts +25 -0
- package/dist/esm/text/preprocessors/mdx.js +101 -0
- package/dist/esm/text/preprocessors/mermaid.d.ts +68 -0
- package/dist/esm/text/preprocessors/mermaid.js +330 -0
- package/dist/esm/text/preprocessors/registry.d.ts +56 -0
- package/dist/esm/text/preprocessors/registry.js +180 -0
- package/dist/esm/text/reranker.d.ts +49 -0
- package/dist/esm/text/reranker.js +274 -0
- package/dist/esm/text/sentence-transformer-embedder.d.ts +96 -0
- package/dist/esm/text/sentence-transformer-embedder.js +340 -0
- package/dist/esm/text/tokenizer.d.ts +22 -0
- package/dist/esm/text/tokenizer.js +64 -0
- package/dist/esm/types.d.ts +83 -0
- package/dist/esm/types.js +3 -0
- package/dist/esm/utils/vector-math.d.ts +31 -0
- package/dist/esm/utils/vector-math.js +70 -0
- package/package.json +30 -12
- /package/dist/{api-errors.d.ts → cjs/api-errors.d.ts} +0 -0
- /package/dist/{api-errors.js → cjs/api-errors.js} +0 -0
- /package/dist/{cli → cjs/cli}/indexer.d.ts +0 -0
- /package/dist/{cli → cjs/cli}/indexer.js +0 -0
- /package/dist/{cli → cjs/cli}/search.d.ts +0 -0
- /package/dist/{cli → cjs/cli}/search.js +0 -0
- /package/dist/{cli.d.ts → cjs/cli.d.ts} +0 -0
- /package/dist/{cli.js → cjs/cli.js} +0 -0
- /package/dist/{config.d.ts → cjs/config.d.ts} +0 -0
- /package/dist/{config.js → cjs/config.js} +0 -0
- /package/dist/{core → cjs/core}/abstract-embedder.d.ts +0 -0
- /package/dist/{core → cjs/core}/abstract-embedder.js +0 -0
- /package/dist/{core → cjs/core}/actionable-error-messages.d.ts +0 -0
- /package/dist/{core → cjs/core}/actionable-error-messages.js +0 -0
- /package/dist/{core → cjs/core}/adapters.d.ts +0 -0
- /package/dist/{core → cjs/core}/adapters.js +0 -0
- /package/dist/{core → cjs/core}/batch-processing-optimizer.d.ts +0 -0
- /package/dist/{core → cjs/core}/batch-processing-optimizer.js +0 -0
- /package/dist/{core → cjs/core}/binary-index-format.d.ts +0 -0
- /package/dist/{core → cjs/core}/binary-index-format.js +0 -0
- /package/dist/{core → cjs/core}/chunker.d.ts +0 -0
- /package/dist/{core → cjs/core}/chunker.js +0 -0
- /package/dist/{core → cjs/core}/cli-database-utils.d.ts +0 -0
- /package/dist/{core → cjs/core}/cli-database-utils.js +0 -0
- /package/dist/{core → cjs/core}/config.d.ts +0 -0
- /package/dist/{core → cjs/core}/config.js +0 -0
- /package/dist/{core → cjs/core}/content-errors.d.ts +0 -0
- /package/dist/{core → cjs/core}/content-errors.js +0 -0
- /package/dist/{core → cjs/core}/content-manager.d.ts +0 -0
- /package/dist/{core → cjs/core}/content-manager.js +0 -0
- /package/dist/{core → cjs/core}/content-performance-optimizer.d.ts +0 -0
- /package/dist/{core → cjs/core}/content-performance-optimizer.js +0 -0
- /package/dist/{core → cjs/core}/content-resolver.d.ts +0 -0
- /package/dist/{core → cjs/core}/content-resolver.js +0 -0
- /package/dist/{core → cjs/core}/cross-modal-search.d.ts +0 -0
- /package/dist/{core → cjs/core}/cross-modal-search.js +0 -0
- /package/dist/{core → cjs/core}/database-connection-manager.d.ts +0 -0
- /package/dist/{core → cjs/core}/database-connection-manager.js +0 -0
- /package/dist/{core → cjs/core}/db.d.ts +0 -0
- /package/dist/{core → cjs/core}/db.js +0 -0
- /package/dist/{core → cjs/core}/embedder-factory.d.ts +0 -0
- /package/dist/{core → cjs/core}/embedder-factory.js +0 -0
- /package/dist/{core → cjs/core}/error-handler.d.ts +0 -0
- /package/dist/{core → cjs/core}/error-handler.js +0 -0
- /package/dist/{core → cjs/core}/index.d.ts +0 -0
- /package/dist/{core → cjs/core}/index.js +0 -0
- /package/dist/{core → cjs/core}/ingestion.d.ts +0 -0
- /package/dist/{core → cjs/core}/ingestion.js +0 -0
- /package/dist/{core → cjs/core}/interfaces.d.ts +0 -0
- /package/dist/{core → cjs/core}/interfaces.js +0 -0
- /package/dist/{core → cjs/core}/lazy-dependency-loader.d.ts +0 -0
- /package/dist/{core → cjs/core}/lazy-dependency-loader.js +0 -0
- /package/dist/{core → cjs/core}/mode-detection-service.d.ts +0 -0
- /package/dist/{core → cjs/core}/mode-detection-service.js +0 -0
- /package/dist/{core → cjs/core}/mode-model-validator.d.ts +0 -0
- /package/dist/{core → cjs/core}/mode-model-validator.js +0 -0
- /package/dist/{core → cjs/core}/model-registry.d.ts +0 -0
- /package/dist/{core → cjs/core}/model-registry.js +0 -0
- /package/dist/{core → cjs/core}/model-validator.d.ts +0 -0
- /package/dist/{core → cjs/core}/path-manager.d.ts +0 -0
- /package/dist/{core → cjs/core}/path-manager.js +0 -0
- /package/dist/{core → cjs/core}/raglite-paths.d.ts +0 -0
- /package/dist/{core → cjs/core}/raglite-paths.js +0 -0
- /package/dist/{core → cjs/core}/reranking-config.d.ts +0 -0
- /package/dist/{core → cjs/core}/reranking-config.js +0 -0
- /package/dist/{core → cjs/core}/reranking-factory.d.ts +0 -0
- /package/dist/{core → cjs/core}/reranking-factory.js +0 -0
- /package/dist/{core → cjs/core}/reranking-strategies.d.ts +0 -0
- /package/dist/{core → cjs/core}/reranking-strategies.js +0 -0
- /package/dist/{core → cjs/core}/resource-cleanup.d.ts +0 -0
- /package/dist/{core → cjs/core}/resource-cleanup.js +0 -0
- /package/dist/{core → cjs/core}/resource-manager.d.ts +0 -0
- /package/dist/{core → cjs/core}/resource-manager.js +0 -0
- /package/dist/{core → cjs/core}/search-pipeline.d.ts +0 -0
- /package/dist/{core → cjs/core}/search-pipeline.js +0 -0
- /package/dist/{core → cjs/core}/search.d.ts +0 -0
- /package/dist/{core → cjs/core}/search.js +0 -0
- /package/dist/{core → cjs/core}/streaming-operations.d.ts +0 -0
- /package/dist/{core → cjs/core}/streaming-operations.js +0 -0
- /package/dist/{core → cjs/core}/types.d.ts +0 -0
- /package/dist/{core → cjs/core}/types.js +0 -0
- /package/dist/{core → cjs/core}/universal-embedder.d.ts +0 -0
- /package/dist/{core → cjs/core}/universal-embedder.js +0 -0
- /package/dist/{core → cjs/core}/validation-messages.d.ts +0 -0
- /package/dist/{core → cjs/core}/validation-messages.js +0 -0
- /package/dist/{core → cjs/core}/vector-index.d.ts +0 -0
- /package/dist/{dom-polyfills.d.ts → cjs/dom-polyfills.d.ts} +0 -0
- /package/dist/{dom-polyfills.js → cjs/dom-polyfills.js} +0 -0
- /package/dist/{factories → cjs/factories}/index.d.ts +0 -0
- /package/dist/{factories → cjs/factories}/index.js +0 -0
- /package/dist/{factories → cjs/factories}/ingestion-factory.d.ts +0 -0
- /package/dist/{factories → cjs/factories}/ingestion-factory.js +0 -0
- /package/dist/{factories → cjs/factories}/search-factory.d.ts +0 -0
- /package/dist/{factories → cjs/factories}/search-factory.js +0 -0
- /package/dist/{file-processor.d.ts → cjs/file-processor.d.ts} +0 -0
- /package/dist/{file-processor.js → cjs/file-processor.js} +0 -0
- /package/dist/{index-manager.d.ts → cjs/index-manager.d.ts} +0 -0
- /package/dist/{index-manager.js → cjs/index-manager.js} +0 -0
- /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
- /package/dist/{index.js → cjs/index.js} +0 -0
- /package/dist/{indexer.d.ts → cjs/indexer.d.ts} +0 -0
- /package/dist/{indexer.js → cjs/indexer.js} +0 -0
- /package/dist/{ingestion.d.ts → cjs/ingestion.d.ts} +0 -0
- /package/dist/{ingestion.js → cjs/ingestion.js} +0 -0
- /package/dist/{mcp-server.d.ts → cjs/mcp-server.d.ts} +0 -0
- /package/dist/{mcp-server.js → cjs/mcp-server.js} +0 -0
- /package/dist/{multimodal → cjs/multimodal}/clip-embedder.d.ts +0 -0
- /package/dist/{multimodal → cjs/multimodal}/clip-embedder.js +0 -0
- /package/dist/{multimodal → cjs/multimodal}/index.d.ts +0 -0
- /package/dist/{multimodal → cjs/multimodal}/index.js +0 -0
- /package/dist/{preprocess.d.ts → cjs/preprocess.d.ts} +0 -0
- /package/dist/{preprocess.js → cjs/preprocess.js} +0 -0
- /package/dist/{preprocessors → cjs/preprocessors}/index.d.ts +0 -0
- /package/dist/{preprocessors → cjs/preprocessors}/index.js +0 -0
- /package/dist/{preprocessors → cjs/preprocessors}/mdx.d.ts +0 -0
- /package/dist/{preprocessors → cjs/preprocessors}/mdx.js +0 -0
- /package/dist/{preprocessors → cjs/preprocessors}/mermaid.d.ts +0 -0
- /package/dist/{preprocessors → cjs/preprocessors}/mermaid.js +0 -0
- /package/dist/{preprocessors → cjs/preprocessors}/registry.d.ts +0 -0
- /package/dist/{preprocessors → cjs/preprocessors}/registry.js +0 -0
- /package/dist/{run-error-recovery-tests.d.ts → cjs/run-error-recovery-tests.d.ts} +0 -0
- /package/dist/{run-error-recovery-tests.js → cjs/run-error-recovery-tests.js} +0 -0
- /package/dist/{search-standalone.d.ts → cjs/search-standalone.d.ts} +0 -0
- /package/dist/{search-standalone.js → cjs/search-standalone.js} +0 -0
- /package/dist/{search.d.ts → cjs/search.d.ts} +0 -0
- /package/dist/{search.js → cjs/search.js} +0 -0
- /package/dist/{test-utils.d.ts → cjs/test-utils.d.ts} +0 -0
- /package/dist/{test-utils.js → cjs/test-utils.js} +0 -0
- /package/dist/{text → cjs/text}/chunker.d.ts +0 -0
- /package/dist/{text → cjs/text}/chunker.js +0 -0
- /package/dist/{text → cjs/text}/embedder.d.ts +0 -0
- /package/dist/{text → cjs/text}/embedder.js +0 -0
- /package/dist/{text → cjs/text}/index.d.ts +0 -0
- /package/dist/{text → cjs/text}/index.js +0 -0
- /package/dist/{text → cjs/text}/preprocessors/index.d.ts +0 -0
- /package/dist/{text → cjs/text}/preprocessors/index.js +0 -0
- /package/dist/{text → cjs/text}/preprocessors/mdx.d.ts +0 -0
- /package/dist/{text → cjs/text}/preprocessors/mdx.js +0 -0
- /package/dist/{text → cjs/text}/preprocessors/mermaid.d.ts +0 -0
- /package/dist/{text → cjs/text}/preprocessors/mermaid.js +0 -0
- /package/dist/{text → cjs/text}/preprocessors/registry.d.ts +0 -0
- /package/dist/{text → cjs/text}/preprocessors/registry.js +0 -0
- /package/dist/{text → cjs/text}/reranker.d.ts +0 -0
- /package/dist/{text → cjs/text}/reranker.js +0 -0
- /package/dist/{text → cjs/text}/sentence-transformer-embedder.d.ts +0 -0
- /package/dist/{text → cjs/text}/sentence-transformer-embedder.js +0 -0
- /package/dist/{text → cjs/text}/tokenizer.d.ts +0 -0
- /package/dist/{text → cjs/text}/tokenizer.js +0 -0
- /package/dist/{types.d.ts → cjs/types.d.ts} +0 -0
- /package/dist/{types.js → cjs/types.js} +0 -0
- /package/dist/{utils → cjs/utils}/vector-math.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/vector-math.js +0 -0
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple Reranking Creation Function
|
|
3
|
+
*
|
|
4
|
+
* Implements createReranker function with simple conditional logic and automatic
|
|
5
|
+
* fallback mechanism for failed strategy initialization. Follows the design
|
|
6
|
+
* principle of using simple functions over complex factory patterns.
|
|
7
|
+
*/
|
|
8
|
+
import { getDefaultRerankingConfig, isStrategySupported, getSupportedStrategies, validateRerankingConfig } from './reranking-config.js';
|
|
9
|
+
import { createCrossEncoderRerankFunction, createTextDerivedRerankFunction } from './reranking-strategies.js';
|
|
10
|
+
/**
|
|
11
|
+
* Simple reranking creation function with conditional logic
|
|
12
|
+
*
|
|
13
|
+
* Creates appropriate reranking function based on mode and strategy with
|
|
14
|
+
* automatic fallback mechanism for failed strategy initialization.
|
|
15
|
+
*
|
|
16
|
+
* @param mode - Operating mode ('text' or 'multimodal')
|
|
17
|
+
* @param strategy - Desired reranking strategy
|
|
18
|
+
* @param config - Optional configuration for the strategy
|
|
19
|
+
* @returns RerankFunction or undefined if reranking is disabled
|
|
20
|
+
*/
|
|
21
|
+
export function createReranker(mode, strategy, config) {
|
|
22
|
+
const startTime = Date.now();
|
|
23
|
+
try {
|
|
24
|
+
console.log(`🚀 Starting reranker creation for ${mode} mode`);
|
|
25
|
+
// Use default strategy for mode if not specified
|
|
26
|
+
if (!strategy) {
|
|
27
|
+
const defaultConfig = getDefaultRerankingConfig(mode);
|
|
28
|
+
strategy = defaultConfig.strategy;
|
|
29
|
+
console.log(`Using default strategy for ${mode} mode: ${strategy}`);
|
|
30
|
+
}
|
|
31
|
+
// Return undefined immediately for disabled strategy
|
|
32
|
+
if (strategy === 'disabled') {
|
|
33
|
+
console.log('Reranking disabled by configuration');
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
// Validate strategy is supported for the mode
|
|
37
|
+
if (!isStrategySupported(strategy, mode)) {
|
|
38
|
+
const supportedStrategies = getSupportedStrategies(mode);
|
|
39
|
+
throw new Error(`Strategy '${strategy}' not supported for ${mode} mode. ` +
|
|
40
|
+
`Supported strategies: ${supportedStrategies.join(', ')}`);
|
|
41
|
+
}
|
|
42
|
+
// Validate and merge configuration
|
|
43
|
+
let validatedConfig;
|
|
44
|
+
try {
|
|
45
|
+
validatedConfig = config ? validateRerankingConfig({
|
|
46
|
+
strategy,
|
|
47
|
+
...config
|
|
48
|
+
}) : getDefaultRerankingConfig(mode);
|
|
49
|
+
}
|
|
50
|
+
catch (configError) {
|
|
51
|
+
console.warn(`⚠️ Configuration validation failed: ${configError instanceof Error ? configError.message : 'Unknown error'}. ` +
|
|
52
|
+
`Using default configuration.`);
|
|
53
|
+
validatedConfig = getDefaultRerankingConfig(mode);
|
|
54
|
+
validatedConfig.strategy = strategy; // Keep the requested strategy
|
|
55
|
+
}
|
|
56
|
+
// Create reranking function based on strategy with enhanced error handling
|
|
57
|
+
const reranker = createRerankingFunction(mode, strategy, validatedConfig);
|
|
58
|
+
const duration = Date.now() - startTime;
|
|
59
|
+
if (reranker) {
|
|
60
|
+
console.log(`✅ Reranker creation completed successfully (${duration}ms)`);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
console.log(`ℹ️ Reranker creation completed - reranking disabled (${duration}ms)`);
|
|
64
|
+
}
|
|
65
|
+
return reranker;
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
const duration = Date.now() - startTime;
|
|
69
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
70
|
+
console.error(`❌ Failed to create reranker with strategy '${strategy}' for ${mode} mode (${duration}ms): ${errorMessage}`);
|
|
71
|
+
// Log error details for debugging
|
|
72
|
+
if (error instanceof RerankingStrategyError) {
|
|
73
|
+
console.error('Detailed error information:', {
|
|
74
|
+
strategy: error.strategy,
|
|
75
|
+
mode: error.mode,
|
|
76
|
+
errorCode: error.errorCode,
|
|
77
|
+
message: error.message
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Create reranking function for specific strategy with enhanced error handling and recovery
|
|
85
|
+
*/
|
|
86
|
+
function createRerankingFunction(mode, strategy, config) {
|
|
87
|
+
const startTime = Date.now();
|
|
88
|
+
try {
|
|
89
|
+
logRerankingAttempt(mode, strategy, config);
|
|
90
|
+
let reranker;
|
|
91
|
+
switch (strategy) {
|
|
92
|
+
case 'cross-encoder':
|
|
93
|
+
console.log(`Creating cross-encoder reranker for ${mode} mode`);
|
|
94
|
+
reranker = createCrossEncoderRerankFunction(config.model);
|
|
95
|
+
break;
|
|
96
|
+
case 'text-derived':
|
|
97
|
+
if (mode !== 'multimodal') {
|
|
98
|
+
throw new RerankingStrategyError(strategy, mode, 'Text-derived strategy only supported in multimodal mode', 'UNSUPPORTED_MODE');
|
|
99
|
+
}
|
|
100
|
+
console.log('Creating text-derived reranker for multimodal mode');
|
|
101
|
+
reranker = createTextDerivedRerankFunction(config.model, // Image-to-text model
|
|
102
|
+
undefined // Use default cross-encoder model
|
|
103
|
+
);
|
|
104
|
+
break;
|
|
105
|
+
case 'disabled':
|
|
106
|
+
console.log('Reranking explicitly disabled');
|
|
107
|
+
return undefined;
|
|
108
|
+
default:
|
|
109
|
+
throw new RerankingStrategyError(strategy, mode, `Unknown reranking strategy: ${strategy}`, 'UNKNOWN_STRATEGY');
|
|
110
|
+
}
|
|
111
|
+
// Validate that reranker was created successfully
|
|
112
|
+
if (!reranker) {
|
|
113
|
+
throw new RerankingStrategyError(strategy, mode, `Strategy '${strategy}' returned undefined reranker`, 'CREATION_FAILED');
|
|
114
|
+
}
|
|
115
|
+
// Wrap reranker with error recovery
|
|
116
|
+
const wrappedReranker = wrapRerankFunctionWithErrorRecovery(reranker, strategy, mode);
|
|
117
|
+
const duration = Date.now() - startTime;
|
|
118
|
+
console.log(`✅ Successfully created ${strategy} reranker for ${mode} mode (${duration}ms)`);
|
|
119
|
+
return wrappedReranker;
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
const duration = Date.now() - startTime;
|
|
123
|
+
const rerankingError = error instanceof RerankingStrategyError
|
|
124
|
+
? error
|
|
125
|
+
: new RerankingStrategyError(strategy, mode, error instanceof Error ? error.message : 'Unknown error', 'CREATION_ERROR');
|
|
126
|
+
logRerankingError(rerankingError, duration);
|
|
127
|
+
throw rerankingError;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Custom error class for reranking strategy failures
|
|
132
|
+
*/
|
|
133
|
+
class RerankingStrategyError extends Error {
|
|
134
|
+
strategy;
|
|
135
|
+
mode;
|
|
136
|
+
errorCode;
|
|
137
|
+
constructor(strategy, mode, message, errorCode) {
|
|
138
|
+
super(message);
|
|
139
|
+
this.strategy = strategy;
|
|
140
|
+
this.mode = mode;
|
|
141
|
+
this.errorCode = errorCode;
|
|
142
|
+
this.name = 'RerankingStrategyError';
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Log reranking attempt details
|
|
147
|
+
*/
|
|
148
|
+
function logRerankingAttempt(mode, strategy, config) {
|
|
149
|
+
console.log(`🔧 Creating reranker: ${strategy} (mode: ${mode})`);
|
|
150
|
+
if (config.model) {
|
|
151
|
+
console.log(` Model: ${config.model}`);
|
|
152
|
+
}
|
|
153
|
+
if (config.weights) {
|
|
154
|
+
console.log(` Weights: ${JSON.stringify(config.weights)}`);
|
|
155
|
+
}
|
|
156
|
+
if (config.fallback && config.fallback !== 'disabled') {
|
|
157
|
+
console.log(` Fallback: ${config.fallback}`);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Log comprehensive reranking error details
|
|
162
|
+
*/
|
|
163
|
+
function logRerankingError(error, duration) {
|
|
164
|
+
console.error('❌ Reranking Strategy Creation Failed');
|
|
165
|
+
console.error(` Strategy: ${error.strategy}`);
|
|
166
|
+
console.error(` Mode: ${error.mode}`);
|
|
167
|
+
console.error(` Error Code: ${error.errorCode}`);
|
|
168
|
+
console.error(` Duration: ${duration}ms`);
|
|
169
|
+
console.error(` Message: ${error.message}`);
|
|
170
|
+
// Provide troubleshooting guidance based on error type
|
|
171
|
+
switch (error.errorCode) {
|
|
172
|
+
case 'UNSUPPORTED_MODE':
|
|
173
|
+
console.error('💡 Suggestion: Use a strategy supported by the current mode');
|
|
174
|
+
break;
|
|
175
|
+
case 'UNKNOWN_STRATEGY':
|
|
176
|
+
console.error('💡 Suggestion: Check strategy name spelling and supported strategies');
|
|
177
|
+
break;
|
|
178
|
+
case 'CREATION_FAILED':
|
|
179
|
+
console.error('💡 Suggestion: Check model availability and network connectivity');
|
|
180
|
+
break;
|
|
181
|
+
case 'CREATION_ERROR':
|
|
182
|
+
console.error('💡 Suggestion: Check logs above for specific model loading errors');
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Wrap rerank function with error recovery to ensure search operations continue
|
|
188
|
+
*/
|
|
189
|
+
function wrapRerankFunctionWithErrorRecovery(reranker, strategy, mode) {
|
|
190
|
+
return async (query, results, contentType) => {
|
|
191
|
+
try {
|
|
192
|
+
const startTime = Date.now();
|
|
193
|
+
const rerankedResults = await reranker(query, results, contentType);
|
|
194
|
+
const duration = Date.now() - startTime;
|
|
195
|
+
console.log(`✅ ${strategy} reranking completed successfully (${duration}ms, ${results.length} → ${rerankedResults.length} results)`);
|
|
196
|
+
return rerankedResults;
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
200
|
+
console.warn(`⚠️ ${strategy} reranking failed during execution: ${errorMessage}. ` +
|
|
201
|
+
`Falling back to vector similarity scores.`);
|
|
202
|
+
// Log detailed error information for debugging
|
|
203
|
+
console.error('Reranking execution error details:', {
|
|
204
|
+
strategy,
|
|
205
|
+
mode,
|
|
206
|
+
query: query.substring(0, 100) + (query.length > 100 ? '...' : ''),
|
|
207
|
+
resultCount: results.length,
|
|
208
|
+
contentType,
|
|
209
|
+
error: errorMessage
|
|
210
|
+
});
|
|
211
|
+
// Return original results with vector similarity scores
|
|
212
|
+
// This ensures search operations continue even when reranking fails
|
|
213
|
+
return results.map(result => ({
|
|
214
|
+
...result,
|
|
215
|
+
metadata: {
|
|
216
|
+
...result.metadata,
|
|
217
|
+
rerankingFailed: true,
|
|
218
|
+
rerankingError: errorMessage,
|
|
219
|
+
rerankingStrategy: strategy,
|
|
220
|
+
fallbackToVectorSimilarity: true
|
|
221
|
+
}
|
|
222
|
+
}));
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Hybrid reranking strategy removed in Phase 3 - throwing error for backward compatibility
|
|
228
|
+
*/
|
|
229
|
+
function createHybridRerankFunction(config) {
|
|
230
|
+
throw new RerankingStrategyError('hybrid', 'multimodal', 'Hybrid reranking strategy has been removed in this version. Use text-derived instead.', 'STRATEGY_REMOVED');
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Create reranker with automatic mode detection
|
|
234
|
+
*
|
|
235
|
+
* This is a convenience function that automatically detects the appropriate
|
|
236
|
+
* default strategy based on mode and creates the reranker.
|
|
237
|
+
*
|
|
238
|
+
* @param mode - Operating mode ('text' or 'multimodal')
|
|
239
|
+
* @param config - Optional configuration override
|
|
240
|
+
* @returns RerankFunction or undefined if reranking is disabled
|
|
241
|
+
*/
|
|
242
|
+
export function createDefaultReranker(mode, config) {
|
|
243
|
+
const defaultConfig = getDefaultRerankingConfig(mode);
|
|
244
|
+
const strategy = config?.strategy || defaultConfig.strategy;
|
|
245
|
+
console.log(`Creating default reranker for ${mode} mode with ${strategy} strategy`);
|
|
246
|
+
return createReranker(mode, strategy, config);
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Check if reranking is available for a given mode and strategy
|
|
250
|
+
*
|
|
251
|
+
* This function can be used to test if a reranking strategy can be created
|
|
252
|
+
* without actually creating it.
|
|
253
|
+
*
|
|
254
|
+
* @param mode - Operating mode ('text' or 'multimodal')
|
|
255
|
+
* @param strategy - Reranking strategy to test
|
|
256
|
+
* @returns Promise<boolean> indicating if the strategy is available
|
|
257
|
+
*/
|
|
258
|
+
export async function isRerankingAvailable(mode, strategy) {
|
|
259
|
+
try {
|
|
260
|
+
if (!strategy) {
|
|
261
|
+
const defaultConfig = getDefaultRerankingConfig(mode);
|
|
262
|
+
strategy = defaultConfig.strategy;
|
|
263
|
+
}
|
|
264
|
+
if (strategy === 'disabled') {
|
|
265
|
+
return false;
|
|
266
|
+
}
|
|
267
|
+
if (!isStrategySupported(strategy, mode)) {
|
|
268
|
+
return false;
|
|
269
|
+
}
|
|
270
|
+
// Try to create the reranker to test availability
|
|
271
|
+
const reranker = createReranker(mode, strategy);
|
|
272
|
+
return reranker !== undefined;
|
|
273
|
+
}
|
|
274
|
+
catch (error) {
|
|
275
|
+
console.warn(`Reranking availability check failed for ${strategy} in ${mode} mode: ` +
|
|
276
|
+
`${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
277
|
+
return false;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Get comprehensive information about available reranking strategies for a mode
|
|
282
|
+
*
|
|
283
|
+
* @param mode - Operating mode ('text' or 'multimodal')
|
|
284
|
+
* @returns Object with strategy information and availability
|
|
285
|
+
*/
|
|
286
|
+
export async function getRerankingInfo(mode) {
|
|
287
|
+
const supportedStrategies = getSupportedStrategies(mode);
|
|
288
|
+
const defaultConfig = getDefaultRerankingConfig(mode);
|
|
289
|
+
const strategyInfo = await Promise.all(supportedStrategies.map(async (strategy) => {
|
|
290
|
+
const startTime = Date.now();
|
|
291
|
+
let available = false;
|
|
292
|
+
let error;
|
|
293
|
+
try {
|
|
294
|
+
available = await isRerankingAvailable(mode, strategy);
|
|
295
|
+
}
|
|
296
|
+
catch (e) {
|
|
297
|
+
error = e instanceof Error ? e.message : 'Unknown error';
|
|
298
|
+
}
|
|
299
|
+
const duration = Date.now() - startTime;
|
|
300
|
+
return {
|
|
301
|
+
strategy,
|
|
302
|
+
supported: true,
|
|
303
|
+
available,
|
|
304
|
+
isDefault: strategy === defaultConfig.strategy,
|
|
305
|
+
checkDuration: duration,
|
|
306
|
+
error
|
|
307
|
+
};
|
|
308
|
+
}));
|
|
309
|
+
return {
|
|
310
|
+
mode,
|
|
311
|
+
defaultStrategy: defaultConfig.strategy,
|
|
312
|
+
strategies: strategyInfo,
|
|
313
|
+
hasAvailableStrategies: strategyInfo.some(info => info.available)
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Test reranking system health and error recovery
|
|
318
|
+
*
|
|
319
|
+
* @param mode - Operating mode to test
|
|
320
|
+
* @returns Comprehensive health report
|
|
321
|
+
*/
|
|
322
|
+
export async function testRerankingHealth(mode) {
|
|
323
|
+
console.log(`🔍 Testing reranking system health for ${mode} mode`);
|
|
324
|
+
const supportedStrategies = getSupportedStrategies(mode);
|
|
325
|
+
const defaultConfig = getDefaultRerankingConfig(mode);
|
|
326
|
+
const strategyTests = [];
|
|
327
|
+
let defaultStrategyWorking = false;
|
|
328
|
+
let anyStrategyWorking = false;
|
|
329
|
+
// Test each supported strategy
|
|
330
|
+
for (const strategy of supportedStrategies) {
|
|
331
|
+
if (strategy === 'disabled')
|
|
332
|
+
continue;
|
|
333
|
+
const startTime = Date.now();
|
|
334
|
+
let success = false;
|
|
335
|
+
let error;
|
|
336
|
+
try {
|
|
337
|
+
const reranker = createReranker(mode, strategy);
|
|
338
|
+
success = reranker !== undefined;
|
|
339
|
+
if (success && strategy === defaultConfig.strategy) {
|
|
340
|
+
defaultStrategyWorking = true;
|
|
341
|
+
}
|
|
342
|
+
if (success) {
|
|
343
|
+
anyStrategyWorking = true;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
catch (e) {
|
|
347
|
+
error = e instanceof Error ? e.message : 'Unknown error';
|
|
348
|
+
}
|
|
349
|
+
const duration = Date.now() - startTime;
|
|
350
|
+
strategyTests.push({ strategy, success, duration, error });
|
|
351
|
+
}
|
|
352
|
+
// Fallback system removed - no longer testing fallback functionality
|
|
353
|
+
let fallbackSystemWorking = true; // Always true since we don't use fallbacks anymore
|
|
354
|
+
// Determine overall health
|
|
355
|
+
let overallHealth;
|
|
356
|
+
if (defaultStrategyWorking) {
|
|
357
|
+
overallHealth = 'healthy';
|
|
358
|
+
}
|
|
359
|
+
else if (anyStrategyWorking || fallbackSystemWorking) {
|
|
360
|
+
overallHealth = 'degraded';
|
|
361
|
+
}
|
|
362
|
+
else {
|
|
363
|
+
overallHealth = 'failed';
|
|
364
|
+
}
|
|
365
|
+
// Generate recommendations
|
|
366
|
+
const recommendations = [];
|
|
367
|
+
if (!defaultStrategyWorking) {
|
|
368
|
+
recommendations.push(`Default strategy '${defaultConfig.strategy}' is not working. Check model availability.`);
|
|
369
|
+
}
|
|
370
|
+
if (!anyStrategyWorking) {
|
|
371
|
+
recommendations.push('No reranking strategies are working. Check network connectivity and model availability.');
|
|
372
|
+
}
|
|
373
|
+
else if (!fallbackSystemWorking) {
|
|
374
|
+
recommendations.push('Fallback system is not working properly. Manual intervention may be required.');
|
|
375
|
+
}
|
|
376
|
+
if (overallHealth === 'degraded') {
|
|
377
|
+
recommendations.push('System is running in degraded mode. Some reranking strategies are unavailable.');
|
|
378
|
+
}
|
|
379
|
+
if (overallHealth === 'healthy') {
|
|
380
|
+
recommendations.push('Reranking system is healthy and all strategies are working properly.');
|
|
381
|
+
}
|
|
382
|
+
console.log(`🏥 Health check completed: ${overallHealth} (${strategyTests.filter(t => t.success).length}/${strategyTests.length} strategies working)`);
|
|
383
|
+
return {
|
|
384
|
+
mode,
|
|
385
|
+
overallHealth,
|
|
386
|
+
defaultStrategyWorking,
|
|
387
|
+
fallbackSystemWorking,
|
|
388
|
+
strategyTests,
|
|
389
|
+
recommendations
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Get reranking system statistics and performance metrics
|
|
394
|
+
*/
|
|
395
|
+
export function getRerankingStats() {
|
|
396
|
+
// This would be implemented with actual metrics collection in a real system
|
|
397
|
+
// For now, return placeholder data
|
|
398
|
+
return {
|
|
399
|
+
totalCreationAttempts: 0,
|
|
400
|
+
successfulCreations: 0,
|
|
401
|
+
failedCreations: 0,
|
|
402
|
+
fallbacksTriggered: 0,
|
|
403
|
+
strategiesUsed: {
|
|
404
|
+
'cross-encoder': 0,
|
|
405
|
+
'text-derived': 0,
|
|
406
|
+
'disabled': 0
|
|
407
|
+
}
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
//# sourceMappingURL=reranking-factory.js.map
|