o
    l&iw                     @   s   d dl mZ G dd dZdS )    )CrossEncoderc                   @   sD   e Zd ZdedefddZdd Zdedee d	ee fd
dZdS )RerankerService
model_namedevicec                 C   s   || _ || _d | _d S )N)r   r   model)selfr   r    r    app/services/reranker_service.py__init__   s   
zRerankerService.__init__c                 C   s"   | j d u rt| j| jd| _ | j S )N)r   )r   r   r   r   )r   r   r   r	   
_get_model
   s   
zRerankerService._get_modelquerytextsreturnc                    s6   |sg S  fdd|D }|   |}dd |D S )Nc                    s   g | ]} |gqS r   r   ).0textr   r   r	   
<listcomp>       z*RerankerService.rerank.<locals>.<listcomp>c                 S   s   g | ]}t |qS r   )float)r   sr   r   r	   r      r   )r   predict)r   r   r   pairsscoresr   r   r	   rerank   s
   zRerankerService.rerankN)	__name__
__module____qualname__strr
   r   listr   r   r   r   r   r	   r      s    "r   N)sentence_transformersr   r   r   r   r   r	   <module>   s    