@ever_cheng/memory-task-mcp
Version:
Memory and task management MCP Server
127 lines (126 loc) • 2.98 kB
TypeScript
/**
* 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;
}>;
}