� ���gF����ddlmZmZmZmZddlmZddlmZddl m Z ddl m Z m Z mZmZddlmZddlmZmZddlmZmZdd lmZdd lmZdd lmZmZmZm Z m!Z!dd l"m#Z#m$Z$m%Z%dd l&m'Z'm(Z(m)Z)m*Z*ddl+m,Z,ddl-m.Z.ddl/m0Z1ddl2m3Z3ddl4m5Z5m6Z6m7Z7ddl8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZIddlJmKZKmLZLmMZMmNZNmOZOmPZPddl/mQZRddlSmTZTmUZUmVZVmWZWmXZXmYZYmZZZddl[m\Z\ddl]m^Z^m_Z_ddl`maZaddlbZbddlcZcddldZdeZdeYdeXf���Zeecjfeg��Zhdeiddfd�Zjd eedeefd!�ZkGd"�d#e��Zl d+d$eRjmd%e:d&eTe;d'eTe<d(eTe=d)eTe>deVeRjnddffd*�ZodS),�)�retry�stop_after_attempt�retry_if_exception� wait_fixed)� ServerAPI)�CollectionConfigurationInternal)� UserIdentity)�DEFAULT_DATABASE�DEFAULT_TENANT�Settings�System)�SysDB)� QuotaEnforcer�Action)�RateLimitEnforcer�AsyncRateLimitEnforcer)�SegmentManager)�Executor)�Scan�Filter�Limit�KNN� Projection)� CountPlan�GetPlan�KNNPlan)�add_attributes_to_current_span�OpenTelemetryClient�OpenTelemetryGranularity� trace_method)�ProductTelemetryClient)�Producer)� Collection�� __version__)�InvalidDimensionException�InvalidCollectionException�VersionMismatchError)�CollectionMetadata�IDs� Embeddings� Metadatas� Documents�URIs�Where� WhereDocument�Include� IncludeEnum� GetResult� QueryResult�validate_metadata�validate_update_metadata�validate_where�validate_where_document�validate_batch)�CollectionAddEvent�CollectionDeleteEvent�CollectionGetEvent�CollectionUpdateEvent�CollectionQueryEvent�ClientCreateCollectionEventN)�Optional�Sequence� Generator�List�Any�Callable�TypeVar)�override)�UUID�uuid4)�wraps�T.)�bound� index_name�returnc�0�d|��}t|��dkst|��dkrt|���tjd|��st|���d|vrt|���tjd|��rt|���dS)NaExpected collection name that (1) contains 3-63 characters, (2) starts and ends with an alphanumeric character, (3) otherwise contains only alphanumeric characters, underscores or hyphens (-), (4) contains no two consecutive periods (..) and (5) is not a valid IPv4 address, got ��?z'^[a-zA-Z0-9][a-zA-Z0-9._-]*[a-zA-Z0-9]$z..z0^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$)�len� ValueError�re�match)rM�msgs �d/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/chromadb/api/segment.py�check_index_namerXOs��� � �  � �� �:������c�*�o�o��2�2���o�o�� �8�=�z� J� J����o�o�� �z�����o�o�� �x�E�z�R�R����o�o�����funcc�h��t���dtdtdtf�fd� ��}|S)N�args�kwargsrNc�T��|d}|j����|i|��S)Nr)�_rate_limit_enforcer� rate_limit)r\r]�selfrZs �rW�wrapperzrate_limit.<locals>.wrapperds2����A�w��9�t�(�3�3�D�9�9�4�J�6�J�J�JrY)rJrD)rZrbs` rWr`r`csV��� �4�[�[�K�s�K�c�K�c�K�K�K�K�K��[�K� �NrYc���eZdZUdZeed<eed<eed<eed<e ed<e ed<e ed<e ed <e ed <e ed <d ef�fd � Zedefd���Zedej��eefde de ddfd�����Zedej��eefde de dejfd�����Zedej��eefde de ddfd�����Zedej��eddefdeedeede deejfd�����Zedej��ede ddfd�����Zede fd���Z!ed ej��ede dej"fd!�����Z#ed"ej��ee$ddd#ee%fde d$ee&d%ee'd&e(de d'e de)fd(�������Z*ed)ej��ee$ddee%fde d$ee&d%ee'de d'e de)f d*�������Z+ed+ej��ee$dee%fdee de d'e de)fd,�������Z,ed-ej��ee$ddee%fdeedeede d'e dee)f d.�������Z-ed/ej��ee$ee%fde d'e defd0�������Z.ed1ej��ee$ddee%fd2e/d3ee d4ee'de d'e ddf d5�������Z0ed6ej��ee$ee%fde de d'e ddfd7�������Z1ed8ej��ee$dddee%fd9e2d:e/d;e3d<ee4d=ee5d>ee6de d'e de(fd?�������Z7ed@ej��ee$ddddee%fd:e/d9e2d;ee3d<ee4d=ee5d>ee6de d'e de(fdA�������Z8edBej��ee$dddee%fd:e/d9e2d;e3d<ee4d=ee5d>ee6de d'e de(fdC�������Z9edDej��e:e;dE���e<dF��e=dG��dH�I��ee$ddddddddgdJ�ee%f d:e/d9ee2dKee>dLee deedeedMeedNeedOee?dPe@de d'e deAfdQ���������ZBedRej��ee$dddee%fd:e/d9ee2dKee>dOee?de d'e ddfdS�������ZCedTej��e:e;dU���e<dF��e=dG��dH�I��ee$ee%fd:e/de d'e defdV���������ZDedWej��e:e;dX���e<dF��e=dG��dH�I��ee$dYddgdZ�ee%fd:e/d[e3d\edKee>dOee?dPe@de d'e deEfd]���������ZFed^ej��ee$dYee%fd:e/d_ede d'e deAf d`�������ZGede fda���ZHedqdb���ZIede(fdc���ZJedefdd���ZKedefde���ZLedfejM��dgejNdheOejPddfdi���ZQdgejNdjedke(ddfdl�ZRedmejM��d:e/dejNfdn���ZSedoejM��d:e/deTfdp���ZU�xZVS)r� SegmentAPIzHAPI implementation utilizing the new segment-based internal architecture� _settings�_sysdb�_manager� _executor� _producer�_product_telemetry_client�_opentelemetry_client� _tenant_id� _topic_nsr_�systemc�\��t���|��|j|_|�t ��|_|�t��|_|�t��|_ |�t��|_ |�t��|_|�t��|_|�t"��|_|j�t(��|_dS�N)�super�__init__�settingsre�requirerrfrrgrrhr�_quota_enforcerr!rjrrkr"ri�_systemrr_)rarn� __class__s �rWrrzSegmentAPI.__init__zs���� ������ � � ������l�l�5�)�)�� �� � �^�4�4�� ����h�/�/���#�|�|�M�:�:���)-���6L�)M�)M��&�%)�\�\�2E�%F�%F��"����h�/�/���$(�L�$8�$8�9J�$K�$K��!�!�!rYrNc�B�ttj����Srp)�int�time�time_ns�ras rW� heartbeatzSegmentAPI.heartbeat�s���4�<�>�>�"�"�"rYzSegmentAPI.create_database�name�tenantNc���t|��dkrtd���|j�tj||���|j�t��||���dS)NrPz0Database name must be at least 3 characters long)�actionrr~)�idr~r) rRrSru�enforcer�CREATE_DATABASErf�create_databaserI�rar~rs rWr�zSegmentAPI.create_database�s��� �t�9�9�q�=�=��O�P�P� P� ��$�$��)��� %� � � � � �#�#��w�w��� $� � � � � rYzSegmentAPI.get_databasec�:�|j�||���S�N)r~r)rf� get_databaser�s rWr�zSegmentAPI.get_database�s���{�'�'�T�&�'�A�A�ArYzSegmentAPI.delete_databasec�>�|j�||���dSr�)rf�delete_databaser�s rWr�zSegmentAPI.delete_database�s%�� � �#�#��f�#�=�=�=�=�=rYzSegmentAPI.list_databases�limit�offsetc�<�|j�|||���S)N)r�r�r)rf�list_databases)rar�r�rs rWr�zSegmentAPI.list_databases�s!���{�)�)��f�V�)�T�T�TrYzSegmentAPI.create_tenantc��t|��dkrtd���|j�|���dS)NrPz.Tenant name must be at least 3 characters long�r~)rRrSrf� create_tenant�rar~s rWr�zSegmentAPI.create_tenant�sN�� �t�9�9�q�=�=��M�N�N� N� � �!�!�� "� � � � � rYc�<�tdttg���S)N�)�user_idr� databases)r r r r|s rW�get_user_identityzSegmentAPI.get_user_identity�s%����!�'�(� � � � rYzSegmentAPI.get_tenantc�8�|j�|���S)Nr�)rf� get_tenantr�s rWr�zSegmentAPI.get_tenant�s���{�%�%�4�%�0�0�0rYzSegmentAPI.create_collectionF� configuration�metadata� get_or_create�databasec ���|�t|��t|��|j�tj|||���t ��}t||||�|n t��||d���}|j � |j |j |� ��g|jd|||�� � \} } | r:|j�| ��} | D]} |j �| ���nt$�d|�d���|j�t-t/|�������t1dt/|��i��| S)N�r�rr~r�)r�r~r�r�rr�� dimension) r�r~r��segmentsr�r�r�rr�� Collection z/ already exists, returning existing collection.)�collection_uuidr�)r5rXrur�r�CREATE_COLLECTIONrI�CollectionModelrrf�create_collectionr�r~�get_configurationr�rg�#prepare_segments_for_new_collection�create_segment�logger�debugrj�capturer?�strr) rar~r�r�r�rr�r��model�coll�createdr��segments rWr�zSegmentAPI.create_collection�s��� � � �h� '� '� '� ����� ��$�$��+���� %� � � ��W�W�������(�(�-�0�2�2����  �  �  ��� �5�5��x����1�1�3�3���^��'���6�  �  � ��g� � ��}�H�H��N�N�H�#� 4� 4��� �*�*�7�3�3�3�3� 4� �L�L�S�d�S�S�S� � � � �&�.�.� '� #�B��� � � � � � � '�(9�3�r�7�7�'C�D�D�D�� rYz#SegmentAPI.get_or_create_collectionc�8�|�|||d||���S)NT)r~r�r�r�rr�)r�)rar~r�r�rr�s rW�get_or_create_collectionz#SegmentAPI.get_or_create_collections3���%�%���'���� &� � � rYzSegmentAPI.get_collectionc�v�|j�|||���}|r|dStd|�d����)N�r~rr�rr�� does not exist.)rf�get_collectionsr'�rar~rr��existings rW�get_collectionzSegmentAPI.get_collection,sV���;�.�.��f�x�/� � �� � S��A�;� �,�-Q�4�-Q�-Q�-Q�R�R� RrYzSegmentAPI.list_collectionc��|j�tj||���|j�||||���S)N)r�rr�)r�r�rr�)rur�r�LIST_COLLECTIONSrfr�)rar�r�rr�s rW�list_collectionszSegmentAPI.list_collections>sZ�� ��$�$��*��� %� � � � �{�*�*���v��+� � � rYzSegmentAPI.count_collectionsc�X�t|j�||�����}|S)N�rr�)rRrfr�)rarr��collection_counts rW�count_collectionszSegmentAPI.count_collectionsRs4��� �K� '� '�v�� '� I� I� � �� �rYzSegmentAPI._modifyr��new_name� new_metadatac��|rt|��|rt|��|�|��}|j�t j|||���|r!|r|j�|||���dS|r|j�||���dS|r|j�||���dSdS)Nr�)r~r�r�)r�) rXr6�_get_collectionrur�r�UPDATE_COLLECTIONrf�update_collection)rar�r�r�rr��_s rW�_modifyzSegmentAPI._modify`s �� � '� �X� &� &� &� � 3� $�\� 2� 2� 2� � � �� $� $�� ��$�$��+���!� %� � � � � E� � E� �K� )� )�"�8�l� )� S� S� S� S� S� � E� �K� )� )�"�8� )� <� <� <� <� <� � E� �K� )� )�"�|� )� D� D� D� D� D� E� ErYzSegmentAPI.delete_collectionc��|j�|||���}|rO|j�|dj||���|j�|dj��dSt d|�d����)Nr�rr�r�r�)rfr��delete_collectionr�rg�delete_segmentsrSr�s rWr�zSegmentAPI.delete_collection�s����;�.�.��f�x�/� � �� � C� �K� )� )��� ��v�� *� � � � �M� )� )�(�1�+�.� 9� 9� 9� 9� 9��A�4�A�A�A�B�B� BrYzSegmentAPI._add�ids� collection_id� embeddings� metadatas� documents�urisc ���|�|��} |j�|tjj��t |||||fd|���i��tttjj|||||�����} |� | | ��|j � tj||||||���|j�|| ��|j�t%t'|��t)|��|�t)|��nd|�t)|��nd|�t)|��nd�����dS)N�max_batch_size�r�r�r�r�r��r�rr�r�r�r�r�r)r�� add_amount� with_metadata�with_documents� with_urisT)r�rg�hint_use_collection�t� Operation�ADDr9�get_max_batch_size�list�_records�_validate_embedding_record_setrur�rri�submit_embeddingsrjr�r:r�rR) rar�r�r�r�r�r�rr�r��records_to_submits rW�_addzSegmentAPI._add�s����#�#�M�2�2�� � �)�)�-����I�I�I�� �*�i��D� 9� �t�6�6�8�8� 9� � � �!� �� ���%�#�#��  � � �  �  �� �+�+�D�2C�D�D�D� ��$�$��:���!���� %� � � � ��(�(��8I�J�J�J� �&�.�.� � #�M� 2� 2��s�8�8�*3�*?�c�#�h�h�h�Q�+4�+@�s�3�x�x�x�a�&*�&6�#�c�(�(�(�A�  � � � � � ��trYzSegmentAPI._updatec ��|�|��} |j�|tjj��t |||||fd|���i��tttjj|||||�����} |� | | ��|j � tj||||||���|j�|| ��|j�t%t'|��t)|��|rt)|��nd|rt)|��nd|rt)|��nd|rt)|��nd�����dS)Nr�r�r�r)r�� update_amount�with_embeddingsr�r�r�T)r�rgr�r�r��UPDATEr9r�r�r�r�rur�rrir�rjr�r=r�rR� rar�r�r�r�r�r�rr�r�r�s rW�_updatezSegmentAPI._update�s����#�#�M�2�2�� � �)�)�-���9K�L�L�L�� �*�i��D� 9� �t�6�6�8�8� 9� � � �!� �� �"��%�#�#��  � � �  �  �� �+�+�D�2C�D�D�D� ��$�$��=���!���� %� � � � ��(�(��8I�J�J�J� �&�.�.� !� #�M� 2� 2�!�#�h�h�3=� D��J����1�09�@�c�)�n�n�n�q�1:�A�s�9�~�~�~��'+�2�#�d�)�)�)��  � � � � � ��trYzSegmentAPI._upsertc ���|�|��} |j�|tjj��t |||||fd|���i��tttjj|||||�����} |� | | ��|j � tj||||||���|j�|| ��dS)Nr�r�r�T)r�rgr�r�r��UPSERTr9r�r�r�r�rur�rrir�r�s rW�_upsertzSegmentAPI._upsert s���#�#�M�2�2�� � �)�)�-���9K�L�L�L�� �*�i��D� 9� �t�6�6�8�8� 9� � � �!� �� �"��%�#�#��  � � �  �  �� �+�+�D�2C�D�D�D� ��$�$��=���!���� %� � � � ��(�(��8I�J�J�J��trYzSegmentAPI._getc�,�t|t��Srp�� isinstancer(��es rW�<lambda>zSegmentAPI.<lambda>:���:�a�9M�+N�+N�rY��T)r�wait�stop�reraise)r�r�r��where�sort�page� page_size�where_document�includec �<�tt|��|rt|��ndd���|�|��} |�t |��| �t | ��|j�tj | ||| |���|�td���|r |r |dz |z}|}|rt|��nd}|j � tt|��||r|ndd| vr|ndd| vr|ndd| vr|nd� ����|j�t!| t#||| ��t%|pd|��t't(j| vt(j| vt(j| vd t(j| v������S) Nr�r�� ids_count)r�rr�r�rr�zSorting is not yet supported�r�r�r�)r�rr��include_metadata�include_documents� include_urisF)rr�rR�_scanr7r8rur�r�GET�NotImplementedErrorrjr�r<rh�getrrrrr2r�r�r�r�)rar�r�r�r�r�r�r�r�rrrr��scan� ids_amounts rW�_getzSegmentAPI._get8s���0 '�!$�]�!3�!3�),�3�S��X�X�X�!� � � � � ��z�z�-�(�(�� � � �5� !� !� !� � %� #�N� 3� 3� 3� ��$�$��:����)�� %� � � � � �%�&D�E�E� E� � �I� ��Q�h�)�+�F��E�!$�+�S��X�X�X�!� � �&�.�.� � #�M� 2� 2�$�$�+�e�e�!�/:�g�/E�/E���1�0;�w�0F�0F�*�*�A�+1�W�+<�+<�Z�Z�!�  � � � � � ��~�!�!� ���s�E�>�2�2��f�k��5�)�)���)�W�4��*�g�5��)�W�4���$��/� �� � �  �  � rYzSegmentAPI._deletec �$�tt|��|rt|��ndd���|�t|��|�t |��|�|�Pt|��dkr=|�|�9t|��dkr&|�|�"t|��dkrt d���|�|��}|j�tj ||||���|j � |tjj ��|s|s|s>|j�t#|t%|||������d}n|}t|��dkrdSt't)tjj |�����} |�|j| ��|j�|| ��|j�t7t|��t|�������dS)NrraU You must provide either ids, where, or where_document to delete. If you want to delete all data in a collection you can delete the collection itself using the delete_collection method. Or alternatively, you can get() all the relevant ids and then delete them. )r�rr�r�rr�)� operationr�)r�� delete_amount)rr�rRr7r8rSr rur�r�DELETErgr�r�r�rhr rrr�r�r�� collectionrir�rjr�r;) rar�r�r�rrr�r � ids_to_deleter�s rW�_deletezSegmentAPI._delete�sF�� '�!$�]�!3�!3�),�3�S��X�X�X�!� � � � � � � � �5� !� !� !� � %� #�N� 3� 3� 3��[�S�_��S���Q�����5�#4��U���q����&�"�.�3�~�3F�3F�!�3K�3K����� ��z�z�-�(�(�� ��$�$��=����)� %� � � � � �)�)�-���9K�L�L�L� � �^� �C� � �N�.�.���f�S�%��@�@�A�A�����M�M� �M� �}� � �� "� "� �F� � �q�{�1�}� E� E� E� � �� �+�+�D�O�=N�O�O�O� ��(�(��8I�J�J�J� �&�.�.� !� #�M� 2� 2�#�m�BT�BT� � � � � � � � rYzSegmentAPI._countc�,�t|t��Srpr�r�s rWr�zSegmentAPI.<lambda>�r�rYc��tdt|��i��|j�t |�|������S)Nr�)rr�rh�countrr )rar�rr�s rW�_countzSegmentAPI._count�sI�� '���]�9K�9K�'L�M�M�M��~�#�#�I�d�j�j��.G�.G�$H�$H�I�I�IrYzSegmentAPI._queryc�,�t|t��Srpr�r�s rWr�zSegmentAPI.<lambda>�r�rY� )r�r�� distances�query_embeddings� n_resultsc �|�tt|��|t|��d���t|��} |j�t t|��| ||�| nd|�| ndd|vr| ndd|vr| ndd|vr| ndd|vr| nd�� � ��|�t |��|�t|��|�|��} |D],} |� | j t| ��d� ���-|j � tj|||||� ��|j�t#| t%||��t'd||��t)t*j|vt*j|vt*j|vt*j|vt*j|v������S) N)r�rr�rr�r�r�r) r�� query_amountr�with_metadata_filter�with_document_filter�include_metadatasrr�include_distancesF��update)r�rr�rrr)rr�rRrjr�r>r7r8r �_validate_dimensionrrur�r�QUERYrh�knnrrrrr2r�r�r�rr�) rar�rrr�rrrr�r!r � embeddings rW�_queryzSegmentAPI._query�s��6 '�!$�]�!3�!3�&��U��� � � � � ��+�,�,� � �&�.�.� � #�M� 2� 2�)�#�5:�5F�\�\�A�5C�5O�\�\�UV�2=��2H�2H�,�,�a�2=��2H�2H�,�,�a�-3�w�->�->�\�\�A�2=��2H�2H�,�,�a� � � � � � � � � �5� !� !� !� � %� #�N� 3� 3� 3��z�z�-�(�(��)� T� T�I� � $� $�T�_�c�)�n�n�U� $� S� S� S� S� ��$�$��<���)�-�� %� � � ��~�!�!� ���$�i�0�0��t�U�N�3�3���)�W�4��*�g�5��)�W�4��)�W�4��$��/� �� � �  �  � rYzSegmentAPI._peek�nc�l�tdt|��i��|�||���S)Nr�)r�)rr�r)rar�r-rr�s rW�_peekzSegmentAPI._peek?s5�� '���]�9K�9K�'L�M�M�M��y�y��a�y�0�0�0rYc��tSrpr$r|s rW� get_versionzSegmentAPI.get_versionLs���rYc��dSrp�r|s rW� reset_statezSegmentAPI.reset_statePs�� �rYc�8�|j���dS)NT)rvr4r|s rW�resetzSegmentAPI.resetTs�� � � � �"�"�"��trYc��|jSrp)rer|s rW� get_settingszSegmentAPI.get_settingsYs ���~�rYc��|jjSrp)rir�r|s rWr�zSegmentAPI.get_max_batch_size]s ���~�,�,rYz)SegmentAPI._validate_embedding_record_setr�recordsc��tdt|d��i��|D]5}|d�+|�|t|d��d����6dS)zQValidate the dimension of an embedding record before submitting it to the system.r�r�r+NTr&)rr�r(rR)rarr:�records rWr�z)SegmentAPI._validate_embedding_record_setesz�� '���Z��=M�9N�9N�'O�P�P�P�� � �F��k�"�.��(�(���F�;�$7� 8� 8��)����� � rY�dimr'c���|d�.|r*|j}|j�||���||d<dSdS|d|krtd|�d|d�����dS)z�Validate that a collection supports records of the given dimension. If update is true, update the collection if the collection doesn't already have a dimension.r�N)r�r�zEmbedding dimension z* does not match collection dimensionality )r�rfr�r&)rarr=r'r�s rWr(zSegmentAPI._validate_dimensionts��� �k� "� *�� .��]��� �-�-��s�-�C�C�C�*-� �;�'�'�'� .� .�� � $�� +� +�+�o�s�o�o�V`�al�Vm�o�o��� � �FrYzSegmentAPI._get_collectionc��|j�|���}|rt|��dkrtd|�d����|dS)N)r�rr�r�)rfr�rRr')rar�� collectionss rWr�zSegmentAPI._get_collection�s`���k�1�1�]�1�C�C� �� �c�+�.�.�!�3�3�,�=�m�=�=�=��� ��1�~�rYzSegmentAPI._scanc �&�|j�|��}d�|dD��}t|d|tjj|tjj|�tjjd�����S)Nc� �i|] }|d|�� S)�scoper3)�.0r�s rW� <dictcomp>z$SegmentAPI._scan.<locals>.<dictcomp>�s,�� � � �*1�G�G� �g� � � rYr�r)rr*r�r<) rf�get_collection_with_segmentsrr�� SegmentScope�VECTOR�METADATAr �RECORD)rar��collection_and_segments�scope_to_segments rWr zSegmentAPI._scan�s���"&�+�"J�"J� �# �# ��  � �5L�Z�5X� � � ���.�|�<� ���!6�7�%�a�n�&=�>�#�'�'���(=�t�D�D�  � � � rY)rNN)W�__name__� __module__� __qualname__�__doc__r �__annotations__rrrr"r!rr�rr rrrGryr}r r� OPERATIONr r�r��Databaser�r�r@rAr�r�r r��Tenantr�r`r rr)�boolr�r�r�r�r�r�rHr�r�r*r+r,r-r.r�r�r�rrrrr/r0r1r3rrrr4r,r/r1r4r6r8r��ALLr#rC�OperationRecordr�r(r�rr � __classcell__)rws@rWrdrdlsB��������R�R����� �M�M�M�������������5�5�5�5�.�.�.�.��O�O�O��N�N�N�+�+�+�+� L�v� L� L� L� L� L� L��#�3�#�#�#��X�#��\�.�0H�0R�S�S� �7E� � �C� �� �$� � � ��X�T�S� � �\�+�-E�-O�P�P� �4B�B�B��B�c�B�q�z�B�B�B��X�Q�P�B��\�.�0H�0R�S�S� �7E�>�>�C�>��>�$�>�>�>��X�T�S�>��\�-�/G�/Q�R�R� � $� $�$� U�U���}�U��� �U�� U� �!�*� � U�U�U��X�S�R�U��\�,�.F�.P�Q�Q� � �#� �$� � � ��X�R�Q� �� �<� � � ��X� ��\�)�+C�+M�N�N� �1�s�1�q�x�1�1�1��X�O�N�1� �\�0�2J�2T�U�U� ��DH�15�#�$�(�D�D��D� � ?�@�D��-�.� D� � D� � D��D� �D�D�D��Z��X�V�U�D�L�\�-�/G�/Q�����DH�15�$�(�  � �� � � ?�@� ��-�.�  � �  � �  � � � � ��Z��X���  �(�\�-�/G�/Q�R�R� ��#�$�(� S� S��s�m� S�� S�� S� � S� S� S��Z��X�S�R� S��\�.�0H�0R�S�S� �� $� $�$�(�  � ���}� ��� � ��  � �  � �/� "�  � � ��Z��X�T�S� �"�\�0�2J�2T�U�U� ��%�(�  �  ��  ��  � �  �  �  ��Z��X�V�U�  ��\�&�(@�(J�K�K� ��#'�59�$�(� E� E� � E��3�-� E��1�2� E� � E� � E� � E� E� E��Z��X�L�K� E�D�\�0�2J�2T�U�U� ��%�(� C�C��C��C�� C� � C�C�C��Z��X�V�U�C�$�\�#�%=�%G�H�H� �� *.�)-�#�$�(�2�2� �2��2�� 2� �I�&� 2� �I�&� 2��t�n�2��2��2� �2�2�2��Z��X�I�H�2�h�\�&�(@�(J�K�K� �� ,0�)-�)-�#�$�(�4�4��4��4��Z�(� 4� �I�&� 4� �I�&� 4��t�n�4��4��4� �4�4�4��Z��X�L�K�4�l�\�&�(@�(J�K�K� �� *.�)-�#�$�(�)�)��)��)�� )� �I�&� )� �I�&� )��t�n�)��)��)� �)�)�)��Z��X�L�K�)�V�\�#�%=�%G�H�H� �U� � �!N�!N�O�O� �Z��]�]� � �� "� "�� ��� ��"�!%�"�#� $�"�#'�26�C�C�C�$�(�H �H ��H ��c�]�H ���� H � �s�m� H � ��}� H ��� �H ��s�m�H ��C�=�H �!��/�H ��H ��H ��H � �H �H �H ��Z��X� ��I�H�H �T�\�&�(@�(J�K�K� ��"�!%�26�$�(�I �I ��I ��c�]�I ���� I � !��/� I � � I ��I � �I �I �I ��Z��X�L�K�I �V�\�%�'?�'I�J�J� �U� � �!N�!N�O�O� �Z��]�]� � �� "� "�� ��� ��%�(� J�J��J��J�� J� � J�J�J��Z��X� ��K�J�J��\�%�'?�'I�J�J� �U� � �!N�!N�O�O� �Z��]�]� � �� "� "�� ��� �� �!%�26�B�B�B�$�(�B �B ��B �%�B �� B � ��� B � !��/� B ��B ��B ��B � �B �B �B ��Z��X� ��K�J� B �H�\�$�&>�&H�I�I� ���$�(� 1�1��1� �1�� 1� � 1� � 1�1�1��Z��X�J�I�1���S�����X��� � � ��X� ���t�����X����h�����X���-�C�-�-�-��X�-��\�3�5M�5Q��� ��,� �15�a�6G�1H� � � � � ��� ���,��-0��:>�� �����$�\�.�0H�0L�M�M��T��a�l����N�M���\�$�&>�&B�C�C� �4� �D� � � �D�C� � � � � rYrdrr�r�r�r�r�c#�,K�|gkrd}t|��D]y\}}d}|r||}|r||} |r i|�d| i�}nd| i}|r||} |r i|�d| i�}nd| i}tj||�||ndtjj||���} | V��zdS)ziConvert parallel lists of embeddings, metadatas and documents to a sequence of SubmitEmbeddingRecordsNzchroma:documentz chroma:uri)r�r+�encodingr�r)� enumerater�rW�ScalarEncoding�FLOAT32) rr�r�r�r�r��ir�r��document�urir<s rWr�r��s �����R���� ��3�������2��� � $� ��|�H� � 9� ��|�H�� 9�D�h�D�(9�8�D�D���-�x�8�� � /��q�'�C�� /�:�h�:� �c�:�:���(�#�.���"��'1�'=�j��m�m�4��%�-���  � � ��� � � � �5�rY)NNNN)p�tenacityrrrr� chromadb.apir�chromadb.api.configurationr� chromadb.authr �chromadb.configr r r r �chromadb.db.systemr�chromadb.quotarr�chromadb.rate_limitrr�chromadb.segmentr�$chromadb.execution.executor.abstractr�&chromadb.execution.expression.operatorrrrrr�"chromadb.execution.expression.planrrr� chromadb.telemetry.opentelemetryrrrr �chromadb.telemetry.productr!�chromadb.ingestr"�chromadb.typesr#r��chromadbr%�chromadb.errorsr&r'r(�chromadb.api.typesr)r*r+r,r-r.r/r0r1r2r3r4r5r6r7r8r9�!chromadb.telemetry.product.eventsr:r;r<r=r>r?�typesr��typingr@rArBrCrDrErF� overridesrG�uuidrHrI� functoolsrJrz�loggingrTrK� getLoggerrMr�r�rXr`rdr�rWr�r3rYrW�<module>r|s���N�N�N�N�N�N�N�N�N�N�N�N�"�"�"�"�"�"�F�F�F�F�F�F�&�&�&�&�&�&�N�N�N�N�N�N�N�N�N�N�N�N�$�$�$�$�$�$�0�0�0�0�0�0�0�0�I�I�I�I�I�I�I�I�+�+�+�+�+�+�9�9�9�9�9�9�W�W�W�W�W�W�W�W�W�W�W�W�W�W�J�J�J�J�J�J�J�J�J�J������������� >�=�=�=�=�=�$�$�$�$�$�$�8�8�8�8�8�8� � � � � � ����������� ��������������������������������������&������������������������������������������������������������ � � � ����� � � � � �G�C�x��S��)�*�*�*�� �� �8� $� $����������(�Q��1�����t  �t  �t  �t  �t  ��t  �t  �t  �t(,�%)�%)�� ,�,��{�,� �,���$�,�� �"� ,� � �"� ,� �4�.� ,��q� �$��,�-�,�,�,�,�,�,rY
Memory