/** * Persistent Embedding Cache * * SQLite-backed cache for embeddings to avoid re-computing * embeddings for the same text content. * * @module @aitytech/agentkits-memory/embeddings */ import type { Database as BetterDatabase } from 'better-sqlite3'; /** * Embedding cache configuration */ export interface PersistentEmbeddingCacheConfig { /** Maximum number of entries (default: 10000) */ maxSize?: number; /** TTL in milliseconds (default: 7 days) */ ttlMs?: number; /** Vector dimensions (default: 384) */ dimensions?: number; } /** * Cached embedding entry */ export interface CachedEmbedding { /** Content hash (primary key) */ hash: string; /** The embedding vector */ embedding: Float32Array; /** When the entry was created */ createdAt: number; /** When the entry expires */ expiresAt: number; /** Access count */ accessCount: number; } /** * Cache statistics */ export interface PersistentEmbeddingCacheStats { /** Total entries in cache */ size: number; /** Cache hits */ hits: number; /** Cache misses */ misses: number; /** Hit rate (0-1) */ hitRate: number; /** Total bytes used */ bytesUsed: number; /** Oldest entry age in ms */ oldestEntryAge: number; } /** * Persistent Embedding Cache using SQLite */ export declare class PersistentEmbeddingCache { private db; private config; private stats; constructor(db: BetterDatabase, config?: PersistentEmbeddingCacheConfig); /** * Initialize the cache table */ private initializeSchema; /** * Hash content for cache key */ private hashContent; /** * Convert Float32Array to Buffer for storage */ private toBuffer; /** * Convert Buffer back to Float32Array */ private fromBuffer; /** * Get embedding from cache */ get(content: string): Float32Array | null; /** * Store embedding in cache */ set(content: string, embedding: Float32Array): void; /** * Check if content is in cache */ has(content: string): boolean; /** * Delete expired entries */ evictExpired(): number; /** * Evict oldest entries if over capacity */ private evictIfNeeded; /** * Clear all cache entries */ clear(): void; /** * Get cache statistics */ getStats(): PersistentEmbeddingCacheStats; /** * Get all cached embeddings */ getAllEmbeddings(): Array<{ hash: string; embedding: Float32Array; }>; } /** * Create a persistent embedding cache * * @example * ```typescript * import Database from 'better-sqlite3'; * import { createPersistentEmbeddingCache } from '@aitytech/agentkits-memory/embeddings'; * * const db = new Database(':memory:'); * * const cache = createPersistentEmbeddingCache(db, { * maxSize: 10000, * ttlMs: 7 * 24 * 60 * 60 * 1000, // 7 days * }); * ``` */ export declare function createPersistentEmbeddingCache(db: BetterDatabase, config?: PersistentEmbeddingCacheConfig): PersistentEmbeddingCache; export default PersistentEmbeddingCache; //# sourceMappingURL=embedding-cache.d.ts.map