§
    šŠtj¨R  ã                  óÐ   — d dl m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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 erd dlZ ej        ¦   «         ZdZ G d	„ d
e¦  «        ZdS )é    )ÚannotationsN)	ÚTYPE_CHECKINGÚAnyÚDictÚIterableÚListÚOptionalÚSetÚTupleÚType)ÚDocument)Ú
Embeddings)ÚVectorStore)Úmaximal_marginal_relevanceé   c                  ó\  — e Zd ZU dZdZded<   edddfdGd„ZedHd„¦   «         Z	 	 dIdJd„Z	dKd„Z
eddfdLd$„ZeddfdMd&„Z	 dNdOd(„ZdedddfdPd,„Z	 	 	 	 	 dQdRd2„Z	 	 	 	 	 dQdSd4„Z	 	 	 	 	 dTdUd;„Z	 dVdWd<„Z	 dVdXd=„ZdKd>„ZdKd?„ZdYd@„ZdZdA„Zeddeddfd[dD„¦   «         Zededdfd\dF„¦   «         ZdS )]ÚAwaDBz`AwaDB` vector store.Úlangchain_awadbÚstrÚ_DEFAULT_TABLE_NAMENÚ
table_nameÚ	embeddingúOptional[Embeddings]Úlog_and_data_dirúOptional[str]ÚclientúOptional[awadb.Client]Úkwargsr   ÚreturnÚNonec                ó¸  — 	 ddl }n# t          $ r t          d¦  «        ‚w xY w|�|| _        n,|� |j        |¦  «        | _        n |j        ¦   «         | _        || j        k    rA|dz  }|t          t          j        ¦   «         ¦  «                             d¦  «        d         z  }| j         	                    |¦  «         i | _
        |�
|| j
        |<   || _        dS )a@  Initialize with AwaDB client.
           If table_name is not specified,
           a random table name of `_DEFAULT_TABLE_NAME + last segment of uuid`
           would be created automatically.

        Args:
            table_name: Name of the table created, default _DEFAULT_TABLE_NAME.
            embedding: Optional Embeddings initially set.
            log_and_data_dir: Optional the root directory of log and data.
            client: Optional AwaDB client.
            kwargs: Any possible extend parameters in the future.

        Returns:
            None.
        r   NzRCould not import awadb python package. Please install it with `pip install awadb`.Ú_ú-éÿÿÿÿ)ÚawadbÚImportErrorÚawadb_clientÚClientr   r   ÚuuidÚuuid4ÚsplitÚCreateÚtable2embeddingsÚusing_table_name)Úselfr   r   r   r   r   r%   s          úd/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/vectorstores/awadb.pyÚ__init__zAwaDB.__init__   s  € ð.	ØˆLˆLˆLˆLøÝð 	ð 	ð 	Ýð>ñô ð ð	øøøð ÐØ &ˆDÔÐàÐ+Ø$0 E¤LÐ1AÑ$BÔ$B�Ô!Ð!à$0 E¤L¡N¤N�Ô!à˜Ô1Ò1Ð1Ø˜#ÑˆJØ�#�dœj™lœlÑ+Ô+×1Ò1°#Ñ6Ô6°rÔ:Ñ:ˆJàÔ× Ò  Ñ,Ô,Ð,Ø79ˆÔØÐ Ø09ˆDÔ! *Ñ-Ø *ˆÔÐÐs   ‚ ‡!c                óF   — | j         | j        v r| j        | j                  S d S ©N)r.   r-   )r/   s    r0   Ú
embeddingszAwaDB.embeddingsK   s)   € àÔ  DÔ$9Ð9Ð9ØÔ(¨Ô)>Ô?Ð?Øˆtó    ÚtextsúIterable[str]Ú	metadatasúOptional[List[dict]]Úis_duplicate_textsúOptional[bool]ú	List[str]c                óð   — | j         €t          d¦  «        ‚d}| j        | j        v r2| j        | j                                      t          |¦  «        ¦  «        }| j                              dd||||¦  «        S )aÖ  Run more texts through the embeddings and add to the vectorstore.
        Args:
            texts: Iterable of strings to add to the vectorstore.
            metadatas: Optional list of metadatas associated with the texts.
            is_duplicate_texts: Optional whether to duplicate texts. Defaults to True.
            kwargs: any possible extend parameters in the future.

        Returns:
            List of ids from adding the texts into the vectorstore.
        NúAwaDB client is None!!!Úembedding_textÚtext_embedding)r'   Ú
ValueErrorr.   r-   Úembed_documentsÚlistÚAddTexts)r/   r6   r8   r:   r   r4   s         r0   Ú	add_textszAwaDB.add_textsQ   sŠ   € ð" ÔÐ$ÝÐ6Ñ7Ô7Ð7àˆ
ØÔ  DÔ$9Ð9Ð9ØÔ.¨tÔ/DÔE×UÒUÝ�U‘”ñô ˆJð Ô ×)Ò)ØØØØØØñ
ô 
ð 	
r5   Úboolc                ób   — | j         €t          d¦  «        ‚| j                              |¦  «        S )zòLoad the local specified table.

        Args:
            table_name: Table name
            kwargs: Any possible extend parameters in the future.

        Returns:
            Success or failure of loading the local specified table
        Nr>   )r'   rA   ÚLoad)r/   r   r   s      r0   Ú
load_localzAwaDB.load_localt   s3   € ð ÔÐ$ÝÐ6Ñ7Ô7Ð7àÔ ×%Ò% jÑ1Ô1Ð1r5   ÚqueryÚkÚintÚtext_in_page_contentÚmeta_filterúOptional[dict]úList[Document]c                ó  — | j         €t          d¦  «        ‚d}| j        | j        v r&| j        | j                                      |¦  «        }n#ddlm}  |¦   «                              |¦  «        }h d£}|                      |||||¬¦  «        S )a8  Return docs most similar to query.

        Args:
            query: Text query.
            k: The maximum number of documents to return.
            text_in_page_content: Filter by the text in page_content of Document.
            meta_filter (Optional[dict]): Filter by metadata. Defaults to None.
            E.g. `{"color" : "red", "price": 4.20}`. Optional.
            E.g. `{"max_price" : 15.66, "min_price": 4.20}`
            `price` is the metadata field, means range filter(4.20<'price'<15.66).
            E.g. `{"maxe_price" : 15.66, "mine_price": 4.20}`
            `price` is the metadata field, means range filter(4.20<='price'<=15.66).
            kwargs: Any possible extend parameters in the future.

        Returns:
            Returns the k most similar documents to the specified text query.
        Nr>   r   ©ÚAwaEmbedding>   Ú_idÚscorer@   ©rM   rN   Únot_include_fields_in_metadata)	r'   rA   r.   r-   Úembed_queryr%   rS   Ú	EmbeddingÚsimilarity_search_by_vector)	r/   rJ   rK   rM   rN   r   r   rS   Únot_include_fieldss	            r0   Úsimilarity_searchzAwaDB.similarity_searchˆ   s¶   € ð4 ÔÐ$ÝÐ6Ñ7Ô7Ð7àˆ	ØÔ  DÔ$9Ð9Ð9ØÔ-¨dÔ.CÔD×PÒPÐQVÑWÔWˆIˆIà*Ð*Ð*Ð*Ð*Ð*à$˜™œ×0Ò0°Ñ7Ô7ˆIà'IÐ'IÐ'IÐØ×/Ò/ØØØ!5Ø#Ø+=ð 0ñ 
ô 
ð 	
r5   úList[Tuple[Document, float]]c                óŠ  — | j         €t          d¦  «        ‚d}| j        | j        v r&| j        | j                                      |¦  «        }n#ddlm}  |¦   «                              |¦  «        }g }ddh}	|                      |||||	¬¦  «        }
|
D ]0}|j	        d         }|j	        d= ||f}| 
                    |¦  «         Œ1|S )	a  The most k similar documents and scores of the specified query.

        Args:
            query: Text query.
            k: The k most similar documents to the text query.
            text_in_page_content: Filter by the text in page_content of Document.
            meta_filter: Filter by metadata. Defaults to None.
            kwargs: Any possible extend parameters in the future.

        Returns:
            The k most similar documents to the specified text query.
            0 is dissimilar, 1 is the most similar.
        Nr>   r   rR   r@   rT   rV   rU   )r'   rA   r.   r-   rX   r%   rS   rY   rZ   ÚmetadataÚappend)r/   rJ   rK   rM   rN   r   r   rS   Úresultsr[   Úretrieval_docsÚdocrU   Ú	doc_tuples                 r0   Úsimilarity_search_with_scorez"AwaDB.similarity_search_with_score¶   s  € ð, ÔÐ$ÝÐ6Ñ7Ô7Ð7àˆ	ØÔ  DÔ$9Ð9Ð9ØÔ-¨dÔ.CÔD×PÒPÐQVÑWÔWˆIˆIà*Ð*Ð*Ð*Ð*Ð*à$˜™œ×0Ò0°Ñ7Ô7ˆIà02ˆà(8¸%Ð'@ÐØ×9Ò9ØØØ!5Ø#Ø+=ð :ñ 
ô 
ˆð "ð 	&ð 	&ˆCØ”L Ô)ˆEØ”˜WÐ%Ø˜e˜ˆIØ�NŠN˜9Ñ%Ô%Ð%Ð%àˆr5   r   c                ó    —  | j         ||fi |¤ŽS r3   )re   )r/   rJ   rK   r   s       r0   Ú(_similarity_search_with_relevance_scoresz.AwaDB._similarity_search_with_relevance_scoresê   s!   € ð 1ˆtÔ0°¸ÐDÐD¸VÐDÐDÐDr5   úOptional[List[float]]rW   úOptional[Set[str]]c                ón  — | j         €t          d¦  «        ‚g }|€|S | j                              |||||¬¦  «        }|                     ¦   «         dk    r|S |d         d         D ]P}	d}
i }|	D ]#}|dk    r	|	|         }
Œ|�||v rŒ|	|         ||<   Œ$|                     t          |
|¬¦  «        ¦  «         ŒQ|S )	a
  Return docs most similar to embedding vector.

        Args:
            embedding: Embedding to look up documents similar to.
            k: Number of Documents to return. Defaults to 4.
            text_in_page_content: Filter by the text in page_content of Document.
            meta_filter: Filter by metadata. Defaults to None.
            not_incude_fields_in_metadata: Not include meta fields of each document.

        Returns:
            List of Documents which are the most similar to the query vector.
        Nr>   )rM   rN   r[   r   ÚResultItemsÚ r?   ©Úpage_contentr_   )r'   rA   ÚSearchÚ__len__r`   r   )r/   r   rK   rM   rN   rW   r   ra   Úshow_resultsÚitem_detailÚcontentÚ	meta_dataÚitem_keys                r0   rZ   z!AwaDB.similarity_search_by_vectorò   s  € ð, ÔÐ$ÝÐ6Ñ7Ô7Ð7à"$ˆàÐØˆNàÔ(×/Ò/ØØØ!5Ø#Ø=ð 0ñ 
ô 
ˆð ×ÒÑ!Ô! QÒ&Ð&ØˆNà'¨œ?¨=Ô9ð 	Oð 	OˆKØˆGØˆIØ'ð <ð <�ØÐ/Ò/Ð/Ø)¨(Ô3�GØØ3Ð?ØÐ#AÐAÐAØ Ø&1°(Ô&;�	˜(Ñ#Ð#Ø�NŠN�8°À9ÐMÑMÔMÑNÔNÐNÐNØˆr5   é   ç      à?Úfetch_kÚlambda_multÚfloatc                óN  — | j         €t          d¦  «        ‚g }| j        | j        v r&| j        | j                                      |¦  «        }n#ddlm}	  |	¦   «                              |¦  «        }|                     ¦   «         dk    rg S |  	                    ||||||¬¦  «        }
|
S )a�  Return docs selected using the maximal marginal relevance.

        Maximal marginal relevance optimizes for similarity to query AND diversity
        among selected documents.

        Args:
            query: Text to look up documents similar to.
            k: Number of Documents to return. Defaults to 4.
            fetch_k: Number of Documents to fetch to pass to MMR algorithm.
            lambda_mult: Number between 0 and 1 that determines the degree
                        of diversity among the results with 0 corresponding
                        to maximum diversity and 1 to minimum diversity.
                        Defaults to 0.5.
            text_in_page_content: Filter by the text in page_content of Document.
            meta_filter (Optional[dict]): Filter by metadata. Defaults to None.

        Returns:
            List of Documents selected by maximal marginal relevance.
        Nr>   r   rR   )ry   rM   rN   )
r'   rA   r.   r-   rX   r%   rS   rY   rp   Ú'max_marginal_relevance_search_by_vector)r/   rJ   rK   rx   ry   rM   rN   r   r   rS   ra   s              r0   Úmax_marginal_relevance_searchz#AwaDB.max_marginal_relevance_search)  sÍ   € ð: ÔÐ$ÝÐ6Ñ7Ô7Ð7à!#ˆ	ØÔ  DÔ$9Ð9Ð9ØÔ-¨dÔ.CÔD×PÒPÐQVÑWÔWˆIˆIà*Ð*Ð*Ð*Ð*Ð*à$˜™œ×0Ò0°Ñ7Ô7ˆIà×ÒÑÔ !Ò#Ð#ØˆIà×>Ò>ØØØØ#Ø!5Ø#ð ?ñ 
ô 
ˆð ˆr5   úList[float]c                ó   — | j         €t          d¦  «        ‚g }|€|S ddh}	|                      |||||	¬¦  «        }
g }|
D ]"}|                     |j        d         ¦  «         Œ#t          t          j        |t          j        ¬¦  «        |¬¦  «        }|D ]:}d|
|         j        v r)|
|         j        d= |                     |
|         ¦  «         Œ;|S )	a–  Return docs selected using the maximal marginal relevance.

        Maximal marginal relevance optimizes for similarity to query AND diversity
        among selected documents.

        Args:
            embedding: Embedding to look up documents similar to.
            k: Number of Documents to return. Defaults to 4.
            fetch_k: Number of Documents to fetch to pass to MMR algorithm.
            lambda_mult: Number between 0 and 1 that determines the degree
                        of diversity among the results with 0 corresponding
                        to maximum diversity and 1 to minimum diversity.
                        Defaults to 0.5.
            text_in_page_content: Filter by the text in page_content of Document.
            meta_filter (Optional[dict]): Filter by metadata. Defaults to None.

        Returns:
            List of Documents selected by maximal marginal relevance.
        Nr>   rT   rU   rV   r@   )Údtype)Úembedding_list)	r'   rA   rZ   r`   r_   r   ÚnpÚarrayÚfloat32)r/   r   rK   rx   ry   rM   rN   r   ra   r[   Úretrieved_docsÚtop_embeddingsrc   Úselected_docsÚs_ids                  r0   r|   z-AwaDB.max_marginal_relevance_search_by_vector^  s  € ð< ÔÐ$ÝÐ6Ñ7Ô7Ð7à"$ˆàÐØˆNà#(¨'Ð"2ÐØ×9Ò9ØØØ!5Ø#Ø+=ð :ñ 
ô 
ˆð ˆà!ð 	Bð 	BˆCØ×!Ò! #¤,Ð/?Ô"@ÑAÔAÐAÐAå2ÝŒH�Y¥b¤jÐ1Ñ1Ô1À.ð
ñ 
ô 
ˆð "ð 	5ð 	5ˆDØ >°$Ô#7Ô#@Ð@Ð@Ø" 4Ô(Ô1Ð2BÐCØ—’˜~¨dÔ3Ñ4Ô4Ð4øØˆr5   ÚidsúOptional[List[str]]r[   ÚlimitúOptional[int]úDict[str, Document]c                ó  — | j         €t          d¦  «        ‚| j                              |||||¬¦  «        }i }|D ]N}	d}
i }|	D ])}|dk    r	|	|         }
Œ|dk    s|dk    rŒ|	|         ||<   Œ*t          |
|¬¦  «        }|||	d         <   ŒO|S )	aã  Return docs according ids.

        Args:
            ids: The ids of the embedding vectors.
            text_in_page_content: Filter by the text in page_content of Document.
            meta_filter: Filter by any metadata of the document.
            not_include_fields: Not pack the specified fields of each document.
            limit: The number of documents to return. Defaults to 5. Optional.

        Returns:
            Documents which satisfy the input conditions.
        Nr>   )r‰   rM   rN   r[   r‹   rl   r?   r@   rT   rm   )r'   rA   ÚGetr   )r/   r‰   rM   rN   r[   r‹   r   Údocs_detailra   Ú
doc_detailrs   Ú	meta_infoÚfieldrc   s                 r0   Úgetz	AwaDB.getœ  sâ   € ð, ÔÐ$ÝÐ6Ñ7Ô7Ð7àÔ'×+Ò+ØØ!5Ø#Ø1Øð ,ñ 
ô 
ˆð (*ˆØ%ð 	-ð 	-ˆJØˆGØˆIØ#ð 5ð 5�ØÐ,Ò,Ð,Ø(¨Ô/�GØØÐ.Ò.Ð.°%¸5².°.Øà#-¨eÔ#4�	˜%Ñ Ð å¨¸)ÐDÑDÔDˆCØ),ˆG�J˜uÔ%Ñ&Ð&Øˆr5   c                ó¢   — | j         €t          d¦  «        ‚d}|�|                     ¦   «         dk    r|S | j                              |¦  «        }|S )aJ  Delete the documents which have the specified ids.

        Args:
            ids: The ids of the embedding vectors.
            **kwargs: Other keyword arguments that subclasses might use.

        Returns:
            Optional[bool]: True if deletion is successful.
            False otherwise, None if not implemented.
        Nr>   r   )r'   rA   rp   ÚDelete)r/   r‰   r   Úrets       r0   ÚdeletezAwaDB.deleteÎ  sX   € ð ÔÐ$ÝÐ6Ñ7Ô7Ð7Ø"ˆØˆ;˜#Ÿ+š+™-œ-¨1Ò,Ð,ØˆJØÔ×&Ò& sÑ+Ô+ˆØˆ
r5   c                ój   — | j         €t          d¦  «        ‚| j                              |d||¬¦  «        S )a@  Update the documents which have the specified ids.

        Args:
            ids: The id list of the updating embedding vector.
            texts: The texts of the updating documents.
            metadatas: The metadatas of the updating documents.
        Returns:
            the ids of the updated documents.
        Nr>   r?   )r‰   Útext_field_namer6   r8   )r'   rA   ÚUpdateTexts)r/   r‰   r6   r8   r   s        r0   ÚupdatezAwaDB.updateå  sF   € ð" ÔÐ$ÝÐ6Ñ7Ô7Ð7àÔ ×,Ò,ØÐ%5¸UÈið -ñ 
ô 
ð 	
r5   c                ó^   — | j         €dS | j                              |¦  «        }|r|| _        |S )zCreate a new table.NF)r'   r,   r.   ©r/   r   r   r—   s       r0   Úcreate_tablezAwaDB.create_tableý  s=   € ð ÔÐ$Ø�5àÔ×&Ò& zÑ2Ô2ˆàð 	/Ø$.ˆDÔ!Øˆ
r5   c                ó^   — | j         €dS | j                              |¦  «        }|r|| _        |S )zJUse the specified table. Don't know the tables, please invoke list_tables.NF)r'   ÚUser.   rž   s       r0   Úusez	AwaDB.use  s=   € ð ÔÐ$Ø�5àÔ×#Ò# JÑ/Ô/ˆØð 	/Ø$.ˆDÔ!àˆ
r5   c                óF   — | j         €g S | j                              ¦   «         S )z*List all the tables created by the client.)r'   ÚListAllTables©r/   r   s     r0   Úlist_tableszAwaDB.list_tables  s'   € ð ÔÐ$ØˆIàÔ ×.Ò.Ñ0Ô0Ð0r5   c                ó   — | j         S )zGet the current table.)r.   r¥   s     r0   Úget_current_tablezAwaDB.get_current_table(  s   € ð Ô$Ð$r5   ÚclsúType[AwaDB]c                óR   —  | ||||¬¦  «        }|                      ||¬¦  «         |S )a3  Create an AwaDB vectorstore from a raw documents.

        Args:
            texts (List[str]): List of texts to add to the table.
            embedding (Optional[Embeddings]): Embedding function. Defaults to None.
            metadatas (Optional[List[dict]]): List of metadatas. Defaults to None.
            table_name (str): Name of the table to create.
            log_and_data_dir (Optional[str]): Directory of logging and persistence.
            client (Optional[awadb.Client]): AwaDB client

        Returns:
            AwaDB: AwaDB vectorstore.
        )r   r   r   r   )r6   r8   )rE   )	r©   r6   r   r8   r   r   r   r   r'   s	            r0   Ú
from_textszAwaDB.from_texts0  sG   € ð0 �sØ!ØØ-Øð	
ñ 
ô 
ˆð 	×Ò U°iÐÑ@Ô@Ð@ØÐr5   Ú	documentsc                óh   — d„ |D ¦   «         }d„ |D ¦   «         }|                       ||||||¬¦  «        S )av  Create an AwaDB vectorstore from a list of documents.

        If a log_and_data_dir specified, the table will be persisted there.

        Args:
            documents (List[Document]): List of documents to add to the vectorstore.
            embedding (Optional[Embeddings]): Embedding function. Defaults to None.
            table_name (str): Name of the table to create.
            log_and_data_dir (Optional[str]): Directory to persist the table.
            client (Optional[awadb.Client]): AwaDB client.
            Any: Any possible parameters in the future

        Returns:
            AwaDB: AwaDB vectorstore.
        c                ó   — g | ]	}|j         ‘Œ
S © )rn   ©Ú.0rc   s     r0   ú
<listcomp>z(AwaDB.from_documents.<locals>.<listcomp>j  s   € Ð7Ð7Ð7 c�Ô!Ð7Ð7Ð7r5   c                ó   — g | ]	}|j         ‘Œ
S r°   )r_   r±   s     r0   r³   z(AwaDB.from_documents.<locals>.<listcomp>k  s   € Ð7Ð7Ð7 c�S”\Ð7Ð7Ð7r5   )r6   r   r8   r   r   r   )r¬   )	r©   r­   r   r   r   r   r   r6   r8   s	            r0   Úfrom_documentszAwaDB.from_documentsQ  sW   € ð2 8Ð7¨YÐ7Ñ7Ô7ˆØ7Ð7¨YÐ7Ñ7Ô7ˆ	Ø�~Š~ØØØØ!Ø-Øð ñ 
ô 
ð 	
r5   )r   r   r   r   r   r   r   r   r   r   r   r    )r   r   )NN)
r6   r7   r8   r9   r:   r;   r   r   r   r<   )r   r   r   r   r   rF   )rJ   r   rK   rL   rM   r   rN   rO   r   r   r   rP   )rJ   r   rK   rL   rM   r   rN   rO   r   r   r   r]   )r   )rJ   r   rK   rL   r   r   r   r]   )r   rh   rK   rL   rM   r   rN   rO   rW   ri   r   r   r   rP   )r   rv   rw   NN)rJ   r   rK   rL   rx   rL   ry   rz   rM   r   rN   rO   r   r   r   rP   )r   r~   rK   rL   rx   rL   ry   rz   rM   r   rN   rO   r   r   r   rP   )NNNNN)r‰   rŠ   rM   r   rN   rO   r[   ri   r‹   rŒ   r   r   r   r�   r3   )r‰   rŠ   r   r   r   r;   )
r‰   r<   r6   r7   r8   r9   r   r   r   r<   )r   r   r   r<   )r   r   r   r   )r©   rª   r6   r<   r   r   r8   r9   r   r   r   r   r   r   r   r   r   r   )r©   rª   r­   rP   r   r   r   r   r   r   r   r   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__r1   Úpropertyr4   rE   rI   ÚDEFAULT_TOPNr\   re   rg   rZ   r}   r|   r”   r˜   rœ   rŸ   r¢   r¦   r¨   Úclassmethodr¬   rµ   r°   r5   r0   r   r      s»  € € € € € € ØÐà0ÐÐ0Ð0Ð0Ñ0ð .Ø*.Ø*.Ø)-ð/+ð /+ð /+ð /+ð /+ðb ðð ð ñ „Xðð +/Ø-1ð	!
ð !
ð !
ð !
ð !
ðF2ð 2ð 2ð 2ð. Ø.2Ø&*ð,
ð ,
ð ,
ð ,
ð ,
ðb Ø.2Ø&*ð2ð 2ð 2ð 2ð 2ðn ðEð Eð Eð Eð Eð ,0ØØ.2Ø&*Ø=Að5ð 5ð 5ð 5ð 5ðt ØØ Ø.2Ø&*ð3ð 3ð 3ð 3ð 3ðp ØØ Ø.2Ø&*ð<ð <ð <ð <ð <ð@ $(Ø.2Ø&*Ø15Ø#ð0ð 0ð 0ð 0ð 0ðh $(ðð ð ð ð ð6 +/ð	
ð 
ð 
ð 
ð 
ð0ð ð ð ð ð ð ð ð 	1ð 	1ð 	1ð 	1ð%ð %ð %ð %ð ð +/Ø*.Ø-Ø*.Ø)-ðð ð ð ñ „[ðð@ ð +/Ø-Ø*.Ø)-ð!
ð !
ð !
ð !
ñ „[ð!
ð !
ð !
r5   r   )Ú
__future__r   Úloggingr)   Útypingr   r   r   r   r   r	   r
   r   r   Únumpyr‚   Úlangchain_core.documentsr   Úlangchain_core.embeddingsr   Úlangchain_core.vectorstoresr   Ú&langchain_community.vectorstores.utilsr   r%   Ú	getLoggerÚloggerr¼   r   r°   r5   r0   ú<module>rÈ      s#  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ Wà Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3à MÐ MÐ MÐ MÐ MÐ Màð Ø€L€L€Là	ˆÔ	Ñ	Ô	€Ø€ð^	
ð ^	
ð ^	
ð ^	
ð ^	
ˆKñ ^	
ô ^	
ð ^	
ð ^	
ð ^	
r5   