File size: 3,883 Bytes
40d7073 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | /**
* Embedding Service - Unified embedding generation and management
*
* This service provides a unified interface for generating, caching, and
* managing embeddings from various sources (local models, APIs, etc.)
*/
/**
* Embedding provider interface
*/
export interface EmbeddingProvider {
/** Provider name */
name: string;
/** Generate embeddings for texts */
embed(texts: string[]): Promise<number[][]>;
/** Get embedding dimensions */
getDimensions(): number;
}
/**
* Embedding service configuration
*/
export interface EmbeddingServiceConfig {
/** Default provider to use */
defaultProvider?: string;
/** Maximum cache size */
maxCacheSize?: number;
/** Cache TTL in milliseconds */
cacheTtl?: number;
/** Batch size for embedding generation */
batchSize?: number;
}
/**
* Mock embedding provider for testing
*/
export declare class MockEmbeddingProvider implements EmbeddingProvider {
name: string;
private dimensions;
constructor(dimensions?: number);
embed(texts: string[]): Promise<number[][]>;
getDimensions(): number;
}
/**
* Simple local embedding using character n-grams
* This is a fallback when no external provider is available
*/
export declare class LocalNGramProvider implements EmbeddingProvider {
name: string;
private dimensions;
private ngramSize;
constructor(dimensions?: number, ngramSize?: number);
embed(texts: string[]): Promise<number[][]>;
private embedSingle;
private hashNgram;
getDimensions(): number;
}
/**
* Embedding service with caching and batching
*/
export declare class EmbeddingService {
private providers;
private cache;
private config;
constructor(config?: EmbeddingServiceConfig);
/**
* Register an embedding provider
*/
registerProvider(provider: EmbeddingProvider): void;
/**
* Get a registered provider
*/
getProvider(name?: string): EmbeddingProvider;
/**
* Generate embeddings for texts with caching
*
* @param texts - Texts to embed
* @param provider - Provider name (uses default if not specified)
* @returns Array of embeddings
*/
embed(texts: string[], provider?: string): Promise<number[][]>;
/**
* Generate a single embedding
*/
embedOne(text: string, provider?: string): Promise<number[]>;
/**
* Add entry to cache with LRU eviction
*/
private addToCache;
/**
* Compute cosine similarity between two embeddings
*/
cosineSimilarity(a: number[], b: number[]): number;
/**
* Find most similar texts from a corpus
*/
findSimilar(query: string, corpus: string[], k?: number, provider?: string): Promise<{
text: string;
similarity: number;
index: number;
}[]>;
/**
* Get cache statistics
*/
getCacheStats(): {
size: number;
maxSize: number;
hitRate: number;
};
/**
* Clear the cache
*/
clearCache(): void;
/**
* Get embedding dimensions for a provider
*/
getDimensions(provider?: string): number;
/**
* List available providers
*/
listProviders(): string[];
}
/**
* Create an embedding service instance
*/
export declare function createEmbeddingService(config?: EmbeddingServiceConfig): EmbeddingService;
/**
* Get the default embedding service instance
*/
export declare function getDefaultEmbeddingService(): EmbeddingService;
declare const _default: {
EmbeddingService: typeof EmbeddingService;
LocalNGramProvider: typeof LocalNGramProvider;
MockEmbeddingProvider: typeof MockEmbeddingProvider;
createEmbeddingService: typeof createEmbeddingService;
getDefaultEmbeddingService: typeof getDefaultEmbeddingService;
};
export default _default;
//# sourceMappingURL=embedding-service.d.ts.map |