
    Njg                        d dl mZ d dlZd dlmZ d dlZ	 d dlmZ  ej                  e      Z	 	 	 	 	 	 	 	 ddZy# e	$ r	  e	d      w xY w)    )annotationsN)cast)KMeanszmscikit-learn is required for quantizing the vocabulary. Please install model2vec with the quantization extra.c                   t         j                  d|  d       |Ht        t        j                  t        j
                  j                  |d      dz         }||dddf   z  }|j                  }t        | dd	      }|j                  t        j                        }|j                  |       |j                  |      }|j                  j                  |      }|||fS )
z>Quantize the vocabulary of embeddings using KMeans clustering.zQuantizing vocabulary to z
 clusters.N   )axisg3#I9*   random)
n_clustersrandom_stateinit)loggerinfor   npndarraylinalgnormdtyper   astypefloat32fitpredictcluster_centers_)r   weights
embeddings
orig_dtypekmeanscast_embeddingstoken_mappings          r/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/model2vec/vocabulary_quantization.pyquantize_vocabularyr!      s     KK+J<zBCrzz299>>*1>#E#MN'!T'"22
 !!JzJF ''

3O
JJNN?3M ((//
;J}g--    )r   intr   znp.ndarray | Noner   z
np.ndarrayreturnz)tuple[np.ndarray, np.ndarray, np.ndarray])
__future__r   loggingtypingr   numpyr   sklearn.clusterr   ImportError	getLogger__name__r   r!    r"   r    <module>r.      ss    "   & 
		8	$../.=G...  
w s	   ; A	