Ë
    kQêj¡  ã                   ó:   — d dl ZddlmZ ddlmZ  G d„ de«      Zy)é    Né   )ÚRerankeré   )Úattempt_import_or_raisec                   óä   ‡ — e Zd ZdZ	 	 	 	 ddedefˆ fd„Zd„ Zdej                  defd„Z	ded	ej                  d
ej                  fd„Z
ded	ej                  fd„Zded
ej                  fd„Zˆ xZS )ÚAnswerdotaiRerankersaã  
    Reranks the results using the Answerdotai Rerank API.
    All supported reranker model types can be found here:
    - https://github.com/AnswerDotAI/rerankers


    Parameters
    ----------
    model_type : str, default "colbert"
        The type of the model to use.
    model_name : str, default "rerank-english-v2.0"
        The name of the model to use from the given model type.
    column : str, default "text"
        The name of the column to use as input to the cross encoder model.
    return_score : str, default "relevance"
        options are "relevance" or "all".
    **kwargs
        Additional keyword arguments to pass to the model. For example, 'device'.
        See AnswerDotAI/rerankers for more information.
    Ú
model_nameÚcolumnc                 ó˜   •— t         ‰| �  |«       || _        t        d«      }|| _        || _         |j                  d||dœ|¤Ž| _        y )NÚ	rerankers)r	   Ú
model_type© )ÚsuperÚ__init__r
   r   r	   r   r   Úreranker)Úselfr   r	   r
   Úreturn_scoreÚkwargsr   Ú	__class__s          €úb/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/lancedb/rerankers/answerdotai.pyr   zAnswerdotaiRerankers.__init__    s\   ø€ ô 	‰Ñ˜Ô&ØˆŒÜ+Øó
ˆ	ð %ˆŒØ$ˆŒØ*˜	×*Ñ*ð 
Ø!¨jñ
Ø<Bñ
ˆ�ó    c                 ó<   — d| j                   › d| j                  › d�S )Nz AnswerdotaiRerankers(model_type=z, model_name=ú))r   r	   )r   s    r   Ú__str__zAnswerdotaiRerankers.__str__3   s*   € à.¨t¯©Ð.?ð @ØŸ/™/Ð*¨!ð-ð	
r   Ú
result_setÚqueryc                 óÄ  — | j                  |«      }t        |«      dk(  r|S || j                     j                  «       }t	        t        t        |«      «      «      }| j                  j                  |||¬«      }|D �cg c]  }|j                  |«      j                  ‘Œ }}|j                  dt        j                  |t        j                  «       ¬«      «      }|S c c}w )Nr   )Údoc_idsÚ_relevance_score)Útype)Ú_handle_empty_resultsÚlenr
   Ú	to_pylistÚlistÚranger   ÚrankÚget_result_by_docidÚscoreÚappend_columnÚpaÚarrayÚfloat32)r   r   r   Údocsr   ÚresultÚiÚscoress           r   Ú_rerankzAnswerdotaiRerankers._rerank9   sÇ   € Ø×/Ñ/°
Ó;ˆ
Üˆz‹?˜aÒØÐØ˜$Ÿ+™+Ñ&×0Ñ0Ó2ˆÜ”uœS ›YÓ'Ó(ˆØ—‘×#Ñ# E¨4¸Ð#ÓAˆð @GÖG¸!�&×,Ñ,¨QÓ/×5Ó5ÐGˆÐGð  ×-Ñ-Ø¤§¡¨´b·j±j³lÔ Có
ˆ
ð Ðùò Hs   Á>"CÚvector_resultsÚfts_resultsc                 óö   — | j                   dk(  r| j                  ||«      }n| j                  ||«      }| j                  ||«      }| j                   dk(  r| j	                  |«      }|j                  dg«      }|S )NÚallÚ	relevance©r   Ú
descending)r(   Ú_merge_and_keep_scoresÚmerge_resultsr1   Ú_keep_relevance_scoreÚsort_by)r   r   r2   r3   Úcombined_resultss        r   Úrerank_hybridz"AnswerdotaiRerankers.rerank_hybridJ   s…   € ð �:‰:˜ÒØ#×:Ñ:¸>È;ÓWÑà#×1Ñ1°.À+ÓNÐØŸ<™<Ð(8¸%Ó@ÐØ�:‰:˜Ò$Ø#×9Ñ9Ð:JÓKÐØ+×3Ñ3Ø/Ð0ó
Ðð  Ðr   c                 ó�   — | j                  ||«      }| j                  dk(  r|j                  dg«      }|j                  dg«      }|S )Nr6   Ú	_distancer7   ©r1   r(   Údrop_columnsr<   )r   r   r2   s      r   Úrerank_vectorz"AnswerdotaiRerankers.rerank_vector\   sJ   € ØŸ™ n°eÓ<ˆØ�:‰:˜Ò$Ø+×8Ñ8¸+¸ÓGˆNØ'×/Ñ/Ð1SÐ0TÓUˆØÐr   c                 ó�   — | j                  ||«      }| j                  dk(  r|j                  dg«      }|j                  dg«      }|S )Nr6   Ú_scorer7   rA   )r   r   r3   s      r   Ú
rerank_ftszAnswerdotaiRerankers.rerank_ftsc   sJ   € Ø—l‘l ;°Ó6ˆØ�:‰:˜Ò$Ø%×2Ñ2°H°:Ó>ˆKØ!×)Ñ)Ð+MÐ*NÓOˆØÐr   )Úcolbertz%answerdotai/answerai-colbert-small-v1Útextr6   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr   r   r*   ÚTabler1   r>   rC   rF   Ú__classcell__)r   s   @r   r   r   
   s¢   ø„ ñð. ØAØØ ñ
ð ð
ð õ	
ò&
ð "§(¡(ð °3ó ð" àð ð Ÿ™ð ð —X‘Xó	 ð$ 3ð ¸¿¹ó ð ð °"·(±(÷ r   r   )Úpyarrowr*   Úbaser   Úutilr   r   r   r   r   ú<module>rS      s   ðó
 Ý Ý *ô^˜8õ ^r   