/** * 통합 임베딩 서비스 * 4가지 임베딩 제공자 중 선택하여 사용 * * 클린코드 원칙: * - 단일 책임 원칙: 임베딩 서비스 통합만 담당 * - 의존성 역전: 팩토리에 의존 * - 전략 패턴: 제공자 선택 로직 분리 */ import type { EmbeddingServiceInterface, EmbeddingResult, SimilarityResult, EmbeddingData, EmbeddingProvider } from '../../../shared/types/embedding.types.js'; /** * 통합 임베딩 서비스 * 순환 의존성을 방지하기 위해 팩토리 패턴 사용 */ export declare class UnifiedEmbeddingService implements EmbeddingServiceInterface { private factory; private currentProvider; private currentProviderName; private fallbackProviders; constructor(); /** * 텍스트를 임베딩 벡터로 변환 * TDD: 제공자 선택, 폴백 처리, 에러 핸들링 */ generateEmbedding(text: string, preferredProvider?: EmbeddingProvider): Promise; /** * 쿼리와 유사한 임베딩 검색 * TDD: 제공자 선택, 폴백 처리 */ searchSimilar(query: string, embeddings: EmbeddingData[], limit?: number, threshold?: number, preferredProvider?: EmbeddingProvider): Promise; /** * 서비스 사용 가능 여부 확인 * TDD: 최소 하나의 제공자라도 사용 가능해야 함 */ isAvailable(): boolean; /** * 현재 사용 중인 모델 정보 반환 * * 왜 이 메서드가 중요한가? * - fallback 발생 시 차원 정보가 정확히 반환되어야 함 * - "expected 384 vs actual 512" 에러 방지를 위해 현재 제공자의 정확한 차원 반환 필요 */ getModelInfo(): { model: string; dimensions: number; maxTokens: number; }; /** * 사용 가능한 제공자 목록 반환 */ getAvailableProviders(): string[]; /** * 마지막으로 사용된 임베딩 제공자 이름 반환 (진단용) * recall 도구에서 TF-IDF fallback 감지에 사용됨 */ getCurrentProviderName(): EmbeddingProvider | null; /** * 폴백 제공자 설정 */ setFallbackProviders(providers: EmbeddingProvider[]): void; private syncFallbackProviders; /** * 입력 검증 * 클린코드: 단일 책임 원칙 - 검증만 담당 */ private validateInput; /** * 제공자 선택 * 클린코드: 단일 책임 원칙 - 선택 로직만 담당 */ private selectProvider; /** * 폴백 제공자 시도 * 클린코드: 단일 책임 원칙 - 폴백 처리만 담당 * * 왜 차원 정보 동기화가 필요한가? * - MiniLM(384) → TF-IDF(512) fallback 시 차원 정보가 달라짐 * - getModelInfo()가 정확한 차원을 반환하도록 currentProvider 업데이트 필수 */ private tryFallbackProviders; /** * 폴백 검색 시도 */ private tryFallbackSearch; private handleProviderFailure; } //# sourceMappingURL=unified-embedding-service.d.ts.map