/** * MiniLM 임베딩 서비스 * all-MiniLM-L6-v2 모델을 사용한 경량 임베딩 서비스 * * 클린코드 원칙: * - 단일 책임 원칙: 임베딩 생성만 담당 * - 의존성 역전: 인터페이스에 의존 * - 개방-폐쇄: 확장에는 열려있고 수정에는 닫혀있음 */ import type { EmbeddingServiceInterface, EmbeddingResult, SimilarityResult, EmbeddingData } from '../../../shared/types/embedding.types.js'; declare global { var __minilmModelLoadWarningShown: boolean | undefined; } export declare class MiniLMEmbeddingService implements EmbeddingServiceInterface { private static readonly MODEL_NAME; private static readonly DIMENSIONS; private static readonly MAX_TOKENS; private static readonly CACHE_TTL; private readonly modelName; private readonly dimensions; private readonly maxTokens; private model; private loadingPromise; private readonly cache; constructor(); /** * 텍스트를 임베딩 벡터로 변환 * TDD: 빈 텍스트 검증, 모델 로딩, 캐싱 적용 */ generateEmbedding(text: string): Promise; /** * 쿼리와 유사한 임베딩 검색 * TDD: 빈 배열 처리, 임계값 적용, 개수 제한 */ searchSimilar(query: string, embeddings: EmbeddingData[], limit?: number, threshold?: number): Promise; /** * 서비스 사용 가능 여부 확인 * TDD: 모델 로딩 상태 확인 */ isAvailable(): boolean; /** * 모델 정보 반환 * TDD: 올바른 정보 반환 */ getModelInfo(): { model: string; dimensions: number; maxTokens: number; }; /** * 입력 검증 * 클린코드: 단일 책임 원칙 - 검증만 담당 */ private validateInput; /** * 모델 로딩 (지연 로딩) * 클린코드: 단일 책임 원칙 - 모델 로딩만 담당 */ private getModel; /** * 실제 모델 로딩 * Node.js 환경에서 Worker 스레드 문제를 방지하기 위해 옵션 설정 * * 왜 Worker 스레드를 비활성화하는가? * - Node.js 환경에서 onnxruntime-web의 Worker가 blob URL을 지원하지 않음 * - ERR_WORKER_PATH 에러 발생 시 TF-IDF fallback으로 전환 * - fallback 시 차원 정보(512)가 명시적으로 전달되어야 함 */ private loadModel; /** * 텍스트 전처리 * 클린코드: 단일 책임 원칙 - 전처리만 담당 */ private preprocessText; /** * 캐시 키 생성 */ private generateCacheKey; /** * 텍스트 해시 생성 */ private hashText; /** * 토큰 수 추정 */ private estimateTokens; /** * 코사인 유사도 계산 * 클린코드: 단일 책임 원칙 - 수학 계산만 담당 */ private calculateCosineSimilarity; /** * 캐시 정리 */ clearCache(): void; /** * 메모리 사용량 확인 */ getCacheSize(): number; } //# sourceMappingURL=minilm-embedding-service.d.ts.map