§
    æ˜ºh  ã                   ó0   — d dl Z d dlZ G d„ d¦  «        ZdS )é    Nc                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚNoDuplicatesDataLoaderc                 óp   — || _         d| _        d| _        || _        t	          j        | j        ¦  «         dS )z±
        A special data loader to be used with MultipleNegativesRankingLoss.
        The data loader ensures that there are no duplicate sentences within the same batch
        r   N)Ú
batch_sizeÚdata_pointerÚ
collate_fnÚtrain_examplesÚrandomÚshuffle)Úselfr	   r   s      ú}/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/sentence_transformers/datasets/NoDuplicatesDataLoader.pyÚ__init__zNoDuplicatesDataLoader.__init__   s;   € ð
 %ˆŒØˆÔØˆŒØ,ˆÔÝŒ�tÔ*Ñ+Ô+Ð+Ð+Ð+ó    c              #   óü  K  — t          |                      ¦   «         ¦  «        D �]V}g }t          ¦   «         }t          |¦  «        | j        k     �r
| j        | j                 }d}|j        D ].}|                     ¦   «          	                    ¦   «         |v rd} nŒ/|rX| 
                    |¦  «         |j        D ];}|                     |                     ¦   «          	                    ¦   «         ¦  «         Œ<| xj        dz  c_        | j        t          | j        ¦  «        k    r d| _        t          j        | j        ¦  «         t          |¦  «        | j        k     �°
| j        �|                      |¦  «        n|V — �ŒXd S )NTFé   r   )ÚrangeÚ__len__ÚsetÚlenr   r	   r   ÚtextsÚstripÚlowerÚappendÚaddr
   r   r   )r   Ú_ÚbatchÚtexts_in_batchÚexampleÚvalid_exampleÚtexts          r   Ú__iter__zNoDuplicatesDataLoader.__iter__   s‰  è è € Ý�t—|’|‘~”~Ñ&Ô&ð 	Sñ 	SˆAØˆEÝ ™UœUˆNå�e‘*”*˜tœÒ.Ñ.ØÔ-¨dÔ.?Ô@�à $�Ø#œMð ð �DØ—z’z‘|”|×)Ò)Ñ+Ô+¨~Ð=Ð=Ø(-˜Ø˜ð >ð !ð AØ—L’L Ñ)Ô)Ð)Ø '¤ð Að A˜Ø&×*Ò*¨4¯:ª:©<¬<×+=Ò+=Ñ+?Ô+?Ñ@Ô@Ð@Ð@àÐ!Ô! QÑ&Ð!Ô!ØÔ$­¨DÔ,?Ñ(@Ô(@Ò@Ð@Ø()�DÔ%Ý”N 4Ô#6Ñ7Ô7Ð7õ# �e‘*”*˜tœÒ.Ñ.ð& -1¬OÐ,G�$—/’/ %Ñ(Ô(Ð(ÈUÐRÐRÐRÑRð/	Sð 	Sr   c                 ó^   — t          j        t          | j        ¦  «        | j        z  ¦  «        S )N)ÚmathÚfloorr   r	   r   )r   s    r   r   zNoDuplicatesDataLoader.__len__+   s$   € ÝŒz�#˜dÔ1Ñ2Ô2°T´_ÑDÑEÔEÐEr   N)Ú__name__Ú
__module__Ú__qualname__r   r!   r   © r   r   r   r      sI   € € € € € ð	,ð 	,ð 	,ðSð Sð Sð4Fð Fð Fð Fð Fr   r   )r
   r#   r   r(   r   r   ú<module>r)      sS   ðØ €€€Ø €€€ð'Fð 'Fð 'Fð 'Fð 'Fñ 'Fô 'Fð 'Fð 'Fð 'Fr   