§
    šŠtj¦
  ã                   ó0  — d Z ddlZddlmZmZmZmZ ddlZ ej	        e
¦  «        Zeeee                  eej                 ej        f         Zdededej        fd„Z	 	 ddeded	ee         d
ee         deeeeef                  ee         f         f
d„ZdS )zMath utils.é    N)ÚListÚOptionalÚTupleÚUnionÚXÚYÚreturnc                 ó  — t          | ¦  «        dk    st          |¦  «        dk    rt          j        g ¦  «        S t          j        | ¦  «        } t          j        |¦  «        }| j        d         |j        d         k    r t	          d| j        › d|j        › d�¦  «        ‚	 ddl}t          j        | t          j        ¬¦  «        } t          j        |t          j        ¬¦  «        }dt          j        |                     | |d¬	¦  «        ¦  «        z
  }|S # t          $ rë t           
                    d
¦  «         t          j                             | d¬¦  «        }t          j                             |d¬¦  «        }t          j        dd¬¦  «        5  t          j        | |j        ¦  «        t          j        ||¦  «        z  }ddd¦  «         n# 1 swxY w Y   d|t          j        |¦  «        t          j        |¦  «        z  <   |cY S w xY w)z<Row-wise cosine similarity between two equal-width matrices.r   é   z;Number of columns in X and Y must be the same. X has shape z and Y has shape ú.N)ÚdtypeÚcosine)ÚmetriczƒUnable to import simsimd, defaulting to NumPy implementation. If you want to use simsimd please install with `pip install simsimd`.©ÚaxisÚignore)ÚdivideÚinvalidg        )ÚlenÚnpÚarrayÚshapeÚ
ValueErrorÚsimsimdÚfloat32ÚcdistÚImportErrorÚloggerÚdebugÚlinalgÚnormÚerrstateÚdotÚTÚouterÚisnanÚisinf)r   r   ÚsimdÚZÚX_normÚY_normÚ
similaritys          ú\/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/utils/math.pyÚcosine_similarityr.      s2  € å
ˆ1�v„v�‚{€{•c˜!‘f”f ’k�kÝŒx˜‰|Œ|Ðå
Œ�‰Œ€AÝ
Œ�‰Œ€AØ„wˆq„z�Q”W˜Q”ZÒÐÝð*È!Ì'ð *ð *Ø œwð*ð *ð *ñ
ô 
ð 	
ðØÐÐÐåŒH�Q�bœjÐ)Ñ)Ô)ˆÝŒH�Q�bœjÐ)Ñ)Ô)ˆØ•”˜Ÿš A q°˜Ñ:Ô:Ñ;Ô;Ñ;ˆØˆøÝð ð ð Ý�ŠðHñ	
ô 	
ð 	
õ ”—’ ¨�Ñ*Ô*ˆÝ”—’ ¨�Ñ*Ô*ˆåŒ[ °(Ð;Ñ;Ô;ð 	Cð 	CÝœ  1¤3™œ­"¬(°6¸6Ñ*BÔ*BÑBˆJð	Cð 	Cð 	Cñ 	Cô 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cøøøð 	Cð 	Cð 	Cð 	CàBEˆ
•2”8˜JÑ'Ô'­"¬(°:Ñ*>Ô*>Ñ>Ñ?ØÐÐÐðøøøs8   Â A2D ÄA<HÆ1GÇ HÇG	ÇHÇG	Ç1HÈHé   Útop_kÚscore_thresholdc           
      óž  — t          | ¦  «        dk    st          |¦  «        dk    rg g fS t          | |¦  «        }|€dn|}d|||k     <   t          t          |pt          |¦  «        t          t	          j        |¦  «        ¦  «        ¦  «        ¦  «        }t	          j        || d¬¦  «        | d…         }|t	          j        |                     ¦   «         |         ¦  «                 ddd…         }t	          j	        ||j
        ¦  «        }|                     ¦   «         |                              ¦   «         }t          t          |Ž ¦  «        |fS )a¡  Row-wise cosine similarity with optional top-k and score threshold filtering.

    Args:
        X: Matrix.
        Y: Matrix, same width as X.
        top_k: Max number of results to return.
        score_threshold: Minimum cosine similarity of results.

    Returns:
        Tuple of two lists. First contains two-tuples of indices (X_idx, Y_idx),
            second contains corresponding cosine similarities.
    r   Ng      ð¿r   éÿÿÿÿ)r   r.   ÚintÚminr   Úcount_nonzeroÚargpartitionÚargsortÚravelÚunravel_indexr   ÚtolistÚlistÚzip)r   r   r0   r1   Úscore_arrayÚ
top_k_idxsÚret_idxsÚscoress           r-   Úcosine_similarity_top_krB   .   s.  € õ$ ˆ1�v„v�‚{€{•c˜!‘f”f ’k�kØ�2ˆvˆÝ# A qÑ)Ô)€KØ-Ð5�d�d¸?€OØ12€K�˜oÒ-Ñ.Ý•�EÐ-�S Ñ-Ô-­sµ2Ô3CÀKÑ3PÔ3PÑ/QÔ/QÑRÔRÑSÔS€EÝ” ¨u¨f¸4Ð@Ñ@Ô@À%ÀÀÀÔI€JØ�BœJ {×'8Ò'8Ñ':Ô':¸:Ô'FÑGÔGÔHÈÈÈ2ÈÔN€JÝÔ 
¨KÔ,=Ñ>Ô>€HØ×ÒÑ Ô  Ô,×3Ò3Ñ5Ô5€FÝ•�X�ÑÔ Ð'Ð'ó    )r/   N)Ú__doc__ÚloggingÚtypingr   r   r   r   Únumpyr   Ú	getLoggerÚ__name__r   ÚfloatÚndarrayÚMatrixr.   r4   rB   © rC   r-   ú<module>rN      s!  ðØ Ð à €€€Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /à Ð Ð Ð à	ˆÔ	˜8Ñ	$Ô	$€à	ˆt�D˜”KÔ  $ r¤zÔ"2°B´JÐ>Ô	?€ð˜ð  Fð ¨r¬zð ð ð ð ðH Ø'+ð	(ð (Øð(àð(ð �CŒ=ð(ð ˜e”_ð	(ð
 ˆ4��c˜3�h”Ô  $ u¤+Ð-Ô.ð(ð (ð (ð (ð (ð (rC   