
    Ng                     `    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dS )    )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                      j        di | 	 ddl}n"# t          $ r}t          d          |d}~ww xY w |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ImportErrorCrossEncoderr   r   r   )selfr   r   exc	__class__s       j/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/cross_encoders/huggingface.pyr   z HuggingFaceCrossEncoder.__init__    s    ""6"""	((((( 	 	 	N  	 9+8O
 
#0
 
s   ! 
A ;A forbidr   )extraprotected_namespaces
text_pairsreturnc                     | j                             |          }t          |j                  dk    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   sF     $$Z00 v|q  0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   
   s           FC(J(((#(5#>#>#>L$sCx.>>>1
 
 
 
 
 
 
  :H2FF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 1 1 1 1 1 1 1 1 D D D D D D- 6 6 6 6 6i)9 6 6 6 6 6r'   