o
    S"g                     @   sJ   d dl mZ d dlmZmZmZ d dlZerd dlZG dd de	eZ
dS )    )Enum)TYPE_CHECKINGUnionoverloadNc                   @   s   e Zd ZdZdZdZdZdejdejfddZ	e
edejdejfd	d
Ze
eddd
Ze
				ddd
Ze
dejdejfddZe
edejdejfddZe
edddZe
				dddZdS )Poolingz8Enum of possible pooling choices with pooling behaviors.clsmeanlastarrayreturnc                 C   s2   | | j kr
| |S | | jkr| |S | |S N)CLScls_poolingLASTlast_poolingmean_pooling)selfr
    r   l/mnt/skqttb/ctump_chatbot/chatbot/lib/python3.10/site-packages/llama_index/embeddings/huggingface/pooling.py__call__   s
   




zPooling.__call__c                 C      d S r   r   r   r
   r   r   r   r         zPooling.cls_poolingtorch.Tensorc                 C   r   r   r   r   r   r   r   r         Union[np.ndarray, torch.Tensor]c                 C   F   t |jdkr|d d df S t |jdkr|d S td|j d)N   r      Unhandled shape .lenshapeNotImplementedErrorr   r   r   r   r   $   
   c                 C   sF   t |jdkr|jddS t |jdkr|jddS td|j d)Nr      )axisr   r   r   r    )r"   r#   r   r$   r   r   r   r   r   .   s
   zPooling.mean_poolingc                 C   r   r   r   r   r   r   r   r   6   r   zPooling.last_poolingc                 C   r   r   r   r   r   r   r   r   ;   r   c                 C   r   )Nr   r   r   r    r!   r   r   r   r   r   B   r%   N)r
   r   r   r   )r
   r   r   r   )__name__
__module____qualname____doc__r   MEANr   npndarrayr   classmethodr   r   r   r   r   r   r   r   r   
   s@    	r   )enumr   typingr   r   r   numpyr.   torchstrr   r   r   r   r   <module>   s    