/** * embeddingService.ts * Generate embeddings using transformers.js for semantic search */ /** * Embedding service using all-MiniLM-L6-v2 model * This is a lightweight model (23MB) optimized for semantic similarity */ export declare class EmbeddingService { private pipeline; private initialized; private modelName; /** * Initialize the embedding pipeline * Downloads model on first run (~23MB) */ initialize(): Promise; /** * Generate embedding for a text * @param text - Text to embed * @returns Vector embedding (384 dimensions for all-MiniLM-L6-v2) */ generateEmbedding(text: string): Promise; /** * Generate embeddings for multiple texts (batch processing) * @param texts - Array of texts to embed * @returns Array of vector embeddings */ generateEmbeddings(texts: string[]): Promise; /** * Calculate cosine similarity between two vectors * @param a - First vector * @param b - Second vector * @returns Similarity score (0-1, higher is more similar) */ cosineSimilarity(a: number[], b: number[]): number; /** * Find most similar vectors to a query vector * @param queryEmbedding - Query vector * @param docEmbeddings - Array of document vectors with metadata * @param topK - Number of results to return * @returns Array of {index, similarity} sorted by similarity desc */ findMostSimilar(queryEmbedding: number[], docEmbeddings: Array<{ embedding: number[]; index: number; }>, topK: number): Array<{ index: number; similarity: number; }>; } //# sourceMappingURL=embeddingService.d.ts.map