/** * 에피소딕 임베딩 기반 시드·greedy 임계값 클러스터링. * * 각 클러스터에서 시드를 제외한 멤버는 **해당 시드**와의 코사인 유사도만 임계값 이상임이 보장된다. * 클러스터 내부 임의 두 에피소딕 쌍(pairwise)이 모두 임계값 이상은 아닐 수 있다(트랜지티브 가정 없음). */ import type { ConsolidationCluster } from '../../../shared/types/consolidation.types.js'; import type { EpisodicCandidateRow } from '../repositories/consolidation-repository.js'; export interface EpisodicWithEmbedding { row: EpisodicCandidateRow; embedding: number[]; } export declare class ClusteringService { getSimilarityThreshold(): number; getMinClusterSize(): number; private cosineSimilarity; /** * owner_id 격리: 입력이 이미 동일 owner 그룹이라고 가정하고 클러스터링 */ clusterGroup(items: EpisodicWithEmbedding[]): ConsolidationCluster[]; /** * 후보명 임베딩 맵을 받아 owner_id별로 그룹핑 후 클러스터링 */ buildClusters(candidates: EpisodicCandidateRow[], embeddings: Map): ConsolidationCluster[]; } //# sourceMappingURL=clustering-service.d.ts.map