§
     �’jù2  ã                   ó\  — U d dl mZ d dlmZ d dlmZ d dlZd dlm	Z
 d dlmZ dZdZ G d	„ d
ee¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Zeez  ez  ez  Zeed<   dej        defd„Zde
j        d e
j        de
j        fd!„Zde
j        d e
j        de
j        fd"„Zde
j        d e
j        de
j        fd#„Z de
j        d e
j        de
j        fd$„Z!de
j        d e
j        d%ej        de
j        fd&„Z"de
j        d e
j        d%ej        de
j        fd'„Z#d(ej$        dej$        fd)„Z%d(ej$        dej$        fd*„Z&ded e
j        d%ej        de
j        fd+„Z'ded e
j        d%ej        de
j        fd,„Z(d-e)e         d e
j        d%ej        de
j        fd.„Z*ded e
j        d%ej        de
j        fd/„Z+ded e
j        d%ej        de
j        fd0„Z,ded e
j        d%ej        de
j        fd1„Z-dS )2é    )ÚEnum)Ú	TypeAlias)ÚpermutationsN)Úcommon_types)Úmodelsgýô  €>ç        c                   ó   — e Zd ZdZdZdS )ÚDistanceOrderÚbigger_is_betterÚsmaller_is_betterN)Ú__name__Ú
__module__Ú__qualname__ÚBIGGER_IS_BETTERÚSMALLER_IS_BETTER© ó    úKC:\Projects\DSCons\.venv\Lib\site-packages\qdrant_client\local\distances.pyr
   r
      s   € € € € € Ø)ÐØ+ÐÐÐr   r
   c                   óv   — e Zd Z	 	 	 ddeee                  dz  deee                  dz  dej        dz  fd„ZdS )Ú	RecoQueryNÚpositiveÚnegativeÚstrategyc                 ó\  — |€
J d¦   «         ‚|| _         |�|ng }|�|ng }d„ |D ¦   «         | _        d„ |D ¦   «         | _        t          j        | j        ¦  «                             ¦   «         r
J d¦   «         ‚t          j        | j        ¦  «                             ¦   «         r
J d¦   «         ‚d S )Nz#Recommend strategy must be providedc                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r   ©ÚnpÚarray©Ú.0Úvectors     r   ú
<listcomp>z&RecoQuery.__init__.<locals>.<listcomp>"   ó"   € Ð0YÐ0YÐ0YÀfµ´¸&Ñ1AÔ1AÐ0YÐ0YÐ0Yr   c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r   r   r   s     r   r"   z&RecoQuery.__init__.<locals>.<listcomp>#   r#   r   z%Positive vectors must not contain NaNz%Negative vectors must not contain NaN)r   r   r   r   ÚisnanÚany)Úselfr   r   r   s       r   Ú__init__zRecoQuery.__init__   sÈ   € ð Ð#Ð#Ð%JÑ#Ô#Ð#à ˆŒØ'Ð3�8�8¸ˆØ'Ð3�8�8¸ˆà0YÐ0YÐPXÐ0YÑ0YÔ0YˆŒØ0YÐ0YÐPXÐ0YÑ0YÔ0YˆŒå”8˜DœMÑ*Ô*×.Ò.Ñ0Ô0ÐYÐYÐ2YÑYÔYÐ0Ý”8˜DœMÑ*Ô*×.Ò.Ñ0Ô0ÐYÐYÐ2YÑYÔYÐ0ÐYÐYr   )NNN)r   r   r   ÚlistÚfloatr   ÚRecommendStrategyr(   r   r   r   r   r      s‚   € € € € € ð .2Ø-1Ø48ð	Zð Zà�t˜E”{Ô# dÑ*ðZð �t˜E”{Ô# dÑ*ðZð Ô*¨TÑ1ð	Zð Zð Zð Zð Zð Zr   r   c                   ó6   — e Zd Zdee         dee         fd„ZdS )ÚContextPairr   r   c                 ó>  — t          j        |¦  «        | _        t          j        |¦  «        | _        t          j        | j        ¦  «                             ¦   «         r
J d¦   «         ‚t          j        | j        ¦  «                             ¦   «         r
J d¦   «         ‚d S )Nz$Positive vector must not contain NaNz$Negative vector must not contain NaN)r   r   r   r   r%   r&   )r'   r   r   s      r   r(   zContextPair.__init__*   s„   € Ý*,¬(°8Ñ*<Ô*<ˆŒÝ*,¬(°8Ñ*<Ô*<ˆŒå”8˜DœMÑ*Ô*×.Ò.Ñ0Ô0ÐXÐXÐ2XÑXÔXÐ0Ý”8˜DœMÑ*Ô*×.Ò.Ñ0Ô0ÐXÐXÐ2XÑXÔXÐ0ÐXÐXr   N©r   r   r   r)   r*   r(   r   r   r   r-   r-   )   sF   € € € € € ðY  e¤ð Y¸¸U¼ð Yð Yð Yð Yð Yð Yr   r-   c                   ó6   — e Zd Zdee         dee         fd„ZdS )ÚDiscoveryQueryÚtargetÚcontextc                 ó°   — t          j        |¦  «        | _        || _        t          j        | j        ¦  «                             ¦   «         r
J d¦   «         ‚d S )Nú"Target vector must not contain NaN)r   r   r2   r3   r%   r&   )r'   r2   r3   s      r   r(   zDiscoveryQuery.__init__3   sM   € Ý(*¬°Ñ(8Ô(8ˆŒØˆŒå”8˜DœKÑ(Ô(×,Ò,Ñ.Ô.ÐTÐTÐ0TÑTÔTÐ.ÐTÐTr   N)r   r   r   r)   r*   r-   r(   r   r   r   r1   r1   2   sG   € € € € € ðU˜t Eœ{ð U°T¸+Ô5Fð Uð Uð Uð Uð Uð Ur   r1   c                   ó&   — e Zd Zdee         fd„ZdS )ÚContextQueryÚcontext_pairsc                 ó   — || _         d S ©N)r8   )r'   r8   s     r   r(   zContextQuery.__init__;   s   € Ø*ˆÔÐÐr   N)r   r   r   r)   r-   r(   r   r   r   r7   r7   :   s4   € € € € € ð+ d¨;Ô&7ð +ð +ð +ð +ð +ð +r   r7   c                   ó*   — e Zd Zdee         defd„ZdS )ÚFeedbackItemr!   Úscorec                 ó°   — t          j        |¦  «        | _        || _        t          j        | j        ¦  «                             ¦   «         r
J d¦   «         ‚d S )Nú$Feedback vector must not contain NaN)r   r   r!   r=   r%   r&   )r'   r!   r=   s      r   r(   zFeedbackItem.__init__@   sM   € Ý”h˜vÑ&Ô&ˆŒØˆŒ
Ý”8˜DœKÑ(Ô(×,Ò,Ñ.Ô.ÐVÐVÐ0VÑVÔVÐ.ÐVÐVr   Nr/   r   r   r   r<   r<   ?   sB   € € € € € ðW˜t Eœ{ð W°5ð Wð Wð Wð Wð Wð Wr   r<   c                   ó"   — e Zd Zdededefd„ZdS )ÚNaiveFeedbackCoefficientsÚaÚbÚcc                 ó0   — || _         || _        || _        d S r:   )rB   rC   rD   )r'   rB   rC   rD   s       r   r(   z"NaiveFeedbackCoefficients.__init__G   s   € ØˆŒØˆŒØˆŒˆˆr   N)r   r   r   r*   r(   r   r   r   rA   rA   F   s=   € € € € € ð˜%ð  Eð ¨eð ð ð ð ð ð r   rA   c                   ó6   — e Zd Zdej        dej        defd„ZdS )ÚFeedbackContextPairr   r   Úpartial_computationc                 ó0   — || _         || _        || _        d S r:   ©r   r   rH   )r'   r   r   rH   s       r   r(   zFeedbackContextPair.__init__N   s    € ð !ˆŒØ ˆŒØ#6ˆÔ Ð Ð r   N)r   r   r   ÚtypesÚ
NumpyArrayr*   r(   r   r   r   rG   rG   M   sF   € € € € € ð7ØÔ(ð7Ø49Ô4Dð7Ø[`ð7ð 7ð 7ð 7ð 7ð 7r   rG   c                   ó:   — e Zd Zdee         dee         defd„ZdS )ÚNaiveFeedbackQueryr2   ÚfeedbackÚcoefficientsc                 ó<  — t          j        |¦  «        | _        || _        || _        t          j        | j        ¦  «                             ¦   «         r
J d¦   «         ‚| j        D ]7}t          j        |j        ¦  «                             ¦   «         r
J d¦   «         ‚Œ8d S )Nr5   r?   )r   r   r2   rO   rP   r%   r&   r!   )r'   r2   rO   rP   Úitems        r   r(   zNaiveFeedbackQuery.__init__W   s    € õ ”h˜vÑ&Ô&ˆŒØ ˆŒØ(ˆÔå”8˜DœKÑ(Ô(×,Ò,Ñ.Ô.ÐTÐTÐ0TÑTÔTÐ.Ø”Mð 	[ð 	[ˆDÝ”x ¤Ñ,Ô,×0Ò0Ñ2Ô2ÐZÐZÐ4ZÑZÔZÐ2ÐZð	[ð 	[r   N)r   r   r   r)   r*   r<   rA   r(   r   r   r   rN   rN   V   sV   € € € € € ð[à�U”ð[ð �|Ô$ð[ð 0ð	[ð [ð [ð [ð [ð [r   rN   ÚDenseQueryVectorÚdistanceÚreturnc                 óž   — | t           j        j        k    rt          j        S | t           j        j        k    rt          j        S t          j        S )zn
    Convert distance to order
    Args:
        distance: distance to convert
    Returns:
        order
    )r   ÚDistanceÚEUCLIDr
   r   Ú	MANHATTANr   )rT   s    r   Údistance_to_orderrZ   i   s?   € ð •6”?Ô)Ò)Ð)ÝÔ.Ð.Ø	•V”_Ô.Ò	.Ð	.ÝÔ.Ð.åÔ)Ð)r   ÚqueryÚvectorsc                 ón  — t           j                             |d¬¦  «        dd…t           j        f         }|t          j        |dk    |t
          ¦  «        z  }t          | j        ¦  «        dk    rVt           j                             | ¦  «        }| t          j        |dk    |t
          ¦  «        z  } t          j        || ¦  «        S t           j                             | d¬¦  «        dd…t           j        f         }| t          j        |dk    |t
          ¦  «        z  } t          j        | |j	        ¦  «        S )z¶
    Calculate cosine distance between query and vectors
    Args:
        query: query vector
        vectors: vectors to calculate distance with
    Returns:
        distances
    éÿÿÿÿ©ÚaxisNr   é   )
r   ÚlinalgÚnormÚnewaxisÚwhereÚEPSILONÚlenÚshapeÚdotÚT)r[   r\   Úvectors_normÚ
query_norms       r   Úcosine_similarityrm   y   sõ   € õ ”9—>’> '°�>Ñ3Ô3°A°A°Aµr´z°MÔB€LØ�rŒx˜¨Ò+¨\½7ÑCÔCÑC€Gå
ˆ5Œ;ÑÔ˜1ÒÐÝ”Y—^’^ EÑ*Ô*ˆ
Ø•”˜*¨Ò+¨Z½ÑAÔAÑAˆÝŒv�g˜uÑ%Ô%Ð%å”—’ ¨B�Ñ/Ô/°°°µ2´:°Ô>€JØ	�RŒX�j CÒ'¨µWÑ=Ô=Ñ=€EÝŒ6�%˜œÑ#Ô#Ð#r   c                 ó�   — t          | j        ¦  «        dk    rt          j        || ¦  «        S t          j        | |j        ¦  «        S )z³
    Calculate dot product between query and vectors
    Args:
        query: query vector.
        vectors: vectors to calculate distance with
    Returns:
        distances
    ra   )rg   rh   r   ri   rj   ©r[   r\   s     r   Údot_productrp   �   s?   € õ ˆ5Œ;ÑÔ˜1ÒÐÝŒv�g˜uÑ%Ô%Ð%åŒv�e˜WœYÑ'Ô'Ð'r   c                 óê   — t          | j        ¦  «        dk    r$t          j                             || z
  d¬¦  «        S t          j                             || dd…t          j        f         z
  d¬¦  «        S )zº
    Calculate euclidean distance between query and vectors
    Args:
        query: query vector.
        vectors: vectors to calculate distance with
    Returns:
        distances
    ra   r^   r_   N)rg   rh   r   rb   rc   rd   ro   s     r   Úeuclidean_distancerr   ž   sa   € õ ˆ5Œ;ÑÔ˜1ÒÐÝŒy�~Š~˜g¨™o°Bˆ~Ñ7Ô7Ð7åŒy�~Š~˜g¨¨a¨a¨aµ´¨mÔ(<Ñ<À2ˆ~ÑFÔFÐFr   c                 ó  — t          | j        ¦  «        dk    r+t          j        t          j        || z
  ¦  «        d¬¦  «        S t          j        t          j        || dd…t          j        f         z
  ¦  «        d¬¦  «        S )zº
    Calculate manhattan distance between query and vectors
    Args:
        query: query vector.
        vectors: vectors to calculate distance with
    Returns:
        distances
    ra   r^   r_   N)rg   rh   r   ÚsumÚabsrd   ro   s     r   Úmanhattan_distancerv   ­   so   € õ ˆ5Œ;ÑÔ˜1ÒÐÝŒv•b”f˜W u™_Ñ-Ô-°BÐ7Ñ7Ô7Ð7åŒv•b”f˜W u¨Q¨Q¨Qµ´
¨]Ô';Ñ;Ñ<Ô<À2ÐFÑFÔFÐFr   Údistance_typec                 ó®  — t          j        | ¦  «                             ¦   «         r
J d¦   «         ‚|t          j        j        k    rt          | |¦  «        S |t          j        j        k    rt          | |¦  «        S |t          j        j	        k    rt          | |¦  «        S |t          j        j        k    rt          | |¦  «        S t          d|› �¦  «        ‚)Nú!Query vector must not contain NaNzUnknown distance type )r   r%   r&   r   rW   ÚCOSINErm   ÚDOTrp   rX   rr   rY   rv   Ú
ValueError©r[   r\   rw   s      r   Úcalculate_distancer~   ¼   sÄ   € õ Œx˜‰Œ×"Ò"Ñ$Ô$ÐIÐIÐ&IÑIÔIÐ$à�œÔ.Ò.Ð.Ý  ¨Ñ0Ô0Ð0Ø	�&œ/Ô-Ò	-Ð	-Ý˜5 'Ñ*Ô*Ð*Ø	�&œ/Ô0Ò	0Ð	0Ý! %¨Ñ1Ô1Ð1Ø	�&œ/Ô3Ò	3Ð	3Ý! %¨Ñ1Ô1Ð1åÐA°-ÐAÐAÑBÔBÐBr   c                 óä  — t          j        | ¦  «                             ¦   «         r
J d¦   «         ‚|t          j        j        k    rCt          j        || z
  t           j        ¬¦  «                             dt           j        ¬¦  «         S |t          j        j	        k    rCt          j
        || z
  t           j        ¬¦  «                             dt           j        ¬¦  «         S t          | ||¦  «        S )z`
    Calculate same internal distances as in core, rather than the final displayed distance
    ry   ©Údtypera   )r`   r�   )r   r%   r&   r   rW   rX   ÚsquareÚfloat32rt   rY   ru   r~   r}   s      r   Úcalculate_distance_corer„   Í   sÅ   € õ Œx˜‰Œ×"Ò"Ñ$Ô$ÐIÐIÐ&IÑIÔIÐ$à�œÔ.Ò.Ð.Ý”	˜' E™/µ´Ð<Ñ<Ô<×@Ò@ÀaÍrÌzÐ@ÑZÔZÐZÐZØ�œÔ1Ò1Ð1Ý”�w ‘­b¬jÐ9Ñ9Ô9×=Ò=À1ÍBÌJÐ=ÑWÔWÐWÐWå! %¨°-Ñ@Ô@Ð@r   Úxc                 ó    — t          j        | ¦  «        st          j        | ¦  «        r| S | t          j        dt	          | ¦  «        ¦  «        z  S )Nç      ð?)r   r%   ÚisinfÚaddru   ©r…   s    r   Úfast_sigmoidr‹   Ý   sC   € Ý	„x��{„{ð •b”h˜q‘k”kð àˆØ�rŒv�c�3˜q™6œ6Ñ"Ô"Ñ"Ð"r   c                 óL   — dt          j        t          | ¦  «        d¦  «        z  S )Ng      à?r‡   )r   r‰   r‹   rŠ   s    r   Úscaled_fast_sigmoidr�   ä   s   € Ø•"”&� a™œ¨#Ñ.Ô.Ñ/Ð/r   c                 óV  ‡‡— dt           t          j                 dt          j        fˆˆfd„} || j        ¦  «        } || j        ¦  «        }t          j        ||k    t          j        d„ |D ¦   «         |j        ¦  «        t          j        d„ |D ¦   «         |j        ¦  «        ¦  «        S )NÚexamplesrU   c                 óp  •— ‰j         d         }g }| D ](}t          |‰‰¦  «        }|                     |¦  «         Œ)t          |¦  «        dk    r3|                     t	          j        |t          j         ¦  «        ¦  «         t	          j        |t          j        ¬¦  «         	                    d¬¦  «        }|S ©Nr   r€   r_   )
rh   r„   Úappendrg   r   ÚfullÚinfr   rƒ   Úmax)r�   Úvector_countÚscoresÚexampler=   Úbest_scoresrw   r\   s         €€r   Úget_best_scoresz8calculate_recommend_best_scores.<locals>.get_best_scoresë   s­   ø€ Ø”} QÔ'ˆð *,ˆØð 	!ð 	!ˆGÝ+¨G°W¸mÑLÔLˆEØ�MŠM˜%Ñ Ô Ð Ð õ ˆv‰;Œ;˜!ÒÐØ�MŠM�"œ' ,µ´°Ñ8Ô8Ñ9Ô9Ð9Ý”h˜v­R¬ZÐ8Ñ8Ô8×<Ò<À!Ð<ÑDÔDˆàÐr   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r:   ©r�   ©r    Úxis     r   ú	<genexpr>z2calculate_recommend_best_scores.<locals>.<genexpr>  s+   è è € Ð;Ð;°Õ(¨Ñ,Ô,Ð;Ð;Ð;Ð;Ð;Ð;r   c              3   ó6   K  — | ]}t          |¦  «         V — Œd S r:   rœ   r�   s     r   rŸ   z2calculate_recommend_best_scores.<locals>.<genexpr>  s.   è è € Ð<Ð<°"Õ)¨"Ñ-Ô-Ð-Ð<Ð<Ð<Ð<Ð<Ð<r   )	r)   rK   rL   r   r   r   re   Úfromiterr�   )r[   r\   rw   rš   ÚposÚnegs    ``   r   Úcalculate_recommend_best_scoresr¤   è   sÁ   øø€ ð¥$¥uÔ'7Ô"8ð ½UÔ=Mð ð ð ð ð ð ð ð  ˆ/˜%œ.Ñ
)Ô
)€CØ
ˆ/˜%œ.Ñ
)Ô
)€Cõ Œ8ØˆcŠ	Ý
ŒÐ;Ð;°sÐ;Ñ;Ô;¸S¼YÑGÔGÝ
ŒÐ<Ð<¸Ð<Ñ<Ô<¸c¼iÑHÔHñô ð r   c                 ó¤   ‡‡— dt           t          j                 dt          j        fˆˆfd„} || j        ¦  «        } || j        ¦  «        }||z
  S )Nr�   rU   c                 óX  •— ‰j         d         }g }| D ](}t          |‰‰¦  «        }|                     |¦  «         Œ)t          |¦  «        dk    r'|                     t	          j        |¦  «        ¦  «         t	          j        |t          j        ¬¦  «                             d¬¦  «        }|S r‘   )	rh   r„   r’   rg   r   Úzerosr   rƒ   rt   )r�   r–   r—   r˜   r=   Ú
sum_scoresrw   r\   s         €€r   Úget_sum_scoresz6calculate_recommend_sum_scores.<locals>.get_sum_scores
  s£   ø€ Ø”} QÔ'ˆà)+ˆØð 	!ð 	!ˆGÝ+¨G°W¸mÑLÔLˆEØ�MŠM˜%Ñ Ô Ð Ð åˆv‰;Œ;˜!ÒÐØ�MŠM�"œ( <Ñ0Ô0Ñ1Ô1Ð1å”X˜f­B¬JÐ7Ñ7Ô7×;Ò;ÀÐ;ÑCÔCˆ
àÐr   )r)   rK   rL   r   r   )r[   r\   rw   r©   r¢   r£   s    ``   r   Úcalculate_recommend_sum_scoresrª     sn   øø€ ð¥¥eÔ&6Ô!7ð ½EÔ<Lð ð ð ð ð ð ð ð ˆ.˜œÑ
(Ô
(€CØ
ˆ.˜œÑ
(Ô
(€Cà�‰9Ðr   r3   c           	      ó0  — t          j        |j        d         t           j        ¬¦  «        }| D ]g}t	          |j        ||¦  «        }t	          |j        ||¦  «        }t          j        d„ t          ||k    ||k    ¦  «        D ¦   «         ¦  «        }||z  }Œh|S )Nr   r€   c                 ó(   — g | ]\  }}|rd n|rdnd‘ŒS )ra   r   r^   r   )r    Ú	is_biggerÚis_equals      r   r"   z-calculate_discovery_ranks.<locals>.<listcomp>+  s>   € ð ð ð á'�I˜xð Ð9��¨Ð$9 A A°rðð ð r   )	r   r§   rh   Úint32r„   r   r   r   Úzip)r3   r\   rw   Úoverall_ranksÚpairr¢   r£   Ú
pair_rankss           r   Úcalculate_discovery_ranksr´     s©   € õ
 ”H˜Wœ]¨1Ô-µR´XÐ>Ñ>Ô>€MØð $ð $ˆå% d¤m°W¸mÑLÔLˆÝ% d¤m°W¸mÑLÔLˆå”Xðð å+.¨s°Sªy¸#Àº*Ñ+EÔ+Eðñ ô ñ
ô 
ˆ
ð 	˜Ñ#ˆˆàÐr   c                 ó¶   — t          | j        ||¦  «        }t          | j        ||¦  «        }t	          j        d„ |D ¦   «         t          j        ¦  «        }||z   S )Nc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r:   rœ   r�   s     r   rŸ   z-calculate_discovery_scores.<locals>.<genexpr>?  s+   è è € Ð?Ð? RÕ	˜RÑ	 Ô	 Ð?Ð?Ð?Ð?Ð?Ð?r   )r´   r3   r„   r2   r   r¡   rƒ   )r[   r\   rw   ÚranksÚdistances_to_targetÚsigmoided_distancess         r   Úcalculate_discovery_scoresrº   6  sc   € õ & e¤m°W¸mÑLÔL€Eõ 2°%´,ÀÈÑWÔWÐå,.¬KØ?Ð?Ð+>Ð?Ñ?Ô?ÅÄñ-ô -Ðð Ð&Ñ&Ð&r   c                 ód  — t          j        |j        d         t           j        ¬¦  «        }| j        D ]|}t          |j        ||¦  «        }t          |j        ||¦  «        }||z
  t          z
  }t          j	        d„ t          j
        |d¦  «        D ¦   «         t           j        ¦  «        }||z  }Œ}|S )Nr   r€   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r:   )r‹   r�   s     r   rŸ   z+calculate_context_scores.<locals>.<genexpr>P  s*   è è € ÐDÐD "�\˜"ÑÔÐDÐDÐDÐDÐDÐDr   r   )r   r§   rh   rƒ   r8   r„   r   r   rf   r¡   Úminimum)	r[   r\   rw   Úoverall_scoresr²   r¢   r£   Ú
differenceÚpair_scoress	            r   Úcalculate_context_scoresrÁ   E  s­   € õ ”X˜gœm¨AÔ.µb´jÐAÑAÔA€NØÔ#ð 	&ð 	&ˆå% d¤m°W¸mÑLÔLˆÝ% d¤m°W¸mÑLÔLˆà˜3‘Y¥Ñ(ˆ
Ý(*¬ØDÐD­¬
°:¸sÑ(CÔ(CÐDÑDÔDÅbÄjñ)
ô )
ˆð 	˜+Ñ%ˆˆàÐr   c                 ó"  — g }t          | j        ¦  «        dk    rŽt          | j        d¦  «        D ]x}|d         |d         }}|j        |j        z
  }|t          k    rŒ-|| j        j        z  | j        j        z  }|                     t          |j
        |j
        |¬¦  «        ¦  «         Œy| j        j        t          | j        ||¦  «        z  }	|D ]@}
t          |
j        ||¦  «        }t          |
j        ||¦  «        }||z
  }|	|
j        |z  z  }	ŒA|	S )Né   r   ra   rJ   )rg   rO   r   r=   Ú NAIVE_FEEDBACK_CONFIDENCE_MARGINrP   rC   rD   r’   rG   r!   rB   r„   r2   r   r   rH   )r[   r\   rw   r8   ÚpÚpositive_itemÚnegative_itemÚ
confidencerH   r=   r²   Úsim_posÚsim_negÚdeltas                 r   Úcalculate_naive_feedback_queryrÌ   W  s=  € ð 02€MÝ
ˆ5Œ>ÑÔ˜aÒÐÝ˜eœn¨aÑ0Ô0ð 	ð 	ˆAØ+,¨Q¬4°°1´˜=ˆMØ&Ô,¨}Ô/BÑBˆJàÕ=Ò=Ð=Øà#-¨uÔ/AÔ/CÑ#CÀuÔGYÔG[Ñ"[ÐØ× Ò Ý#Ø*Ô1Ø*Ô1Ø(;ðñ ô ñô ð ð ð ÔÔ Õ#:¸5¼<ÈÐR_Ñ#`Ô#`Ñ`€Eàð 2ð 2ˆÝ)¨$¬-¸À-ÑPÔPˆÝ)¨$¬-¸À-ÑPÔPˆØ˜'Ñ!ˆà�Ô)¨EÑ1Ñ1ˆˆà€Lr   ).Úenumr   Útypingr   Ú	itertoolsr   Únumpyr   Úqdrant_client.conversionsr   rK   Úqdrant_client.httpr   rf   rÄ   Ústrr
   r   r-   r1   r7   r<   rA   rG   rN   rS   Ú__annotations__rW   rZ   rL   rm   rp   rr   rv   r~   r„   rƒ   r‹   r�   r¤   rª   r)   r´   rº   rÁ   rÌ   r   r   r   ú<module>rÕ      s�  ðØ Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð à ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø %Ð %Ð %Ð %Ð %Ð %à
€ð $'Ð  ð,ð ,ð ,ð ,ð ,�C˜ñ ,ô ,ð ,ð
Zð Zð Zð Zð Zñ Zô Zð Zð(Yð Yð Yð Yð Yñ Yô Yð YðUð Uð Uð Uð Uñ Uô Uð Uð+ð +ð +ð +ð +ñ +ô +ð +ð
Wð Wð Wð Wð Wñ Wô Wð Wðð ð ð ð ñ ô ð ð7ð 7ð 7ð 7ð 7ñ 7ô 7ð 7ð[ð [ð [ð [ð [ñ [ô [ð [ð  -¨|Ñ;¸iÑGÐJ\Ñ\Ð �)Ð \Ð \Ñ \ð* ¤ð *°Mð *ð *ð *ð *ð $˜UÔ-ð $¸Ô8Hð $ÈUÔM]ð $ð $ð $ð $ð,(�uÔ'ð (°%Ô2Bð (ÀuÔGWð (ð (ð (ð (ðG˜eÔ.ð G¸Ô9Ið GÈeÔN^ð Gð Gð Gð GðG˜eÔ.ð G¸Ô9Ið GÈeÔN^ð Gð Gð Gð GðCØÔðCØ&+Ô&6ðCØGMÄðCà
ÔðCð Cð Cð Cð"AØÔðAØ&+Ô&6ðAØGMÄðAà
ÔðAð Að Að Að #�B”Jð # 2¤:ð #ð #ð #ð #ð0˜2œ:ð 0¨"¬*ð 0ð 0ð 0ð 0ðØðØ$Ô/ðØ@FÄðà
Ôðð ð ð ð>ØðØ$Ô/ðØ@FÄðà
Ôðð ð ð ð0Ø�+ÔðàÔðð ”?ðð Ôð	ð ð ð ð.'Øð'Ø$)Ô$4ð'ØEKÄ_ð'à
Ôð'ð 'ð 'ð 'ðØðØ"'Ô"2ðØCIÄ?ðà
Ôðð ð ð ð$ØðØ(-Ô(8ðØIOÌðà
Ôðð ð ð ð ð r   