
    [i                         d dl mZ d dlmZmZ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OptionalUnionAnyN)NDArray)SparseModelDescription)
NumpyArray)ModelManagementc                       e Zd ZU eed<   eeej                     eej                     f   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    b/mnt/e/genesis-system/.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   s6    -0t{{-KLTQAa 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   r"   int64int32dictstrr   r   r   r   classmethodr&    r   r   r   r      s    7288$gbhh&7788
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e   dee   defdZ	 	 ddeee	e   f   ded	ee   ded
e	e
   f
dZde	e   ded
e	e
   fdZdeee	e   f   ded
e	e
   fdZdeee	e   f   ded
efdZy)SparseTextEmbeddingBaseN
model_name	cache_dirthreadskwargsc                 \    || _         || _        || _        |j                  dd      | _        y )Nlocal_files_onlyF)r3   r4   r5   pop_local_files_only)r   r3   r4   r5   r6   s        r   __init__z SparseTextEmbeddingBase.__init__#   s-     %"!',>!Fr   	documents
batch_sizeparallelr   c                     t               r   NotImplementedError)r   r<   r=   r>   r6   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)rB   r   rC   r6   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.   rB   )r   rG   r6   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@   rE   s      r   token_countz#SparseTextEmbeddingBase.token_countZ   s    !"IJJr   )NN)   N)r'   r(   r)   r.   r   r   r   r;   r   r   r   rB   rF   rJ   rL   r0   r   r   r2   r2   "   s    $(!%	
G
G C=
G #	
G
 
G "&	$hsm+,$ $ 3-	$
 $ 
/	"$/8C= /C /H_D] /33-.3:=3	/	"3&KsHSM'9!: Kc Kc Kr   r2   )dataclassesr   typingr   r   r   r   numpyr"   numpy.typingr   "fastembed.common.model_descriptionr	   fastembed.common.typesr
   !fastembed.common.model_managementr   r   r2   r0   r   r   <module>rU      sM    ! 1 1    E - = G G G*:Ko.DE :Kr   