/** * Google Gemini API를 사용한 임베딩 서비스 * 텍스트를 벡터로 변환하고 유사도 검색 제공 * OpenAI와 동일한 인터페이스를 제공하여 교체 가능 */ export interface GeminiEmbeddingResult { embedding: number[]; model: string; usage: { prompt_tokens: number; total_tokens: number; }; } export interface GeminiSimilarityResult { id: string; content: string; similarity: number; score: number; } export declare class GeminiEmbeddingService { private genAI; private miniLMService; private readonly model; private readonly maxTokens; private embeddingCache; private batchQueue; private batchTimeout; private readonly retryManager; constructor(); /** * Gemini 클라이언트 초기화 */ private initializeGemini; /** * 텍스트를 임베딩으로 변환 - 캐시 최적화 */ generateEmbedding(text: string): Promise; /** * 쿼리와 유사한 임베딩 검색 */ searchSimilar(query: string, embeddings: Array<{ id: string; content: string; embedding: number[]; }>, limit?: number, threshold?: number): Promise; /** * 코사인 유사도 계산 */ private cosineSimilarity; /** * 캐시 키 생성 */ private generateCacheKey; /** * 텍스트 해시 생성 */ private hashText; /** * 캐시 정리 */ private cleanupCache; /** * 텍스트를 토큰 제한에 맞게 자르기 */ private truncateText; /** * 토큰 수 추정 */ private estimateTokens; /** * 서비스 사용 가능 여부 확인 * Gemini API가 실제로 초기화되어 사용 가능한 경우에만 true 반환 * (fallback인 miniLM은 별도로 확인하지 않음) */ isAvailable(): boolean; /** * 모델 정보 반환 */ getModelInfo(): { model: string; dimensions: number; maxTokens: number; }; } //# sourceMappingURL=gemini-embedding-service.d.ts.map