a
    bg                     @   sR   d dl mZmZmZmZ d dlmZmZmZ d dl	m
Z
 dZG dd dee
ZdS )    )AnyDictListTuple)	BaseModel
ConfigDictField)BaseCrossEncoderzBAAI/bge-reranker-basec                       s   e Zd ZU dZdZeed< eZe	ed< e
edZee	ef ed< ed fdd	Zed
ddZeee	e	f  ee dddZ  ZS )HuggingFaceCrossEncodera  HuggingFace cross encoder models.

    Example:
        .. code-block:: python

            from langchain_community.cross_encoders import HuggingFaceCrossEncoder

            model_name = "BAAI/bge-reranker-base"
            model_kwargs = {'device': 'cpu'}
            hf = HuggingFaceCrossEncoder(
                model_name=model_name,
                model_kwargs=model_kwargs
            )
    Nclient
model_name)default_factorymodel_kwargs)kwargsc              
      sj   t  jf i | zddl}W n. tyL } ztd|W Y d}~n
d}~0 0 |j| jfi | j| _dS )z$Initialize the sentence_transformer.r   NzrCould not import sentence_transformers python package. Please install it with `pip install sentence-transformers`.)super__init__sentence_transformersImportErrorZCrossEncoderr   r   r   )selfr   r   exc	__class__ |/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/cross_encoders/huggingface.pyr       s    z HuggingFaceCrossEncoder.__init__Zforbidr   )extraZprotected_namespaces)
text_pairsreturnc                 C   s,   | j |}t|jdkr(tdd |}|S )zCompute similarity scores using a HuggingFace transformer model.

        Args:
            text_pairs: The list of text text_pairs to score the similarity.

        Returns:
            List of scores, one for each pair.
           c                 S   s   | d S )Nr   r   )xr   r   r   <lambda>?       z/HuggingFaceCrossEncoder.score.<locals>.<lambda>)r   Zpredictlenshapemap)r   r   Zscoresr   r   r   score2   s    	zHuggingFaceCrossEncoder.score)__name__
__module____qualname____doc__r   r   __annotations__DEFAULT_MODEL_NAMEr   strr   dictr   r   r   r   Zmodel_configr   r   floatr$   __classcell__r   r   r   r   r
   
   s   
r
   N)typingr   r   r   r   Zpydanticr   r   r   Z'langchain_community.cross_encoders.baser	   r*   r
   r   r   r   r   <module>   s   