/** * Local Offline Embeddings Service * * Provides 100% offline text embeddings using Transformers.js (WASM-based). * No external API calls. Model is downloaded once and cached locally. * * @module @aitytech/agentkits-memory/embeddings */ import type { EmbeddingGenerator } from '../types.js'; /** * Embedding provider type */ export type EmbeddingProvider = 'transformers' | 'mock'; /** * Local embeddings configuration */ export interface LocalEmbeddingsConfig { /** Provider to use (default: 'transformers') */ provider?: EmbeddingProvider; /** * Model ID for Transformers.js * Default: 'Xenova/multilingual-e5-small' (100+ languages, optimized for retrieval) * Alternative: 'Xenova/paraphrase-multilingual-MiniLM-L12-v2' (50+ languages) * Alternative: 'Xenova/all-MiniLM-L6-v2' (English only, faster) */ modelId?: string; /** Vector dimensions (default: 384) */ dimensions?: number; /** Enable in-memory cache for repeated texts */ cacheEnabled?: boolean; /** Maximum cache size (default: 1000) */ maxCacheSize?: number; /** Show progress during model download */ showProgress?: boolean; /** Custom cache directory for models */ cacheDir?: string; } /** * Embedding result with metadata */ export interface EmbeddingResult { /** The embedding vector */ embedding: Float32Array; /** Time taken in milliseconds */ timeMs: number; /** Whether result was from cache */ cached: boolean; /** Token count (approximate) */ tokenCount?: number; } /** * Local embeddings service statistics */ export interface EmbeddingsStats { /** Total embeddings generated */ totalEmbeddings: number; /** Cache hits */ cacheHits: number; /** Cache misses */ cacheMisses: number; /** Average time per embedding (ms) */ avgTimeMs: number; /** Total time spent (ms) */ totalTimeMs: number; /** Model loaded */ modelLoaded: boolean; /** Provider being used */ provider: EmbeddingProvider; } /** * Local Embeddings Service * * Provides offline text embeddings using Transformers.js. * Models are downloaded once and cached locally in ~/.cache/huggingface. */ export declare class LocalEmbeddingsService { private config; private cache; private pipeline; private modelLoading; private stats; constructor(config?: LocalEmbeddingsConfig); /** * Initialize the embeddings service (loads model) */ initialize(): Promise; private loadModel; /** * Generate embedding for text */ embed(text: string): Promise; /** * Generate embeddings for multiple texts (batch) */ embedBatch(texts: string[]): Promise; /** * Get embedding generator function compatible with ProjectMemoryService */ getGenerator(): EmbeddingGenerator; /** * Get service statistics */ getStats(): EmbeddingsStats; /** * Clear the embedding cache */ clearCache(): void; /** * Get vector dimensions */ getDimensions(): number; /** * Shutdown and cleanup */ shutdown(): Promise; } /** * Create a local embeddings service with default configuration */ export declare function createLocalEmbeddings(config?: LocalEmbeddingsConfig): LocalEmbeddingsService; /** * Create an embedding generator function for use with ProjectMemoryService * * @example * ```typescript * import { createEmbeddingGenerator } from '@aitytech/agentkits-memory/embeddings'; * import { ProjectMemoryService } from '@aitytech/agentkits-memory'; * * const embeddingGenerator = await createEmbeddingGenerator(); * * const memory = new ProjectMemoryService({ * projectPath: '/path/to/project', * enableVectorIndex: true, * embeddingGenerator, * }); * ``` */ export declare function createEmbeddingGenerator(config?: LocalEmbeddingsConfig): Promise; export default LocalEmbeddingsService; //# sourceMappingURL=local-embeddings.d.ts.map