
    sOi
                     T    d dl mZmZ d dlmZ d dlmZ d dlmZ  G d dee         Z	y)    )IterableAny)DenseModelDescription)
NumpyArray)ModelManagementc                      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eded
efd       Zed
efd       Z	 ddeee   z  deded
efdZy) LateInteractionTextEmbeddingBaseN
model_name	cache_dirthreadskwargsc                 j    || _         || _        || _        |j                  dd      | _        d | _        y )Nlocal_files_onlyF)r
   r   r   pop_local_files_only_embedding_size)selfr
   r   r   r   s        /volume1/homes/robertsu/coba/app/.venv/lib/python3.12/site-packages/fastembed/late_interaction/late_interaction_embedding_base.py__init__z)LateInteractionTextEmbeddingBase.__init__	   s5     %"!',>!F+/    	documents
batch_sizeparallelreturnc                     t               )NNotImplementedError)r   r   r   r   r   s        r   embedz&LateInteractionTextEmbeddingBase.embed   s     "##r   textsc              +   F   K    | j                   |fi |E d{    y7 w)a(  
        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[NdArray]: The embeddings.
        N)r   )r   r   r   s      r   passage_embedz.LateInteractionTextEmbeddingBase.passage_embed   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[NdArray]: The embeddings.
        N)
isinstancestrr   )r   r"   r   s      r   query_embedz,LateInteractionTextEmbeddingBase.query_embed.   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 embedding size of the chosen model.%Subclasses must implement this methodr   )clsr
   s     r   get_embedding_sizez3LateInteractionTextEmbeddingBase.get_embedding_size?        ""IJJr   c                     t        d      )z,Returns embedding size for the current modelr(   r   )r   s    r   embedding_sizez/LateInteractionTextEmbeddingBase.embedding_sizeD   r+   r   c                     t        d      )z*Returns the number of tokens in the texts.r(   r   )r   r   r   r   s       r   token_countz,LateInteractionTextEmbeddingBase.token_countI   s     ""IJJr   )NN)   N)i   )__name__
__module____qualname__r%   intr   r   r   r   r   r!   r&   classmethodr*   propertyr-   r/    r   r   r	   r	      sZ    !%"	00 :0 t	0
 0  #	$#&$ $ *	$
 $ 
*	$/8C= /C /HZDX /3x}!4 3 3Q[H\ 3" KC KC K K K K K KXc]"K K 	K
 
Kr   r	   N)
typingr   r   "fastembed.common.model_descriptionr   fastembed.common.typesr   !fastembed.common.model_managementr   r	   r7   r   r   <module>r<      s'      D - =HK7L'M HKr   