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