
    ^Nj                         d dl mZ d dlmZmZ d dlZd dlmZ d dl	m
Z
 d dlmZ d dlmZ e G d d	             Z G d
 dee
         Zy)    )	dataclass)IterableAnyN)NDArray)SparseModelDescription)
NumpyArray)ModelManagementc                       e Zd ZU eed<   eej                     eej                     z  ed<   de	e
ef   fdZde	eef   fdZede	eef   dd fd       Zy)	SparseEmbeddingvaluesindicesreturnc                 4    | j                   | j                  dS )Nr   r   r   )selfs    w/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/fastembed/sparse/sparse_embedding_base.py	as_objectzSparseEmbedding.as_object   s    kk||
 	
    c                     t        | j                  | j                        D ci c]  \  }}t        |      t	        |       c}}S c c}}w N)zipr   r   intfloat)r   ivs      r   as_dictzSparseEmbedding.as_dict   s<    -0t{{-KL-KTQAa -KLLLs   Adatac                    t        |      dk(  r0 | t        j                  g       t        j                  g             S t        |j	                          \  }} | t        j                  |      t        j                  |            S )Nr   r   )lennparrayr   items)clsr   r   r   s       r   	from_dictzSparseEmbedding.from_dict   s]    t9>bhhrlBHHRLAAtzz|,"((6*BHHW4EFFr   N)__name__
__module____qualname__r   __annotations__r   r    int64int32dictstrr   r   r   r   classmethodr$    r   r   r   r      s    RXX!222
4Z0 
Mc5j) M GT#u*- G2C G Gr   r   c                       e Zd Z	 	 ddededz  dedz  defdZ	 	 ddeee   z  ded	edz  ded
ee   f
dZ	dee   ded
ee   fdZ
deee   z  ded
ee   fdZdeee   z  ded
efdZy)SparseTextEmbeddingBaseN
model_name	cache_dirthreadskwargsc                 \    || _         || _        || _        |j                  dd      | _        y )Nlocal_files_onlyF)r1   r2   r3   pop_local_files_only)r   r1   r2   r3   r4   s        r   __init__z SparseTextEmbeddingBase.__init__#   s-     %"!',>!Fr   	documents
batch_sizeparallelr   c                     t               r   NotImplementedError)r   r:   r;   r<   r4   s        r   embedzSparseTextEmbeddingBase.embed/   s     "##r   textsc              +   F   K    | j                   |fi |E d{    y7 w)a7  
        Embeds a list of text passages into a list of embeddings.

        Args:
            texts (Iterable[str]): The list of texts to embed.
            **kwargs: Additional keyword argument to pass to the embed method.

        Yields:
            Iterable[SparseEmbedding]: The sparse embeddings.
        N)r@   r   rA   r4   s      r   passage_embedz%SparseTextEmbeddingBase.passage_embed8   s!      4::e.v...s   !!queryc              +      K   t        |t              r | j                  |gfi |E d{    y | j                  |fi |E d{    y7 !7 w)z
        Embeds queries

        Args:
            query (Union[str, Iterable[str]]): The query to embed, or an iterable e.g. list of queries.

        Returns:
            Iterable[SparseEmbedding]: The sparse embeddings.
        N)
isinstancer,   r@   )r   rE   r4   s      r   query_embedz#SparseTextEmbeddingBase.query_embedG   sO      eS!!tzz5'4V444!tzz%26222 52s!   (AAAAAAc                     t        d      )z*Returns the number of tokens in the texts.z%Subclasses must implement this methodr>   rC   s      r   token_countz#SparseTextEmbeddingBase.token_countX   s    !"IJJr   )NN)   N)r%   r&   r'   r,   r   r   r9   r   r   r@   rD   rH   rJ   r.   r   r   r0   r0   "   s    !%"	
G
G :
G t	
G
 
G #	$#&$ $ *	$
 $ 
/	"$/8C= /C /H_D] /3x}!4 3 3Q`Ha 3"Kx}!4 K K Kr   r0   )dataclassesr   typingr   r   numpyr    numpy.typingr   "fastembed.common.model_descriptionr   fastembed.common.typesr   !fastembed.common.model_managementr	   r   r0   r.   r   r   <module>rS      sJ    !      E - = G G G*8Ko.DE 8Kr   