§
    šŠtjWL  ã                  óÊ   — d dl 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
mZmZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d	Zd
ZdZdZdZdZdZ G d„ de¦  «        Z dS )é    )ÚannotationsN)ÚAnyÚDictÚListÚOptionalÚSequenceÚTupleÚType)ÚDocument)Ú
Embeddings)ÚUpsertResponse)ÚVectorStore)ÚoverrideÚHNSWÚCSÚ	langchainiè  Úlc_ÚtextÚuniqueidc                  óº  ‡ — e Zd Zeedddej        dfdEˆ fd„¦   «         ZdFd„ZedGdHd„¦   «         Z	edId„¦   «         Z
e	 dJdKd „¦   «         ZedLd"„¦   «         ZdMd&„Z	 dNdOd,„Ze	 dJdPd-„¦   «         Ze	 	 	 dQdRd3„¦   «         Ze	 	 	 dQdSd4„¦   «         Zee	 dGdTd;„¦   «         ¦   «         ZeedUd=„¦   «         ¦   «         ZedVd>„¦   «         ZedFd?„¦   «         ZdWd@„ZdXdD„Zˆ xZS )YÚ
ApertureDBNÚ
embeddingsr   Údescriptor_setÚstrÚ
dimensionsúOptional[int]ÚengineúOptional[str]ÚmetricÚ	log_levelÚintÚ
propertiesúOptional[Dict]Úkwargsr   ÚreturnÚNonec                ó   •— 	 ddl m}	m}
 n# t          $ r t          d¦  «        ‚w xY w t	          ¦   «         j        di |¤Ž t          j        t          ¦  «        | _	        | j	         
                    |¦  «         || _        || _        || _        || _        || _        || _        |€)| j	                             d¦  «         t%          d¦  «        ‚	 ddl m}	m}
 n)# t          $ r | j	                             d¦  «         ‚ w xY w |
¦   «         | _         |	| j        ¦  «        | _        	 | j                             ¦   «          n)# t.          $ r | j	                             d¦  «         ‚ w xY w|                      ¦   «          dS )aÆ  Create a vectorstore backed by ApertureDB

        A single ApertureDB instance can support many vectorstores,
        distinguished by 'descriptor_set' name.  The descriptor set is created
        if it does not exist.  Different descriptor sets can use different
        engines and metrics, be supplied by different embedding models, and have
        different dimensions.

        See ApertureDB documentation on `AddDescriptorSet`
        https://docs.aperturedata.io/query_language/Reference/descriptor_commands/desc_set_commands/AddDescriptorSet
        for more information on the engine and metric options.

        Args:
            embeddings (Embeddings): Embeddings object
            descriptor_set (str, optional): Descriptor set name. Defaults to
                "langchain".
            dimensions (Optional[int], optional): Number of dimensions of the
                embeddings. Defaults to None.
            engine (str, optional): Engine to use. Defaults to "HNSW" for new
                descriptorsets.
            metric (str, optional): Metric to use. Defaults to "CS" for new
                descriptorsets.
            log_level (int, optional): Logging level. Defaults to logging.WARN.
        r   ©ÚUtilsÚcreate_connectorzMApertureDB is not installed. Please install it using 'pip install aperturedb'NzNo embedding function provided.zFailed to connect to ApertureDB© )Úaperturedb.Utilsr)   r*   ÚImportErrorÚsuperÚ__init__ÚloggingÚ	getLoggerÚ__name__ÚloggerÚsetLevelr   Úembedding_functionr   r   r   r"   ÚfatalÚ
ValueErrorÚ	exceptionÚ
connectionÚutilsÚstatusÚ	ExceptionÚ_find_or_add_descriptor_set)Úselfr   r   r   r   r   r    r"   r$   r)   r*   Ú	__class__s              €úi/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/vectorstores/aperturedb.pyr/   zApertureDB.__init__   sä  ø€ ðJ	Ø@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@øÝð 	ð 	ð 	Ýð+ñô ð ð	øøøð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ÝÔ'­Ñ1Ô1ˆŒØŒ×Ò˜YÑ'Ô'Ð'Ø,ˆÔà",ˆÔØ$ˆŒØˆŒØˆŒØ$ˆŒØÐØŒK×ÒÐ?Ñ@Ô@Ð@ÝÐ>Ñ?Ô?Ð?ð	Ø@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@øÝð 	ð 	ð 	ØŒK×!Ò!ð+ñô ð ð ð	øøøð +Ð*Ñ,Ô,ˆŒØ�U˜4œ?Ñ+Ô+ˆŒ
ð	ØŒJ×ÒÑÔÐÐøÝð 	ð 	ð 	ØŒK×!Ò!Ð"CÑDÔDÐDØð	øøøð 	×(Ò(Ñ*Ô*Ð*Ð*Ð*s    ƒ Œ&ÃC Ã&C?Ä'E Å&E'c                ó²  — | j         }	 d|dddddidœig}| j                             |¦  «        \  }}| j                             ¦   «         s
J |¦   «         ‚d|d         d         v r!t	          |d         d         d         ¦  «        nd}|dk    s
J d¦   «         ‚|dk    �r�|d         d         d         d         }| j                             d	|› d
�¦  «         |d         }t	          |¦  «        dk    s
J d¦   «         ‚| j        €|d         | _        n<| j        |d         k    r+| j                             d| j        › d|d         › �¦  «         |d         }t	          |¦  «        dk    s
J d¦   «         ‚| j	        €|d         | _	        n<| j	        |d         k    r+| j                             d| j	        › d|d         › �¦  «         |d         }	| j
        €|	| _
        n0| j
        |	k    r%| j                             d| j
        › d|	› �¦  «         d„ |                     ¦   «         D ¦   «         | _        d S | j                             d	|› d�¦  «         | j        €t          | _        | j	        €t          | _	        | j
        €,t	          | j                             d¦  «        ¦  «        | _
        | j        �#d„ | j                             ¦   «         D ¦   «         nd }
| j                             || j
        | j        | j	        |
¬¦  «         | j                             dd¦  «         | j                             dd¦  «         | j                             dt(          ¦  «         d S )NÚFindDescriptorSetTÚall_properties)Ú	with_nameÚenginesÚmetricsr   ÚresultsÚentitiesr   é   z+Multiple descriptor sets with the same namezDescriptor set z already existsÚ_engineszOnly one engine is supportedzEngine mismatch: z != Ú_metricszOnly one metric is supportedzMetric mismatch: Ú_dimensionszDimensions mismatch: c                ó‚   — i | ]<\  }}|                      t          ¦  «        ¯|t          t          ¦  «        d …         |“Œ=S ©N)Ú
startswithÚPROPERTY_PREFIXÚlen©Ú.0ÚkÚvs      r@   ú
<dictcomp>z:ApertureDB._find_or_add_descriptor_set.<locals>.<dictcomp>ž   sS   € ð ð ð á�A�qØ—<’<¥Ñ0Ô0ðØ•#•oÑ&Ô&Ð(Ð(Ô)¨1ðð ð ó    z does not exist. Creating itÚtestc                ó*   — i | ]\  }}t           |z   |“ŒS r+   ©rP   rR   s      r@   rV   z:ApertureDB._find_or_add_descriptor_set.<locals>.<dictcomp>°   s#   € ÐLÐLÐL©D¨A¨q• 1Ñ$ aÐLÐLÐLrW   )ÚnameÚdimr   r   r"   Ú_DescriptorÚ_create_txnÚ_DescriptorSetÚ_name)r   r9   ÚqueryÚlast_query_okrQ   r3   Úinfor   Úerrorr   r   Úitemsr"   ÚENGINEÚMETRICr5   Úembed_queryr:   Úadd_descriptorsetÚcreate_entity_indexÚUNIQUEID_PROPERTY)r>   r   Úfind_ds_queryÚrÚbÚ
n_entitiesÚerE   rF   r   r"   s              r@   r=   z&ApertureDB._find_or_add_descriptor_setl   s½  € ØÔ,ˆØEð $Ø!/Ø#Ø#Ø"&Ø 0°$Ð7ð&ð &ðð

ˆð Œ×$Ò$ ]Ñ3Ô3‰ˆˆ1ØŒ×,Ò,Ñ.Ô.Ð1Ð1°Ñ1Ô1Ð.ð ˜Q˜qœTÐ"5Ô6Ð6Ð6õ ��!”Ð(Ô)¨*Ô5Ñ6Ô6Ð6àð 	ð
 ˜QŠˆˆÐ M‰Œˆà˜Š?‰?Ø�!”Ð(Ô)¨*Ô5°aÔ8ˆAØŒK×ÒÐN¨~ÐNÐNÐNÑOÔOÐOà˜
”mˆGÝ�w‘<”< 1Ò$Ð$Ð$Ð&DÑ$Ô$Ð$àŒ{Ð"Ø% aœj�”�Ø” ¨¤
Ò*Ð*Ø”×!Ò!Ð"S°d´kÐ"SÐ"SÀwÈqÄzÐ"SÐ"SÑTÔTÐTà˜
”mˆGÝ�w‘<”< 1Ò$Ð$Ð$Ð&DÑ$Ô$Ð$ØŒ{Ð"Ø% aœj�”�Ø” ¨¤
Ò*Ð*Ø”×!Ò!Ð"S°d´kÐ"SÐ"SÀwÈqÄzÐ"SÐ"SÑTÔTÐTà˜=Ô)ˆJØŒÐ&Ø",�”�Ø” JÒ.Ð.Ø”×!Ò!ØM¨D¬OÐMÐMÀÐMÐMñô ð ðð àŸGšG™IœIðñ ô ˆDŒOˆOˆOð ŒK×ÒØN .ÐNÐNÐNñô ð ð Œ{Ð"Ý$�”ØŒ{Ð"Ý$�”ØŒÐ&Ý"% dÔ&=×&IÒ&IÈ&Ñ&QÔ&QÑ"RÔ"R�”ð ”?Ð.ð MÐL°D´O×4IÒ4IÑ4KÔ4KÐLÑLÔLÐLàð ð ŒJ×(Ò(Ø#Ø”OØ”{Ø”{Ø%ð )ñ ô ð ð ŒJ×*Ò*¨=¸-ÑHÔHÐHØŒJ×*Ò*Ð+;¸WÑEÔEÐEØŒJ×*Ò*¨=Õ:KÑLÔLÐLÐLÐLrW   ÚidsúOptional[List[str]]úOptional[bool]c                ó„   — |€
J d¦   «         ‚d| j         t          d|gidœig}| j                             |¦  «        \  }}|S )zÔDelete documents from the vectorstore by id.

        Args:
            ids: List of ids to delete from the vectorstore.

        Returns:
            True if the deletion was successful, False otherwise
        Nzids must be providedÚDeleteDescriptorÚin)ÚsetÚconstraints)r   rk   r:   Úexecute)r>   rq   r$   ra   ÚresultÚ_s         r@   ÚdeletezApertureDB.deleteÂ   sa   € ð ˆˆÐ 6‰Œˆð #ØÔ.Ý$5¸¸c°{Ð#Cð%ð %ðð
ˆð ”J×&Ò& uÑ-Ô-‰	ˆ�ØˆrW   úSequence[str]úList[Document]c               óÐ   ‡ — d‰ j         t          d|giddidœig}‰ j                             |¦  «        \  }}ˆ fd„|d         d                              dg ¦  «        D ¦   «         }|S )	zÕFind documents in the vectorstore by id.

        Args:
            ids: List of ids to find in the vectorstore.

        Returns:
            documents: List of Document objects found in the vectorstore.
        ÚFindDescriptorrv   rC   T)rw   rx   rG   c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS r+   ©Ú_descriptor_to_document©rS   Údr>   s     €r@   ú
<listcomp>z)ApertureDB.get_by_ids.<locals>.<listcomp>î   s7   ø€ ð 
ð 
ð 
àð ×(Ò(¨Ñ+Ô+ð
ð 
ð 
rW   r   rH   )r   rk   r:   ry   Úget)r>   rq   ra   rG   r{   Údocss   `     r@   Ú
get_by_idszApertureDB.get_by_idsÙ   sœ   ø€ ð !ØÔ.Ý$5¸¸c°{Ð#CØ 0°$Ð7ð#ð #ðð
ˆð ”Z×'Ò'¨Ñ.Ô.‰
ˆ�ð
ð 
ð 
ð 
à˜Q”ZÐ 0Ô1×5Ò5°jÀ"ÑEÔEð
ñ 
ô 
ˆð ˆrW   é   ra   rT   Úargsc                ó|   — | j         €
J d¦   «         ‚| j                              |¦  «        } | j        ||g|¢R i |¤ŽS )a  Search for documents similar to the query using the vectorstore

        Args:
            query: Query string to search for.
            k: Number of results to return.

        Returns:
            List of Document objects ordered by decreasing similarity to the query.
        NzEmbedding function is not set)r5   rh   Úsimilarity_search_by_vector)r>   ra   rT   r‹   r$   Ú	embeddings         r@   Úsimilarity_searchzApertureDB.similarity_searchô   sW   € ð Ô&Ð2Ð2Ð4SÑ2Ô2Ð2ØÔ+×7Ò7¸Ñ>Ô>ˆ	Ø/ˆtÔ/°	¸1ÐN¸tÐNÐNÐNÀvÐNÐNÐNrW   úList[Tuple[Document, float]]c                óX   — | j                              |¦  «        } | j        |g|¢R i |¤ŽS rN   )r5   rh   Ú'_similarity_search_with_score_by_vector)r>   ra   r‹   r$   rŽ   s        r@   Úsimilarity_search_with_scorez'ApertureDB.similarity_search_with_score  s>   € ð Ô+×7Ò7¸Ñ>Ô>ˆ	Ø;ˆtÔ;¸IÐWÈÐWÐWÐWÐPVÐWÐWÐWrW   r…   Údictr   c                ó  — i }|                      ¦   «         D ]>\  }}|                     t          ¦  «        r|||t          t          ¦  «        d …         <   Œ?|t                   }|t
                   }t          |||¬¦  «        }|S )N©Úpage_contentÚmetadataÚid)re   rO   rP   rQ   ÚTEXT_PROPERTYrk   r   )r>   r…   r˜   rT   rU   r   r   Údocs           r@   rƒ   z"ApertureDB._descriptor_to_document  s‚   € ØˆØ—G’G‘I”Ið 	8ð 	8‰DˆAˆqØ�|Š|�OÑ,Ô,ð 8Ø67�˜�3�Ñ/Ô/Ð1Ð1Ô2Ñ3øØ•ÔˆØÕ&Ô'ˆÝ D°8ÀÐIÑIÔIˆØˆ
rW   FrŽ   úList[float]ÚvectorsÚboolc                ó  ‡ — ddl m}  |‰ j        ¦  «        }t          j        ¦   «         }|                     ‰ j        ||d¬¦  «         ‰ j                             dt          j        ¦   «         |z
  › d�¦  «         ˆ fd„|D ¦   «         S )Nr   ©ÚDescriptorsT)rw   ÚvectorÚk_neighborsÚ	distancesú"ApertureDB similarity search took ú secondsc                óJ   •— g | ]}‰                      |¦  «        |d          f‘Œ S )Ú	_distancer‚   r„   s     €r@   r†   zFApertureDB._similarity_search_with_score_by_vector.<locals>.<listcomp>#  s0   ø€ ÐWÐWÐWÀa�×-Ò-¨aÑ0Ô0°!°K´.ÐAÐWÐWÐWrW   ©Úaperturedb.Descriptorsr¡   r9   ÚtimeÚfind_similarr   r3   rc   )r>   rŽ   rT   r�   r¡   ÚdescriptorsÚ
start_times   `      r@   r’   z2ApertureDB._similarity_search_with_score_by_vector  s¯   ø€ ð 	7Ð6Ð6Ð6Ð6Ð6à!�k $¤/Ñ2Ô2ˆÝ”Y‘[”[ˆ
Ø× Ò ØÔ#¨IÀ1ÐPTð 	!ñ 	
ô 	
ð 	
ð 	Œ×ÒØSµ´±´¸zÑ1IÐSÐSÐSñ	
ô 	
ð 	
ð XÐWÐWÐWÈ;ÐWÑWÔWÐWrW   c                ó  ‡ — ddl m}  |‰ j        ¦  «        }t          j        ¦   «         }|                     ‰ j        ||¬¦  «         ‰ j                             dt          j        ¦   «         |z
  › d�¦  «         ˆ fd„|D ¦   «         S )a3  Returns the k most similar documents to the given embedding vector

        Args:
            embedding: The embedding vector to search for
            k: The number of similar documents to return

        Returns:
            List of Document objects ordered by decreasing similarity to the query.
        r   r    )rw   r¢   r£   r¥   r¦   c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS r+   r‚   r„   s     €r@   r†   z:ApertureDB.similarity_search_by_vector.<locals>.<listcomp><  ó'   ø€ ÐEÐEÐE°A�×,Ò,¨QÑ/Ô/ÐEÐEÐErW   r©   )r>   rŽ   rT   r$   r¡   r­   r®   s   `      r@   r�   z&ApertureDB.similarity_search_by_vector%  s¬   ø€ ð 	7Ð6Ð6Ð6Ð6Ð6à!�k $¤/Ñ2Ô2ˆÝ”Y‘[”[ˆ
Ø× Ò ØÔ#¨IÀ1ð 	!ñ 	
ô 	
ð 	
ð 	Œ×ÒØSµ´±´¸zÑ1IÐSÐSÐSñ	
ô 	
ð 	
ð FÐEÐEÐE¸ÐEÑEÔEÐErW   é   ç      à?Úfetch_kÚlambda_multÚfloatc                ó’   — | j                              d|› �¦  «         | j                             |¦  «        } | j        ||||fi |¤ŽS )aÉ  Returns similar documents to the query that also have diversity

        This algorithm balances relevance and diversity in the search results.

        Args:
            query: Query string to search for.
            k: Number of results to return.
            fetch_k: Number of results to fetch.
            lambda_mult: Lambda multiplier for MMR.

        Returns:
            List of Document objects ordered by decreasing similarity/diversty.
        z)Max Marginal Relevance search for query: )r3   rc   r5   rh   Ú'max_marginal_relevance_search_by_vector)r>   ra   rT   r´   rµ   r$   rŽ   s          r@   Úmax_marginal_relevance_searchz(ApertureDB.max_marginal_relevance_search>  sf   € ð, 	Œ×ÒÐLÀUÐLÐLÑMÔMÐMØÔ+×7Ò7¸Ñ>Ô>ˆ	Ø;ˆtÔ;Ø�q˜' ;ð
ð 
Ø28ð
ð 
ð 	
rW   c                ó  ‡ — ddl m}  |‰ j        ¦  «        }t          j        ¦   «         }|                     ‰ j        ||||¬¦  «         ‰ j                             dt          j        ¦   «         |z
  › d�¦  «         ˆ fd„|D ¦   «         S )aÒ  Returns similar documents to the vector that also have diversity

        This algorithm balances relevance and diversity in the search results.

        Args:
            embedding: Embedding vector to search for.
            k: Number of results to return.
            fetch_k: Number of results to fetch.
            lambda_mult: Lambda multiplier for MMR.

        Returns:
            List of Document objects ordered by decreasing similarity/diversty.
        r   r    )rw   r¢   r£   r´   rµ   z&ApertureDB similarity search mmr took r¦   c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS r+   r‚   r„   s     €r@   r†   zFApertureDB.max_marginal_relevance_search_by_vector.<locals>.<listcomp>~  r±   rW   )rª   r¡   r9   r«   Úfind_similar_mmrr   r3   rc   )	r>   rŽ   rT   r´   rµ   r$   r¡   r­   r®   s	   `        r@   r¸   z2ApertureDB.max_marginal_relevance_search_by_vectorZ  s´   ø€ ð, 	7Ð6Ð6Ð6Ð6Ð6à!�k $¤/Ñ2Ô2ˆÝ”Y‘[”[ˆ
Ø×$Ò$ØÔ#ØØØØ#ð 	%ñ 	
ô 	
ð 	
ð 	Œ×ÒØWµT´Y±[´[À:Ñ5MÐWÐWÐWñ	
ô 	
ð 	
ð FÐEÐEÐE¸ÐEÑEÔEÐErW   ÚclsúType[ApertureDB]Útextsú	List[str]Ú	metadatasúOptional[List[dict]]c                óF   —  | dd|i|¤Ž}|                      ||¦  «         |S )aL  Creates a new vectorstore from a list of texts

        Args:
            texts: List of text strings
            embedding: Embeddings object as for constructing the vectorstore
            metadatas: Optional list of metadatas associated with the texts.
            kwargs: Additional arguments to pass to the constructor
        r   r+   )Ú	add_texts)r½   r¿   rŽ   rÁ   r$   Ústores         r@   Ú
from_textszApertureDB.from_texts€  s7   € ð" �Ð3Ð3˜yÐ3¨FÐ3Ð3ˆØ�Š˜˜yÑ)Ô)Ð)ØˆrW   Ú	documentsc                óD   —  | dd|i|¤Ž}|                      |¦  «         |S )aX  Creates a new vectorstore from a list of documents

        Args:
            documents: List of Document objects
            embedding: Embeddings object as for constructing the vectorstore
            metadatas: Optional list of metadatas associated with the texts.
            kwargs: Additional arguments to pass to the constructor
        r   r+   )Úadd_documents)r½   rÇ   rŽ   r$   rÅ   s        r@   Úfrom_documentszApertureDB.from_documents•  s7   € ð  �Ð3Ð3˜yÐ3¨FÐ3Ð3ˆØ×Ò˜IÑ&Ô&Ð&ØˆrW   c                ój   — ddl m}m}  |¦   «         } ||¦  «        }|                     |¦  «         dS )z•Deletes a vectorstore and all its data from the database

        Args:
            descriptor_set: The name of the descriptor set to delete
        r   r(   N)r,   r)   r*   Úremove_descriptorset)Úclass_r   r)   r*   Údbr:   s         r@   Údelete_vectorstorezApertureDB.delete_vectorstore©  sQ   € ð 	=Ð<Ð<Ð<Ð<Ð<Ð<Ð<àÐÑÔˆØ��b‘	”	ˆØ×"Ò" >Ñ2Ô2Ð2Ð2Ð2rW   c                óÎ   — ddl m}  |¦   «         }dddiddddœig}|                     |¦  «        \  }}|                     ¦   «         s
J |¦   «         ‚|d         d         d         S )z�Returns a list of all vectorstores in the database

        Returns:
            List of descriptor sets with properties
        r   )r*   rB   rC   T)rG   rE   rF   r   rH   )r,   r*   ra   rb   )rÍ   r*   rÎ   ra   Úresponser{   s         r@   Úlist_vectorstoreszApertureDB.list_vectorstores¶  sš   € ð 	6Ð5Ð5Ð5Ð5Ð5àÐÑÔˆð $à 0°$Ð7Ø#Ø#Ø"&ð&ð &ðð

ˆð —h’h˜u‘o”o‰ˆ�!Ø×ÒÑ!Ô!Ð+Ð+ 8Ñ+Ô+Ð!Ø˜Œ{Ð.Ô/°
Ô;Ð;rW   c                óV  — d|v r�|                      d¦  «        }|r/t          |¦  «        t          |¦  «        k    rt          d¦  «        ‚g }t          ||¦  «        D ]6\  }}t	          |j        |j        |¬¦  «        }|                     |¦  «         Œ7n|} | j        |fi |¤Žd         S )aÖ  Add or update documents in the vectorstore.

        Args:
            documents: Documents to add to the vectorstore.
            kwargs: Additional keyword arguments.
                if kwargs contains ids and documents contain ids,
                the ids in the kwargs will receive precedence.

        Returns:
            List of IDs of the added texts.

        Raises:
            ValueError: If the number of ids does not match the number of documents.
        rq   zhThe number of ids must match the number of documents. Got {len(ids)} ids and {len(documents)} documents.r–   Ú	succeeded)	ÚpoprQ   r7   Úzipr   r—   r˜   ÚappendÚupsert)r>   rÇ   r$   rq   Ú
documents_Úid_ÚdocumentÚdoc_with_ids           r@   rÉ   zApertureDB.add_documentsÏ  sá   € ð  �Fˆ?ˆ?Ø—*’*˜UÑ#Ô#ˆCØð •s˜3‘x”x¥3 y¡>¤>Ò1Ð1Ý ðIñô ð ð
 ˆJå!$ S¨)Ñ!4Ô!4ð /ð /‘��XÝ&Ø!)Ô!6Ø%Ô.Øðñ ô �ð
 ×!Ò! +Ñ.Ô.Ð.Ð.ð/ð #ˆJð ˆtŒ{˜:Ð0Ð0¨Ð0Ð0°Ô=Ð=rW   re   úSequence[Document]r   c               ó˜  — ddl m} d„ |D ¦   «         }|r|                      |¦  «         d„ |D ¦   «         }d„ |D ¦   «         }| j                             |¦  «        }d„ |D ¦   «         }g }	t          ||||¦  «        D ]’\  }
}}}d„ |                     ¦   «         D ¦   «         }|
|t          <   ||t          <   d| j	        |d	œi}|g}t          j        |t          j        ¬
¦  «                             ¦   «         g}|	                     ||f¦  «         Œ“ || j        ¦  «        }|                     |	t"          ¬¦  «         t%          |g ¬¦  «        S )zýInsert or update items

        Updating documents is dependent on the documents' `id` attribute.

        Args:
            items: List of Document objects to upsert

        Returns:
            UpsertResponse object with succeeded and failed
        r   )ÚParallelLoaderc                óJ   — g | ] }t          |d ¦  «        r|j        ®|j        ‘Œ!S ©r™   )Úhasattrr™   )rS   Úitems     r@   r†   z%ApertureDB.upsert.<locals>.<listcomp>  s:   € ð $
ð $
ð $
Ø­°°tÑ)<Ô)<ð$
ØAEÄÐATˆDŒGÐATÐATÐATrW   c                ó   — g | ]	}|j         ‘Œ
S r+   )r—   ©rS   r›   s     r@   r†   z%ApertureDB.upsert.<locals>.<listcomp>  s   € Ð3Ð3Ð3 c�Ô!Ð3Ð3Ð3rW   c                óB   — g | ]}t          |d d¦  «        �|j        ni ‘ŒS )r˜   N)Úgetattrr˜   rå   s     r@   r†   z%ApertureDB.upsert.<locals>.<listcomp>  s?   € ð 
ð 
ð 
àõ $ C¨°TÑ:Ô:ÐFˆCŒLˆLÈBð
ð 
ð 
rW   c                óŠ   — g | ]@}t          |d ¦  «        r|j        �|j        nt          t          j        ¦   «         ¦  «        ‘ŒAS rá   )râ   r™   r   ÚuuidÚuuid4rå   s     r@   r†   z%ApertureDB.upsert.<locals>.<listcomp>  sR   € ð 
ð 
ð 
àõ ˜c 4Ñ(Ô(ÐV¨S¬VÐ-?ˆCŒFˆFÅSÍÌÉÌÑEVÔEVð
ð 
ð 
rW   c                ó*   — i | ]\  }}t           |z   |“ŒS r+   rZ   rR   s      r@   rV   z%ApertureDB.upsert.<locals>.<dictcomp>  s#   € ÐNÐNÐN±T°Q¸�/¨AÑ-¨qÐNÐNÐNrW   ÚAddDescriptor)rw   r"   )Údtype)Ú	batchsize)rÔ   Úfailed)Úaperturedb.ParallelLoaderrß   r|   r5   Úembed_documentsrÖ   re   rš   rk   r   ÚnpÚarrayÚfloat32Útobytesr×   r9   ÚingestÚ	BATCHSIZEr   )r>   re   r$   rß   Úids_to_deleter¿   rÁ   r   rq   Údatar   rŽ   r˜   Ú	unique_idr"   Úcommandra   ÚblobsÚloaders                      r@   rØ   zApertureDB.upsertö  s¼  € ð 	=Ð<Ð<Ð<Ð<Ð<ð$
ð $
Ø %ð$
ñ $
ô $
ˆð ð 	'Ø�KŠK˜Ñ&Ô&Ð&à3Ð3¨UÐ3Ñ3Ô3ˆð
ð 
àð
ñ 
ô 
ˆ	ð Ô,×<Ò<¸UÑCÔCˆ
ð
ð 
àð
ñ 
ô 
ˆð
 ˆÝ47Ø�:˜y¨#ñ5
ô 5
ð 	(ð 	(Ñ0ˆD�)˜X yð OÐN¸X¿^º^Ñ=MÔ=MÐNÑNÔNˆJØ(,ˆJ•}Ñ%Ø,5ˆJÕ(Ñ)àØÔ.Ø",ð"ð "ðˆGð �IˆEÝ”X˜i­r¬zÐ:Ñ:Ô:×BÒBÑDÔDÐEˆEØ�KŠK˜ ˜Ñ'Ô'Ð'Ð'Ø� ¤Ñ0Ô0ˆØ�Š�d¥iˆÑ0Ô0Ð0Ý¨°BÐ7Ñ7Ô7Ð7rW   )r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r   r%   r&   )r%   r&   rN   )rq   rr   r$   r   r%   rs   )rq   r}   r%   r~   )rŠ   )
ra   r   rT   r!   r‹   r   r$   r   r%   r~   )ra   r   r‹   r   r$   r   r%   r�   )r…   r”   r%   r   )rŠ   F)rŽ   rœ   rT   r!   r�   rž   r%   r�   )rŽ   rœ   rT   r!   r$   r   r%   r~   )rŠ   r²   r³   )ra   r   rT   r!   r´   r!   rµ   r¶   r$   r   r%   r~   )rŽ   rœ   rT   r!   r´   r!   rµ   r¶   r$   r   r%   r~   )r½   r¾   r¿   rÀ   rŽ   r   rÁ   rÂ   r$   r   r%   r   )
r½   r¾   rÇ   r~   rŽ   r   r$   r   r%   r   )r   r   r%   r&   )rÇ   r~   r$   r   r%   rÀ   )re   rÝ   r$   r   r%   r   )r2   Ú
__module__Ú__qualname__r   ÚDESCRIPTOR_SETr0   ÚWARNr/   r=   r|   r‰   r�   r“   rƒ   r’   r�   r¹   r¸   ÚclassmethodrÆ   rÊ   rÏ   rÒ   rÉ   rØ   Ú__classcell__)r?   s   @r@   r   r      s°  ø€ € € € € Øð -Ø$(Ø $Ø $Ø œØ%)ðK+ð K+ð K+ð K+ð K+ð K+ñ „XðK+ðZTMð TMð TMð TMðl ðð ð ð ñ „Xðð, ðð ð ñ „Xðð4 à#$ðOð Oð Oð Oñ „XðOð  ðXð Xð Xñ „XðXðð ð ð ð CHðXð Xð Xð Xð Xð à/0ðFð Fð Fð Fñ „XðFð0 ð ØØ ð
ð 
ð 
ð 
ñ „Xð
ð6 ð ØØ ð#Fð #Fð #Fð #Fñ „Xð#FðJ Øð
 +/ð	ð ð ð ñ „Xñ „[ðð& Øðð ð ñ „Xñ „[ðð$ ð
3ð 
3ð 
3ñ „[ð
3ð ð<ð <ð <ñ „[ð<ð0%>ð %>ð %>ð %>ðN48ð 48ð 48ð 48ð 48ð 48ð 48ð 48rW   r   )!Ú
__future__r   r0   r«   ré   Útypingr   r   r   r   r   r	   r
   Únumpyrò   Úlangchain_core.documentsr   Úlangchain_core.embeddingsr   Úlangchain_core.indexing.baser   Úlangchain_core.vectorstoresr   Útyping_extensionsr   rf   rg   r   r÷   rP   rš   rk   r   r+   rW   r@   ú<module>r     s6  ðà "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø €€€Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ Cð Ð Ð Ð ð .Ð -Ð -Ð -Ð -Ð -Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø &Ð &Ð &Ð &Ð &Ð &ð 
€Ø	€Ø€Ø€	Ø€Ø€ØÐ ðM8ð M8ð M8ð M8ð M8�ñ M8ô M8ð M8ð M8ð M8rW   