
    7|h                     X    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ee
      Zy)    )AnyDictListTuple)	BaseModel
ConfigDictField)BaseCrossEncoderzBAAI/bge-reranker-basec                        e Zd ZU dZdZeed<   eZe	ed<   	  e
e      Zee	ef   ed<   	 def fdZ ed	d
      Zdeee	e	f      dee   fdZ x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                     t        |   di | 	 ddl} |j                  | j
                  fi | j                  | _        y# t        $ r}t        d      |d}~ww xY w)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ImportErrorCrossEncoderr   r   r   )selfr   r   exc	__class__s       m/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/cross_encoders/huggingface.pyr   z HuggingFaceCrossEncoder.__init__    sq    "6"	( 9+88OO
#00
  	N 	s   A 	AAAforbidr   )extraprotected_namespaces
text_pairsreturnc                     | j                   j                  |      }t        |j                        dkD  rt	        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                     | d   S )Nr#   r   )xs    r   <lambda>z/HuggingFaceCrossEncoder.score.<locals>.<lambda>?   s
    1Q4     )r   predictlenshapemap)r   r    scoress      r   scorezHuggingFaceCrossEncoder.score2   s<     $$Z0 v||q 0Fr'   )__name__
__module____qualname____doc__r   r   __annotations__DEFAULT_MODEL_NAMEr   strr	   dictr   r   r   r   model_configr   r   floatr-   __classcell__)r   s   @r   r   r   
   sy     FC(J(#(#>L$sCx.>1
 
  H2FLU38_ 5 $u+ r'   r   N)typingr   r   r   r   pydanticr   r   r	   'langchain_community.cross_encoders.baser
   r3   r   r   r'   r   <module>r<      s)    ) ) 1 1 D- 6i)9 6r'   