rag-lite-ts 2.1.1 → 2.3.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/README.md +88 -5
- package/dist/{cli → cjs/cli}/indexer.js +73 -15
- package/dist/cjs/cli/ui-server.d.ts +5 -0
- package/dist/cjs/cli/ui-server.js +152 -0
- package/dist/{cli.js → cjs/cli.js} +25 -6
- package/dist/{core → cjs/core}/binary-index-format.js +6 -3
- package/dist/{core → cjs/core}/db.d.ts +56 -0
- package/dist/{core → cjs/core}/db.js +105 -0
- package/dist/{core → cjs/core}/ingestion.js +3 -0
- package/dist/cjs/core/knowledge-base-manager.d.ts +109 -0
- package/dist/cjs/core/knowledge-base-manager.js +256 -0
- package/dist/{core → cjs/core}/model-validator.js +1 -1
- package/dist/{core → cjs/core}/search-pipeline.js +1 -1
- package/dist/{core → cjs/core}/search.js +1 -1
- package/dist/cjs/core/vector-index-messages.d.ts +52 -0
- package/dist/cjs/core/vector-index-messages.js +5 -0
- package/dist/cjs/core/vector-index-worker.d.ts +6 -0
- package/dist/cjs/core/vector-index-worker.js +304 -0
- package/dist/cjs/core/vector-index.d.ts +107 -0
- package/dist/cjs/core/vector-index.js +344 -0
- package/dist/{factories → cjs/factories}/ingestion-factory.js +3 -7
- package/dist/{factories → cjs/factories}/search-factory.js +11 -0
- package/dist/{index-manager.d.ts → cjs/index-manager.d.ts} +23 -3
- package/dist/{index-manager.js → cjs/index-manager.js} +84 -15
- package/dist/{index.d.ts → cjs/index.d.ts} +2 -1
- package/dist/{index.js → cjs/index.js} +3 -1
- 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 +529 -0
- package/dist/esm/cli/search.d.ts +7 -0
- package/dist/esm/cli/search.js +332 -0
- package/dist/esm/cli/ui-server.d.ts +5 -0
- package/dist/esm/cli/ui-server.js +152 -0
- package/dist/esm/cli.d.ts +3 -0
- package/dist/esm/cli.js +548 -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 +294 -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 +269 -0
- package/dist/esm/core/db.js +1000 -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 +904 -0
- package/dist/esm/core/interfaces.d.ts +408 -0
- package/dist/esm/core/interfaces.js +106 -0
- package/dist/esm/core/knowledge-base-manager.d.ts +109 -0
- package/dist/esm/core/knowledge-base-manager.js +256 -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-messages.d.ts +52 -0
- package/dist/esm/core/vector-index-messages.js +5 -0
- package/dist/esm/core/vector-index-worker.d.ts +6 -0
- package/dist/esm/core/vector-index-worker.js +304 -0
- package/dist/esm/core/vector-index.d.ts +107 -0
- package/dist/esm/core/vector-index.js +344 -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 +473 -0
- package/dist/esm/factories/search-factory.d.ts +154 -0
- package/dist/esm/factories/search-factory.js +355 -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 +136 -0
- package/dist/esm/index-manager.js +667 -0
- package/dist/esm/index.d.ts +76 -0
- package/dist/esm/index.js +112 -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 +39 -14
- package/dist/core/vector-index.d.ts +0 -72
- package/dist/core/vector-index.js +0 -331
- /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}/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/{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}/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}/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}/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.d.ts +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/{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}/search-factory.d.ts +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/{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,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CORE MODULE — Mode-Model Compatibility Validator
|
|
3
|
+
* Validates compatibility between processing modes and embedding models
|
|
4
|
+
* Provides clear error messages for incompatible configurations
|
|
5
|
+
*/
|
|
6
|
+
import { ModelRegistry } from './model-registry.js';
|
|
7
|
+
import { createError } from './error-handler.js';
|
|
8
|
+
// =============================================================================
|
|
9
|
+
// MODE-MODEL COMPATIBILITY RULES
|
|
10
|
+
// =============================================================================
|
|
11
|
+
/**
|
|
12
|
+
* Compatibility matrix defining which model types work with which modes
|
|
13
|
+
*/
|
|
14
|
+
const MODE_MODEL_COMPATIBILITY = {
|
|
15
|
+
'text': ['sentence-transformer', 'clip'], // Text mode can use both (CLIP converts images to text)
|
|
16
|
+
'multimodal': ['clip'] // Multimodal mode requires CLIP for unified embedding space
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Recommended models for each mode
|
|
20
|
+
*/
|
|
21
|
+
const RECOMMENDED_MODELS = {
|
|
22
|
+
'text': [
|
|
23
|
+
'sentence-transformers/all-MiniLM-L6-v2', // Fast, efficient
|
|
24
|
+
'Xenova/all-mpnet-base-v2' // Higher quality
|
|
25
|
+
],
|
|
26
|
+
'multimodal': [
|
|
27
|
+
'Xenova/clip-vit-base-patch32', // Standard CLIP model
|
|
28
|
+
'Xenova/clip-vit-base-patch16' // Higher resolution CLIP
|
|
29
|
+
]
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Validate compatibility between a mode and model
|
|
33
|
+
*
|
|
34
|
+
* @param mode - Processing mode (text or multimodal)
|
|
35
|
+
* @param modelName - Name of the embedding model
|
|
36
|
+
* @returns Validation result with errors and suggestions
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const result = validateModeModelCompatibility('multimodal', 'sentence-transformers/all-MiniLM-L6-v2');
|
|
41
|
+
* if (!result.isValid) {
|
|
42
|
+
* console.error('Incompatible configuration:', result.errors);
|
|
43
|
+
* console.log('Suggestions:', result.suggestions);
|
|
44
|
+
* }
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export function validateModeModelCompatibility(mode, modelName) {
|
|
48
|
+
const errors = [];
|
|
49
|
+
const warnings = [];
|
|
50
|
+
const suggestions = [];
|
|
51
|
+
// Step 1: Validate that the model exists in the registry
|
|
52
|
+
const modelInfo = ModelRegistry.getModelInfo(modelName);
|
|
53
|
+
if (!modelInfo) {
|
|
54
|
+
errors.push(`Model '${modelName}' is not supported`);
|
|
55
|
+
suggestions.push(`Available models: ${ModelRegistry.getSupportedModels().join(', ')}`);
|
|
56
|
+
return {
|
|
57
|
+
isValid: false,
|
|
58
|
+
errors,
|
|
59
|
+
warnings,
|
|
60
|
+
suggestions,
|
|
61
|
+
recommendedModels: RECOMMENDED_MODELS[mode]
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
// Step 2: Validate mode-model type compatibility
|
|
65
|
+
const compatibleModelTypes = MODE_MODEL_COMPATIBILITY[mode];
|
|
66
|
+
if (!compatibleModelTypes.includes(modelInfo.type)) {
|
|
67
|
+
errors.push(`Model '${modelName}' (type: ${modelInfo.type}) is not compatible with ${mode} mode`);
|
|
68
|
+
// Provide specific guidance based on the incompatibility
|
|
69
|
+
if (mode === 'multimodal' && modelInfo.type === 'sentence-transformer') {
|
|
70
|
+
suggestions.push(`Multimodal mode requires CLIP models for unified text-image embedding space. ` +
|
|
71
|
+
`Sentence-transformer models only support text.`);
|
|
72
|
+
suggestions.push(`Recommended CLIP models: ${RECOMMENDED_MODELS.multimodal.join(', ')}`);
|
|
73
|
+
}
|
|
74
|
+
else if (mode === 'text' && modelInfo.type === 'clip') {
|
|
75
|
+
// This is actually valid, but provide guidance
|
|
76
|
+
warnings.push(`Using CLIP model '${modelName}' in text mode. Images will be converted to text descriptions. ` +
|
|
77
|
+
`For text-only content, sentence-transformer models may be more efficient.`);
|
|
78
|
+
suggestions.push(`For text-only: ${RECOMMENDED_MODELS.text.join(', ')}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Step 3: Check content type support
|
|
82
|
+
const requiredContentTypes = mode === 'multimodal' ? ['text', 'image'] : ['text'];
|
|
83
|
+
const unsupportedTypes = requiredContentTypes.filter(type => !modelInfo.supportedContentTypes.includes(type));
|
|
84
|
+
if (unsupportedTypes.length > 0) {
|
|
85
|
+
errors.push(`Model '${modelName}' does not support required content types for ${mode} mode: ${unsupportedTypes.join(', ')}`);
|
|
86
|
+
suggestions.push(`Required content types: ${requiredContentTypes.join(', ')}`);
|
|
87
|
+
}
|
|
88
|
+
// Step 4: Provide recommendations if everything is valid
|
|
89
|
+
if (errors.length === 0) {
|
|
90
|
+
const recommendedModels = RECOMMENDED_MODELS[mode];
|
|
91
|
+
if (!recommendedModels.includes(modelName)) {
|
|
92
|
+
suggestions.push(`Consider using recommended models for optimal performance: ${recommendedModels.join(', ')}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
isValid: errors.length === 0,
|
|
97
|
+
errors,
|
|
98
|
+
warnings,
|
|
99
|
+
suggestions,
|
|
100
|
+
recommendedModels: RECOMMENDED_MODELS[mode]
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Validate mode-model compatibility and throw clear error if invalid
|
|
105
|
+
*
|
|
106
|
+
* @param mode - Processing mode
|
|
107
|
+
* @param modelName - Name of the embedding model
|
|
108
|
+
* @throws {Error} If the combination is invalid, with actionable error message
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```typescript
|
|
112
|
+
* try {
|
|
113
|
+
* validateModeModelCompatibilityOrThrow('multimodal', 'sentence-transformers/all-MiniLM-L6-v2');
|
|
114
|
+
* } catch (error) {
|
|
115
|
+
* console.error('Configuration error:', error.message);
|
|
116
|
+
* }
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
export function validateModeModelCompatibilityOrThrow(mode, modelName) {
|
|
120
|
+
const result = validateModeModelCompatibility(mode, modelName);
|
|
121
|
+
if (!result.isValid) {
|
|
122
|
+
const errorMessage = [
|
|
123
|
+
`Invalid configuration: ${mode} mode with model '${modelName}'`,
|
|
124
|
+
'',
|
|
125
|
+
'Errors:',
|
|
126
|
+
...result.errors.map(error => ` • ${error}`),
|
|
127
|
+
''
|
|
128
|
+
];
|
|
129
|
+
if (result.suggestions.length > 0) {
|
|
130
|
+
errorMessage.push('Suggestions:');
|
|
131
|
+
errorMessage.push(...result.suggestions.map(suggestion => ` • ${suggestion}`));
|
|
132
|
+
errorMessage.push('');
|
|
133
|
+
}
|
|
134
|
+
if (result.recommendedModels && result.recommendedModels.length > 0) {
|
|
135
|
+
errorMessage.push(`Recommended models for ${mode} mode:`);
|
|
136
|
+
errorMessage.push(...result.recommendedModels.map(model => ` • ${model}`));
|
|
137
|
+
}
|
|
138
|
+
throw createError.validation(errorMessage.join('\n'));
|
|
139
|
+
}
|
|
140
|
+
// Log warnings if any
|
|
141
|
+
if (result.warnings.length > 0) {
|
|
142
|
+
console.warn(`⚠️ Configuration warnings for ${mode} mode with '${modelName}':`);
|
|
143
|
+
result.warnings.forEach(warning => console.warn(` • ${warning}`));
|
|
144
|
+
}
|
|
145
|
+
// Log suggestions if any
|
|
146
|
+
if (result.suggestions.length > 0) {
|
|
147
|
+
console.info(`💡 Suggestions for ${mode} mode with '${modelName}':`);
|
|
148
|
+
result.suggestions.forEach(suggestion => console.info(` • ${suggestion}`));
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Get recommended models for a specific mode
|
|
153
|
+
*
|
|
154
|
+
* @param mode - Processing mode
|
|
155
|
+
* @returns Array of recommended model names
|
|
156
|
+
*
|
|
157
|
+
* @example
|
|
158
|
+
* ```typescript
|
|
159
|
+
* const textModels = getRecommendedModelsForMode('text');
|
|
160
|
+
* const multimodalModels = getRecommendedModelsForMode('multimodal');
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
export function getRecommendedModelsForMode(mode) {
|
|
164
|
+
return [...RECOMMENDED_MODELS[mode]];
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Check if a model is compatible with a mode (without detailed validation)
|
|
168
|
+
*
|
|
169
|
+
* @param mode - Processing mode
|
|
170
|
+
* @param modelName - Name of the embedding model
|
|
171
|
+
* @returns True if compatible, false otherwise
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* ```typescript
|
|
175
|
+
* if (isModeModelCompatible('multimodal', 'Xenova/clip-vit-base-patch32')) {
|
|
176
|
+
* // Proceed with configuration
|
|
177
|
+
* }
|
|
178
|
+
* ```
|
|
179
|
+
*/
|
|
180
|
+
export function isModeModelCompatible(mode, modelName) {
|
|
181
|
+
const result = validateModeModelCompatibility(mode, modelName);
|
|
182
|
+
return result.isValid;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Get all compatible models for a specific mode
|
|
186
|
+
*
|
|
187
|
+
* @param mode - Processing mode
|
|
188
|
+
* @returns Array of compatible model names
|
|
189
|
+
*
|
|
190
|
+
* @example
|
|
191
|
+
* ```typescript
|
|
192
|
+
* const compatibleModels = getCompatibleModelsForMode('multimodal');
|
|
193
|
+
* console.log('Compatible models:', compatibleModels);
|
|
194
|
+
* ```
|
|
195
|
+
*/
|
|
196
|
+
export function getCompatibleModelsForMode(mode) {
|
|
197
|
+
const compatibleModelTypes = MODE_MODEL_COMPATIBILITY[mode];
|
|
198
|
+
return ModelRegistry.getSupportedModels().filter(modelName => {
|
|
199
|
+
const modelInfo = ModelRegistry.getModelInfo(modelName);
|
|
200
|
+
return modelInfo && compatibleModelTypes.includes(modelInfo.type);
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=mode-model-validator.js.map
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CORE MODULE — Model Registry for Chameleon Architecture
|
|
3
|
+
* Centralized registry of supported models with validation and compatibility checking
|
|
4
|
+
* Model-agnostic registry supporting both text and multimodal models
|
|
5
|
+
*/
|
|
6
|
+
import type { ModelInfo, ModelType, ModelValidationResult } from './universal-embedder.js';
|
|
7
|
+
/**
|
|
8
|
+
* Registry of supported models with their metadata and capabilities
|
|
9
|
+
* This registry defines all models compatible with the Chameleon architecture
|
|
10
|
+
*/
|
|
11
|
+
export declare const SUPPORTED_MODELS: Record<string, ModelInfo>;
|
|
12
|
+
/**
|
|
13
|
+
* Model registry class providing validation and model information services
|
|
14
|
+
* Enhanced with comprehensive validation and compatibility checking
|
|
15
|
+
*/
|
|
16
|
+
export declare class ModelRegistry {
|
|
17
|
+
/**
|
|
18
|
+
* Gets model information for a given model name
|
|
19
|
+
* @param modelName - Name of the model
|
|
20
|
+
* @returns Model information or null if not supported
|
|
21
|
+
*/
|
|
22
|
+
static getModelInfo(modelName: string): ModelInfo | null;
|
|
23
|
+
/**
|
|
24
|
+
* Validates a model name and returns compatibility information
|
|
25
|
+
* @param modelName - Name of the model to validate
|
|
26
|
+
* @returns Model validation result with errors, warnings, and suggestions
|
|
27
|
+
*/
|
|
28
|
+
static validateModel(modelName: string): ModelValidationResult;
|
|
29
|
+
/**
|
|
30
|
+
* Validate model requirements and add warnings/suggestions
|
|
31
|
+
* @private
|
|
32
|
+
*/
|
|
33
|
+
private static validateModelRequirements;
|
|
34
|
+
/**
|
|
35
|
+
* Validate model capabilities and add warnings/suggestions
|
|
36
|
+
* @private
|
|
37
|
+
*/
|
|
38
|
+
private static validateModelCapabilities;
|
|
39
|
+
/**
|
|
40
|
+
* Lists all supported models, optionally filtered by type
|
|
41
|
+
* @param modelType - Optional model type filter
|
|
42
|
+
* @returns Array of supported model names
|
|
43
|
+
*/
|
|
44
|
+
static getSupportedModels(modelType?: ModelType): string[];
|
|
45
|
+
/**
|
|
46
|
+
* Gets models that support a specific content type
|
|
47
|
+
* @param contentType - Content type to filter by
|
|
48
|
+
* @returns Array of model names that support the content type
|
|
49
|
+
*/
|
|
50
|
+
static getModelsByContentType(contentType: string): string[];
|
|
51
|
+
/**
|
|
52
|
+
* Gets the default model for a given model type
|
|
53
|
+
* @param modelType - Model type to get default for
|
|
54
|
+
* @returns Default model name or null if no default available
|
|
55
|
+
*/
|
|
56
|
+
static getDefaultModel(modelType: ModelType): string | null;
|
|
57
|
+
/**
|
|
58
|
+
* Checks if a model supports a specific content type
|
|
59
|
+
* @param modelName - Name of the model
|
|
60
|
+
* @param contentType - Content type to check
|
|
61
|
+
* @returns True if the model supports the content type
|
|
62
|
+
*/
|
|
63
|
+
static supportsContentType(modelName: string, contentType: string): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Gets models similar to the given model name (for suggestions)
|
|
66
|
+
* @param modelName - Model name to find similar models for
|
|
67
|
+
* @returns Array of similar model names
|
|
68
|
+
*/
|
|
69
|
+
private static getSimilarModels;
|
|
70
|
+
/**
|
|
71
|
+
* Validates model compatibility with system requirements
|
|
72
|
+
* @param modelName - Name of the model to validate
|
|
73
|
+
* @param systemCapabilities - System capabilities to check against
|
|
74
|
+
* @returns Validation result with compatibility information
|
|
75
|
+
*/
|
|
76
|
+
static validateSystemCompatibility(modelName: string, systemCapabilities: {
|
|
77
|
+
availableMemory?: number;
|
|
78
|
+
platform?: string;
|
|
79
|
+
transformersJsVersion?: string;
|
|
80
|
+
}): ModelValidationResult;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Gets the model type for a given model name
|
|
84
|
+
* @param modelName - Name of the model
|
|
85
|
+
* @returns Model type or null if model not supported
|
|
86
|
+
*/
|
|
87
|
+
export declare function getModelType(modelName: string): ModelType | null;
|
|
88
|
+
/**
|
|
89
|
+
* Gets the dimensions for a given model name
|
|
90
|
+
* @param modelName - Name of the model
|
|
91
|
+
* @returns Number of dimensions or null if model not supported
|
|
92
|
+
*/
|
|
93
|
+
export declare function getModelDimensions(modelName: string): number | null;
|
|
94
|
+
/**
|
|
95
|
+
* Checks if a model is a text-only model
|
|
96
|
+
* @param modelName - Name of the model
|
|
97
|
+
* @returns True if the model only supports text
|
|
98
|
+
*/
|
|
99
|
+
export declare function isTextOnlyModel(modelName: string): boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Checks if a model is a multimodal model
|
|
102
|
+
* @param modelName - Name of the model
|
|
103
|
+
* @returns True if the model supports multiple content types
|
|
104
|
+
*/
|
|
105
|
+
export declare function isMultimodalModel(modelName: string): boolean;
|
|
106
|
+
/**
|
|
107
|
+
* Gets recommended batch size for a model
|
|
108
|
+
* @param modelName - Name of the model
|
|
109
|
+
* @returns Recommended batch size or default value
|
|
110
|
+
*/
|
|
111
|
+
export declare function getRecommendedBatchSize(modelName: string): number;
|
|
112
|
+
/**
|
|
113
|
+
* Default model names for different types
|
|
114
|
+
*/
|
|
115
|
+
export declare const DEFAULT_MODELS: Record<ModelType, string>;
|
|
116
|
+
//# sourceMappingURL=model-registry.d.ts.map
|