UNPKG

@ever_cheng/memory-task-mcp

Version:

Memory and task management MCP Server

127 lines (126 loc) 2.98 kB
/** * Embedding Service for MemTask * * Provides multilingual-e5-large embedding generation with caching and batch processing. * Optimized for semantic search and similarity calculations. */ import { Disposable } from './resource_manager'; /** * Embedding Configuration */ export interface EmbeddingConfig { modelName: string; dimension: number; maxSequenceLength: number; batchSize: number; device: 'cpu' | 'gpu'; quantized: boolean; cacheEnabled: boolean; cacheSize: number; cacheTtlMs: number; } /** * Default embedding configuration for multilingual-e5-base * 使用 models 中可用的模型 */ export declare const DEFAULT_EMBEDDING_CONFIG: EmbeddingConfig; /** * Embedding Result Interface */ export interface EmbeddingResult { embedding: number[]; text: string; model: string; dimension: number; processingTime: number; } /** * Batch Embedding Result Interface */ export interface BatchEmbeddingResult { embeddings: number[][]; texts: string[]; model: string; dimension: number; totalProcessingTime: number; averageProcessingTime: number; } /** * Embedding Service Class */ export declare class EmbeddingService implements Disposable { private model; private config; private cache; private initialized; private initializationPromise; constructor(config?: EmbeddingConfig); /** * 初始化 embedding 模型 */ initialize(): Promise<void>; private _initializeModel; /** * 生成單個文本的 embedding */ generateEmbedding(text: string): Promise<EmbeddingResult>; /** * 批量生成 embeddings */ batchGenerateEmbeddings(texts: string[]): Promise<BatchEmbeddingResult>; /** * 獲取本地可用的模型列表 */ static getAvailableModels(): string[]; /** * 計算兩個 embedding 之間的餘弦相似度 */ static cosineSimilarity(a: number[], b: number[]): number; /** * 為 E5 模型添加適當的前綴 */ private addE5Prefix; /** * 截斷過長的文本 */ private truncateText; /** * 將數組分批 */ private createBatches; /** * 更新配置 */ updateConfig(newConfig: Partial<EmbeddingConfig>): void; /** * 獲取當前配置 */ getConfig(): EmbeddingConfig; /** * 獲取模型信息 */ getModelInfo(): { modelName: string; dimension: number; initialized: boolean; cacheStats?: any; }; /** * 清理資源 (實現 Disposable 介面) */ dispose(): Promise<void>; /** * 清理資源 (向後兼容) * @deprecated Use dispose() instead */ cleanup(): Promise<void>; /** * 健康檢查 */ healthCheck(): Promise<{ status: 'healthy' | 'unhealthy'; initialized: boolean; modelLoaded: boolean; error?: string; }>; }