
    IgQ
                     p    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
 e G d d             Z G d de
      Zy)	    )	dataclass)DictIterableOptionalUnionN)ModelManagementc                       e Zd ZU ej                  ed<   ej                  ed<   deeej                  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    c/var/www/html/answerous/venv/lib/python3.12/site-packages/fastembed/sparse/sparse_embedding_base.py	as_objectzSparseEmbedding.as_object   s    kk||
 	
    c                 v    t        | j                  | j                        D ci c]  \  }}||
 c}}S c c}}w N)zipr   r   )r   ivs      r   as_dictzSparseEmbedding.as_dict   s-    !$T\\4;;!?@A1@@@s   5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   ndarray__annotations__r   strr   intfloatr   classmethodr!    r   r   r
   r
   	   sv    JJZZ
4RZZ0 
Ac5j) A GT#u*- G2C G Gr   r
   c            
           e Zd Z	 	 ddedee   dee   fdZ	 	 ddeeee   f   dedee   d	ee	   fd
Z
dee   d	ee	   fdZdeeee   f   d	ee	   fdZy)SparseTextEmbeddingBaseN
model_name	cache_dirthreadsc                 \    || _         || _        || _        |j                  dd      | _        y )Nlocal_files_onlyF)r.   r/   r0   pop_local_files_only)r   r.   r/   r0   kwargss        r   __init__z SparseTextEmbeddingBase.__init__    s-     %"!',>!Fr   	documents
batch_sizeparallelr   c                     t               r   )NotImplementedError)r   r7   r8   r9   r5   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   r=   r5   s      r   passage_embedz%SparseTextEmbeddingBase.passage_embed5   s!      4::e.v...s   !!queryc              +      K   t        |t              r | j                  |gfi |E d{    t        |t              r | j                  |fi |E d{    yy7 17 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   )r   r@   r5   s      r   query_embedz#SparseTextEmbeddingBase.query_embedF   s^      eS!!tzz5'4V444eX&!tzz%26222 ' 52s!   (A A*A AA A )NN)   N)r"   r#   r$   r'   r   r(   r6   r   r   r
   r<   r?   rC   r+   r   r   r-   r-      s     $(!%	
G
G C=
G #	
G "&	$hsm+,$ $ 3-	$ 
/	"$/c]/	/	"/"33-.3	/	"3r   r-   )dataclassesr   typingr   r   r   r   numpyr   !fastembed.common.model_managementr   r
   r-   r+   r   r   <module>rI      s<    ! 2 2  = G G G*83o 83r   