§
    ˜Štj  ã                   ó¤  — d dl Z d dlmZmZ d dlZd dlZd dlZd dlm	Z	m
Z
mZmZmZ d dlmZ d dlmZ d dlmZ  G d„ de
e	         ¦  «        Zd	efd
„Zd	efd„Zej         e¦   «         fde
e	         d	eej        ddf         fd„¦   «         Z e¦   «         ddfdej        de
e	         deded	df
d„Zej        j        dej        d	dfd„¦   «         ZdS )é    N)Ú	GeneratorÚcast)Ú
EmbeddableÚEmbeddingFunctionÚ
EmbeddingsÚImageÚDocument)Úhashing_embedding_function)Ú_exact_distances)ÚSettingsc                   ó&   — e Zd Zdd„Zdedefd„ZdS )Úhashing_multimodal_efÚreturnNc                 óF   — t          dt          j        ¬¦  «        | _        d S )Né
   )ÚdimÚdtype)r
   ÚnpÚfloat64Ú_hef)Úselfs    úa/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/chromadb/test/ef/test_multimodal_ef.pyÚ__init__zhashing_multimodal_ef.__init__   s   € Ý.°2½R¼ZÐHÑHÔHˆŒ	ˆ	ˆ	ó    Úinputc                 ó   — d„ |D ¦   «         }t          j        |                      |¦  «        ¦  «        }|t           j                             |dd¬¦  «        z  }t          t          |                     ¦   «         ¦  «        S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS © ©Ústr©Ú.0Úis     r   ú
<listcomp>z2hashing_multimodal_ef.__call__.<locals>.<listcomp>   s   € Ð*Ð*Ð*˜q•C˜‘F”FÐ*Ð*Ð*r   é   T)ÚaxisÚkeepdims)r   Úarrayr   ÚlinalgÚnormr   r   Útolist)r   r   Úto_textsÚ
embeddingss       r   Ú__call__zhashing_multimodal_ef.__call__   sl   € Ø*Ð* EÐ*Ñ*Ô*ˆÝ”X˜dŸiši¨Ñ1Ô1Ñ2Ô2ˆ
ð 	•b”i—n’n Z°aÀ$�nÑGÔGÑGˆ
Ý•J 
× 1Ò 1Ñ 3Ô 3Ñ4Ô4Ð4r   )r   N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r.   r   r   r   r   r      sN   € € € € € ðIð Ið Ið Ið5˜jð 5¨Zð 5ð 5ð 5ð 5ð 5ð 5r   r   r   c                  ó\   — t           j                             dddt           j        ¬¦  «        S )Nr   éÿ   )r   r   é   )Úsizer   )r   ÚrandomÚrandintÚint64r   r   r   Úrandom_imager9   !   s#   € ÝŒ9×Ò˜Q ¨+½R¼XÐÑFÔFÐFr   c                  ó8   — t          t          ¦   «         ¦  «        S )N)r    r9   r   r   r   Úrandom_documentr;   %   s   € Ý�|‰~Œ~ÑÔÐr   Ú
default_efc              #   ó°  K  — t          ¦   «         }t          j                             d¦  «        rbt          j                             dd¦  «        }t	          t          j                             dd¦  «        ¦  «        }d|_        ||_        ||_        t          j	        |¬¦  «        }| 
                    d| ¬	¦  «        }|V — |                     ¦   «          d S )
NÚCHROMA_INTEGRATION_TEST_ONLYÚCHROMA_SERVER_HOSTÚ	localhostÚCHROMA_SERVER_HTTP_PORTr   zchromadb.api.fastapi.FastAPI)ÚsettingsÚmultimodal_collection)ÚnameÚembedding_function)r   ÚosÚenvironÚgetÚintÚchroma_api_implÚchroma_server_http_portÚchroma_server_hostÚchromadbÚClientÚcreate_collectionÚclear_system_cache)r<   rB   ÚhostÚportÚclientÚ
collections         r   rC   rC   )   sË   è è € õ ‰zŒz€HÝ	„z‡~‚~Ð4Ñ5Ô5ð +ÝŒz�~Š~Ð2°KÑ@Ô@ˆÝ•2”:—>’>Ð";¸QÑ?Ô?Ñ@Ô@ˆØ#AˆÔ Ø+/ˆÔ(Ø&*ˆÔ#åŒ_ hÐ/Ñ/Ô/€FØ×)Ò)Ø$¸ð *ñ ô €Jð ÐÐÐØ
×ÒÑÔÐÐÐr   r   r4   rC   Ú
n_examplesÚn_query_resultsc                 óà  ‡‡‡— t           j                             ¦   «         }t           j                             d¦  «         d„ t	          ‰¦  «        D ¦   «         Šd„ t	          ‰¦  «        D ¦   «         } ||¦  «        }d„ t	          ‰d‰z  ¦  «        D ¦   «         Šd„ t	          ‰¦  «        D ¦   «         } ||¦  «        }t          j        t          d¬¦  «        5  |                      ‰d         |d         |d         ¬	¦  «         d d d ¦  «         n# 1 swxY w Y   |                      ‰|¬
¦  «         |                      ‰|¬¦  «         |  	                    dg¬¦  «        }	t          |	d         ¦  «        t          ‰¦  «        t          ‰¦  «        z   k    sJ ‚t          |	d         ¦  «        D ]^\  }
}|‰v s|‰v sJ ‚|	d         €J ‚|‰v r-|	d         |
         |‰                     |¦  «                 k    sJ ‚|‰v r|	d         |
         �J ‚Œ_t          ¦   «         } ||g¦  «        }t          |||z   ¦  «        \  }}ˆˆˆfd„|d         d |…         D ¦   «         }t          ¦   «         } ||g¦  «        }t          |||z   ¦  «        \  }}ˆˆˆfd„|d         d |…         D ¦   «         }t          j        t          ¦  «        5  |                      |g|g¬¦  «         d d d ¦  «         n# 1 swxY w Y   |                      |g|dg¬¦  «        }|d         d         |k    sJ ‚|                      |g|dg¬¦  «        }|d         d         |k    sJ ‚t           j                             |¦  «         d S )Nr   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r   r   r!   s     r   r$   z#test_multimodal.<locals>.<listcomp>H   s   € Ð3Ð3Ð3˜A•�Q‘”Ð3Ð3Ð3r   c                 ó*   — g | ]}t          ¦   «         ‘ŒS r   )r9   ©r"   Ú_s     r   r$   z#test_multimodal.<locals>.<listcomp>I   s   € Ð8Ð8Ð8 �l‰nŒnÐ8Ð8Ð8r   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r   r   r!   s     r   r$   z#test_multimodal.<locals>.<listcomp>L   s   € ÐFÐFÐF˜q•C˜‘F”FÐFÐFÐFr   é   c                 ó*   — g | ]}t          ¦   «         ‘ŒS r   )r;   rZ   s     r   r$   z#test_multimodal.<locals>.<listcomp>M   s   € Ð>Ð>Ð> q•Ñ"Ô"Ð>Ð>Ð>r   z|Exactly one of (images|documents|uris)(?:, (images|documents|uris))?(?:, (images|documents|uris))? must be provided in add\.)Úmatch)ÚidsÚ	documentsÚimages©r`   ra   ©r`   rb   ra   )Úincluder`   c                 óB   •— g | ]}|‰k     r‰|         n
‰|‰z           ‘ŒS r   r   ©r"   r#   Údocument_idsÚ	image_idsrU   s     €€€r   r$   z#test_multimodal.<locals>.<listcomp>s   sB   ø€ ð "ð "ð "àð ˜Jš˜ˆ	�!Œˆ¨L¸¸Z¹Ô,Hð"ð "ð "r   c                 óB   •— g | ]}|‰k     r‰|         n
‰|‰z           ‘ŒS r   r   rg   s     €€€r   r$   z#test_multimodal.<locals>.<listcomp>~   sB   ø€ ð %ð %ð %àð ˜Jš˜ˆ	�!Œˆ¨L¸¸Z¹Ô,Hð%ð %ð %r   )Úquery_imagesÚquery_texts)rk   Ú	n_resultsre   )rl   rm   re   )r   r6   Ú	get_stateÚseedÚrangeÚpytestÚraisesÚ
ValueErrorÚaddrH   ÚlenÚ	enumerateÚindexr9   r   r;   ÚqueryÚ	set_state)rC   r<   rU   rV   Úrandom_staterb   Úimage_embeddingsra   Údocument_embeddingsÚ
get_resultr#   ÚidÚquery_imageÚquery_image_embeddingÚimage_neighbor_indicesr[   Únearest_image_neighbor_idsÚquery_documentÚquery_document_embeddingÚdocument_neighbor_indicesÚnearest_document_neighbor_idsÚquery_resultrh   ri   s     `                   @@r   Útest_multimodalrˆ   >   sÄ  øøø€ õ ”9×&Ò&Ñ(Ô(€LÝ„I‡N‚N�1ÑÔÐà3Ð3¥ zÑ!2Ô!2Ð3Ñ3Ô3€IØ8Ð8¥e¨JÑ&7Ô&7Ð8Ñ8Ô8€FØ!�z &Ñ)Ô)ÐàFÐF¥E¨*°a¸*±nÑ$EÔ$EÐFÑFÔF€LØ>Ð>­E°*Ñ,=Ô,=Ð>Ñ>Ô>€IØ$˜* YÑ/Ô/Ðõ 
ŒÝð Nð
ñ 
ô 
ð 
ð 
ð
 	×!Ò!Ø˜!”¨	°!¬¸VÀA¼Yð 	"ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð ×Ò ,¸)ÐÑDÔDÐDà×Ò )°FÐÑ;Ô;Ð;ð '×*Ò*°K°=Ð*ÑAÔA€JÝˆz˜%Ô Ñ!Ô!¥S¨Ñ%6Ô%6½¸Y¹¼Ñ%GÒGÐGÐGÐGÝ˜: eÔ,Ñ-Ô-ð 6ð 6‰ˆˆ2Ø�\Ð!Ð! R¨9 _ _ _Ð4Ø˜+Ô&Ð2Ð2Ð2Ø�ÐÐØ˜kÔ*¨1Ô-°¸<×;MÒ;MÈbÑ;QÔ;QÔ1RÒRÐRÐRÐRØ�ˆ?ˆ?Ø˜kÔ*¨1Ô-Ð5Ð5Ð5øõ ‘.”.€KØ&˜J¨ }Ñ5Ô5Ðå 0ØÐ/Ð2EÑEñ!ô !ÑÐ˜Að"ð "ð "ð "ð "ð "à'¨Ô*Ð+;¨OÐ+;Ô<ð"ñ "ô "Ðõ %Ñ&Ô&€NØ)˜z¨>Ð*:Ñ;Ô;ÐÝ#3Ø Ð"2Ð5HÑ"Hñ$ô $Ñ Ð˜qð%ð %ð %ð %ð %ð %à*¨1Ô-Ð.>¨Ð.>Ô?ð%ñ %ô %Ð!õ 
Œ•zÑ	"Ô	"ð 
ð 
Ø×#Ò#Ø%˜°^Ð4Dð 	$ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð )×.Ò.Ø!�]¨oÈÀ}ð /ñ ô €Lð ˜Ô˜qÔ!Ð%?Ò?Ð?Ð?Ð?ð )×.Ò.Ø#Ð$°È+Èð /ñ ô €Lð ˜Ô˜qÔ!Ð%BÒBÐBÐBÐBÝ„I×Ò˜Ñ%Ô%Ð%Ð%Ð%s$   Ã+DÄDÄDËK(Ë(K,Ë/K,c                 ó  — t          ¦   «         }t          ¦   «         }d}|                      ||¬¦  «         |                      ||¬¦  «         |                      |dg¬¦  «        }|d         €J ‚|d         d         �J ‚d S )NÚ0rc   rd   ra   )r`   re   r   )r;   r9   rt   ÚupdaterH   )rC   ÚdocumentÚimager~   r}   s        r   Ú!test_multimodal_update_with_imagerŽ   ™   s–   € õ Ñ Ô €HÝ‰NŒN€EØ	€Bà×Ò "°ÐÑ9Ô9Ð9à× Ò  R°Ð Ñ6Ô6Ð6à&×*Ò*¨r¸K¸=Ð*ÑIÔI€JØ�kÔ"Ð.Ð.Ð.Ø�kÔ" 1Ô%Ð-Ð-Ð-Ð-Ð-r   )rF   Útypingr   r   Únumpyr   rq   rM   Úchromadb.api.typesr   r   r   r   r	   Ú!chromadb.test.property.strategiesr
   Ú!chromadb.test.property.invariantsr   Úchromadb.configr   r   r9   r;   ÚfixtureÚ
CollectionrC   rI   rˆ   ÚmarkÚxfailrŽ   r   r   r   ú<module>r™      s7  ðØ 	€	€	€	Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ø €€€Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð IÐ HÐ HÐ HÐ HÐ HØ >Ð >Ð >Ð >Ð >Ð >Ø $Ð $Ð $Ð $Ð $Ð $ð

5ð 
5ð 
5ð 
5ð 
5Ð-¨jÔ9ñ 
5ô 
5ð 
5ðG�eð Gð Gð Gð Gð˜ð ð ð ð ð „à0EÐ0EÑ0GÔ0Gð ð  Ø! *Ô-ð àˆxÔ" D¨$Ð.Ô/ð ð  ð  ñ „ð ð, 1FÐ0EÑ0GÔ0GØØð	X&ð X&Ø#Ô.ðX&à! *Ô-ðX&ð ðX&ð ð	X&ð
 
ðX&ð X&ð X&ð X&ðv „Ôð.Ø#Ô.ð.à	ð.ð .ð .ñ Ôð.ð .ð .r   