| |
| |
| |
| |
|
|
| export interface ModelConfig { |
| id: string; |
| name: string; |
| hfModel: string; |
| size: number; |
| priority: number; |
| required: boolean; |
| task: 'feature-extraction' | 'text-classification' | 'text2text-generation' | 'token-classification'; |
| } |
|
|
| export const MODEL_CONFIGS: ModelConfig[] = [ |
| { |
| id: 'embeddings', |
| name: 'all-MiniLM-L6-v2', |
| hfModel: 'Xenova/all-MiniLM-L6-v2', |
| size: 23_000_000, |
| priority: 1, |
| required: true, |
| task: 'feature-extraction', |
| }, |
| { |
| id: 'sentiment', |
| name: 'DistilBERT-SST2', |
| hfModel: 'Xenova/distilbert-base-uncased-finetuned-sst-2-english', |
| size: 65_000_000, |
| priority: 2, |
| required: false, |
| task: 'text-classification', |
| }, |
| { |
| id: 'summarization', |
| name: 'Flan-T5-base', |
| hfModel: 'Xenova/flan-t5-base', |
| size: 250_000_000, |
| priority: 3, |
| required: false, |
| task: 'text2text-generation', |
| }, |
| { |
| id: 'summarization-beta', |
| name: 'Flan-T5-small', |
| hfModel: 'Xenova/flan-t5-small', |
| size: 60_000_000, |
| priority: 3, |
| required: false, |
| task: 'text2text-generation', |
| }, |
| { |
| id: 'ner', |
| name: 'BERT-NER', |
| hfModel: 'Xenova/bert-base-NER', |
| size: 65_000_000, |
| priority: 4, |
| required: false, |
| task: 'token-classification', |
| }, |
| ]; |
|
|
| export const ML_FEATURE_FLAGS = { |
| semanticClustering: true, |
| mlSentiment: true, |
| summarization: true, |
| mlNER: true, |
| insightsPanel: true, |
| }; |
|
|
| export const ML_THRESHOLDS = { |
| semanticClusterThreshold: 0.75, |
| minClustersForML: 5, |
| maxTextsPerBatch: 20, |
| modelLoadTimeoutMs: 600_000, |
| inferenceTimeoutMs: 120_000, |
| memoryBudgetMB: 200, |
| }; |
|
|
| export function getModelConfig(modelId: string): ModelConfig | undefined { |
| return MODEL_CONFIGS.find(m => m.id === modelId); |
| } |
|
|
| export function getRequiredModels(): ModelConfig[] { |
| return MODEL_CONFIGS.filter(m => m.required); |
| } |
|
|
| export function getModelsByPriority(): ModelConfig[] { |
| return [...MODEL_CONFIGS].sort((a, b) => a.priority - b.priority); |
| } |
|
|