/** * Embedding service using Hugging Face transformers * * Generates embeddings for code chunks using local transformer models. * The model is cached in memory for the process lifetime. * * Requirements: 2.4, 4.1, 4.2, 4.3, 4.5, 12.1 */ import type { Config } from '../../shared/types/index.js'; import type { Logger } from '../../shared/logging/logger.js'; /** * Embedding service interface */ export interface EmbeddingService { /** * Initialize the embedding model * Must be called before generating embeddings */ initialize(): Promise; /** * Generate embedding for a single text * @param text - Text to embed * @returns Embedding vector * @throws Error if model is not initialized or embedding generation fails */ generateEmbedding(text: string): Promise; /** * Generate embeddings for multiple texts in batch * More efficient than calling generateEmbedding multiple times * @param texts - Array of texts to embed * @returns Array of embedding vectors * @throws Error if model is not initialized or embedding generation fails */ batchGenerateEmbeddings(texts: string[]): Promise; /** * Get the embedding model name */ getModelName(): string; /** * Get the embedding dimensionality */ getEmbeddingDimension(): number; /** * Check if the model is initialized */ isInitialized(): boolean; } /** * Implementation of embedding service using Hugging Face transformers */ export declare class HuggingFaceEmbeddingService implements EmbeddingService { private model; private readonly modelName; private readonly cachePath; private readonly logger; private embeddingDimension; constructor(config: Config, logger: Logger); /** * Initialize the embedding model * Downloads and caches the model if not already cached * Model is cached in memory for the process lifetime */ initialize(): Promise; /** * Generate embedding for a single text */ generateEmbedding(text: string): Promise; /** * Generate embeddings for multiple texts in batch * More efficient than calling generateEmbedding multiple times */ batchGenerateEmbeddings(texts: string[]): Promise; /** * Get the embedding model name */ getModelName(): string; /** * Get the embedding dimensionality */ getEmbeddingDimension(): number; /** * Check if the model is initialized */ isInitialized(): boolean; } /** * Create an embedding service instance */ export declare function createEmbeddingService(config: Config, logger: Logger): EmbeddingService; //# sourceMappingURL=embedding.service.d.ts.map