§
    šŠtjá  ã                  ó~   — d dl mZ d dlmZ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 d dlmZ  G d„ de¦  «        Zd	S )
é    )Úannotations)ÚAnyÚDictÚIterableÚListÚOptionalÚTuple)Úuuid4©ÚDocument)Ú
Embeddings)ÚVectorStorec                  óÂ   ‡ — e Zd ZdZ	 d,d-ˆ fd	„Z	 d,d.d„Zd/d„Z	 d0d1d„Z	 	 d2d3d„Zd4d"„Z	d5d$„Z
d,d6d'„Zed7d)„¦   «         Ze	 	 d8d9d*„¦   «         Ze	 d,d:d+„¦   «         Zˆ xZS );ÚVLitez?VLite is a simple and fast vector database for semantic search.NÚembedding_functionr   Ú
collectionúOptional[str]Úkwargsr   c                ó  •— t          ¦   «                              ¦   «          || _        |pdt          ¦   «         j        › �| _        	 ddlm} n# t          $ r t          d¦  «        ‚w xY w |dd| j        i|¤Ž| _        d S )NÚvlite_r   )r   úRCould not import vlite python package. Please install it with `pip install vlite`.r   © )	ÚsuperÚ__init__r   r
   Úhexr   Úvliter   ÚImportError)Úselfr   r   r   r   Ú	__class__s        €úd/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/vectorstores/vlite.pyr   zVLite.__init__   s®   ø€ õ 	‰Œ×ÒÑÔÐØ"4ˆÔØ$Ð>Ð(>µ±´´Ð(>Ð(>ˆŒð	Ø#Ð#Ð#Ð#Ð#Ð#Ð#øÝð 	ð 	ð 	Ýð>ñô ð ð	øøøð
 �UÐ@Ð@ d¤oÐ@¸Ð@Ð@ˆŒ
ˆ
ˆ
s   ÁA ÁA(ÚtextsúIterable[str]Ú	metadatasúOptional[List[dict]]Úreturnú	List[str]c                ó4  — t          |¦  «        }|                     dd„ |D ¦   «         ¦  «        }| j                             |¦  «        }|sd„ |D ¦   «         }d„ t	          ||||¦  «        D ¦   «         }| j                             |¦  «        }d„ |D ¦   «         S )ar  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.
            kwargs: vectorstore specific parameters

        Returns:
            List of ids from adding the texts into the vectorstore.
        Úidsc                óD   — g | ]}t          t          ¦   «         ¦  «        ‘ŒS r   ©Ústrr
   ©Ú.0Ú_s     r    ú
<listcomp>z#VLite.add_texts.<locals>.<listcomp>4   s"   € Ð =Ð =Ð =°!¥¥U¡W¤W¡¤Ð =Ð =Ð =ó    c                ó   — g | ]}i ‘ŒS r   r   r,   s     r    r/   z#VLite.add_texts.<locals>.<listcomp>7   s   € Ð+Ð+Ð+ ˜Ð+Ð+Ð+r0   c                ó&   — g | ]\  }}}}||||d œ‘ŒS ))ÚtextÚmetadataÚidÚ	embeddingr   )r-   r3   r4   r5   r6   s        r    r/   z#VLite.add_texts.<locals>.<listcomp>8   s<   € ð 
ð 
ð 
á-��h  Ið  x°rÈ	ÐRÐRð
ð 
ð 
r0   c                ó   — g | ]
}|d          ‘ŒS )r   r   )r-   Úresults     r    r/   z#VLite.add_texts.<locals>.<listcomp>=   s   € Ð0Ð0Ð0˜f��q”	Ð0Ð0Ð0r0   )ÚlistÚpopr   Úembed_documentsÚzipr   Úadd)r   r!   r#   r   r(   Ú
embeddingsÚdata_pointsÚresultss           r    Ú	add_textszVLite.add_texts#   s·   € õ  �U‘”ˆØ�jŠj˜Ð =Ð =°uÐ =Ñ =Ô =Ñ>Ô>ˆØÔ,×<Ò<¸UÑCÔCˆ
Øð 	,Ø+Ð+ UÐ+Ñ+Ô+ˆIð
ð 
å14°U¸IÀsÈJÑ1WÔ1Wð
ñ 
ô 
ˆð ”*—.’. Ñ-Ô-ˆØ0Ð0¨Ð0Ñ0Ô0Ð0r0   Ú	documentsúList[Document]c           	     ó|  ‡	— |                      dd„ |D ¦   «         ¦  «        }g }g }t          ||¦  «        D ]ï\  }Š	d|v r²	 ddlm} n# t          $ r t	          d¦  «        ‚w xY w ||d         ¦  «        }|                     |¦  «         |                     |j        gt          |¦  «        z  ¦  «         |                     ˆ	fd„t          t          |¦  «        ¦  «        D ¦   «         ¦  «         Œ»| 	                    |j
        ¦  «         | 	                    |j        ¦  «         Œð|                      |||¬¦  «        S )	aa  Add a list of documents to the vectorstore.

        Args:
            documents: List of documents to add to the vectorstore.
            kwargs: vectorstore specific parameters such as "file_path" for processing
                    directly with vlite.

        Returns:
            List of ids from adding the documents into the vectorstore.
        r(   c                óD   — g | ]}t          t          ¦   «         ¦  «        ‘ŒS r   r*   r,   s     r    r/   z'VLite.add_documents.<locals>.<listcomp>N   s"   € Ð AÐ AÐ A°!¥¥U¡W¤W¡¤Ð AÐ AÐ Ar0   Ú	file_pathr   )Úprocess_filer   c                ó   •— g | ]	}‰› d |› �‘Œ
S )r.   r   )r-   Úir5   s     €r    r/   z'VLite.add_documents.<locals>.<listcomp>^   s#   ø€ ÐLÐLÐL¨A˜r˜K˜K A˜K˜KÐLÐLÐLr0   )r(   )r:   r<   Úvlite.utilsrG   r   Úextendr4   ÚlenÚrangeÚappendÚpage_contentrA   )
r   rB   r   r(   r!   r#   ÚdocrG   Úprocessed_datar5   s
            @r    Úadd_documentszVLite.add_documents?   ss  ø€ ð �jŠj˜Ð AÐ A°yÐ AÑ AÔ AÑBÔBˆØˆØˆ	Ý˜9 cÑ*Ô*ð 	/ð 	/‰GˆC�Ø˜fÐ$Ð$ðØ8Ð8Ð8Ð8Ð8Ð8Ð8øÝ"ð ð ð Ý%ðFñô ð ðøøøð
 ". ¨f°[Ô.AÑ!BÔ!B�Ø—’˜^Ñ,Ô,Ð,Ø× Ò  #¤, µ#°nÑ2EÔ2EÑ!EÑFÔFÐFØ—
’
ÐLÐLÐLÐLµµs¸>Ñ7JÔ7JÑ1KÔ1KÐLÑLÔLÑMÔMÐMÐMà—’˜SÔ-Ñ.Ô.Ð.Ø× Ò  ¤Ñ.Ô.Ð.Ð.Ø�~Š~˜e Y°Cˆ~Ñ8Ô8Ð8s   Á AÁA!é   Úqueryr+   ÚkÚintc                óH   — |                       ||¬¦  «        }d„ |D ¦   «         S )zûReturn docs most similar to query.

        Args:
            query: Text to look up documents similar to.
            k: Number of Documents to return. Defaults to 4.

        Returns:
            List of Documents most similar to the query.
        )rU   c                ó   — g | ]\  }}|‘ŒS r   r   )r-   rP   r.   s      r    r/   z+VLite.similarity_search.<locals>.<listcomp>t   s   € Ð2Ð2Ð2™˜˜Q�Ð2Ð2Ð2r0   )Úsimilarity_search_with_score)r   rT   rU   r   Údocs_and_scoress        r    Úsimilarity_searchzVLite.similarity_searchd   s0   € ð ×;Ò;¸EÀQÐ;ÑGÔGˆØ2Ð2 /Ð2Ñ2Ô2Ð2r0   ÚfilterúOptional[Dict[str, str]]úList[Tuple[Document, float]]c                ó˜   — |pi }| j                              |¦  «        }| j                             |||d|¬¦  «        }d„ |D ¦   «         }|S )aM  Return docs most similar to query.

        Args:
            query: Text to look up documents similar to.
            k: Number of Documents to return. Defaults to 4.
            filter: Filter by metadata. Defaults to None.

        Returns:
            List of Tuples of (doc, score), where score is the similarity score.
        T)r3   Útop_kr4   Úreturn_scoresr6   c                ó<   — g | ]\  }}}t          ||¬ ¦  «        |f‘ŒS ©)rO   r4   r   )r-   r3   Úscorer4   s       r    r/   z6VLite.similarity_search_with_score.<locals>.<listcomp>�   s@   € ð !
ð !
ð !
á%��e˜Xõ  4°(Ð;Ñ;Ô;¸UÐCð!
ð !
ð !
r0   )r   Úembed_queryr   Úretrieve)	r   rT   rU   r\   r   r4   r6   r@   Údocuments_with_scoress	            r    rY   z"VLite.similarity_search_with_scorev   su   € ð" �<˜RˆØÔ+×7Ò7¸Ñ>Ô>ˆ	Ø”*×%Ò%ØØØØØð &ñ 
ô 
ˆð!
ð !
à)0ð!
ñ !
ô !
Ðð %Ð$r0   Údocument_idÚdocumentr   ÚNonec                óT   — | j                              ||j        |j        ¬¦  «         dS )z/Update an existing document in the vectorstore.)r3   r4   N)r   ÚupdaterO   r4   )r   rh   ri   s      r    Úupdate_documentzVLite.update_document–   s8   € àŒ
×ÒØ˜hÔ3¸hÔ>Oð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r0   r(   c                óR   — | j                              |¦  «        }d„ |D ¦   «         }|S )zGet documents by their IDs.c                ó6   — g | ]\  }}t          ||¬ ¦  «        ‘ŒS rc   r   )r-   r3   r4   s      r    r/   zVLite.get.<locals>.<listcomp>Ÿ   s6   € ð 
ð 
ð 
Ù?M¸tÀX�H $°Ð:Ñ:Ô:ð
ð 
ð 
r0   )r   Úget)r   r(   r@   rB   s       r    rp   z	VLite.getœ   s;   € à”*—.’. Ñ%Ô%ˆð
ð 
ØQXð
ñ 
ô 
ˆ	ð Ðr0   úOptional[List[str]]úOptional[bool]c                ó4   — |� | j         j        |fi |¤Ž dS dS )zDelete by ids.NT)r   Údelete)r   r(   r   s      r    rt   zVLite.delete¤   s.   € àˆ?ØˆDŒJÔ˜cÐ,Ð, VÐ,Ð,Ð,Ø�4Øˆtr0   r6   c                ó   —  | d||dœ|¤Ž}|S )zÉLoad an existing VLite index.

        Args:
            embedding: Embedding function
            collection: Name of the collection to load.

        Returns:
            VLite vector store.
        ©r   r   r   r   )Úclsr6   r   r   r   s        r    Úfrom_existing_indexzVLite.from_existing_index«   s%   € ð  �ÐR y¸ZÐRÐRÈ6ÐRÐRˆØˆr0   c                ó:   —  | d||dœ|¤Ž} |j         ||fi |¤Ž |S )aõ  Construct VLite wrapper from raw documents.

        This is a user-friendly interface that:
        1. Embeds documents.
        2. Adds the documents to the vectorstore.

        This is intended to be a quick way to get started.

        Example:
        .. code-block:: python

            from langchain import VLite
            from langchain_classic.embeddings import OpenAIEmbeddings

            embeddings = OpenAIEmbeddings()
            vlite = VLite.from_texts(texts, embeddings)
        rv   r   )rA   )rw   r!   r6   r#   r   r   r   s          r    Ú
from_textszVLite.from_texts¾   sA   € ð4 �ÐR y¸ZÐRÐRÈ6ÐRÐRˆØˆŒ˜˜yÐ3Ð3¨FÐ3Ð3Ð3Øˆr0   c                ó8   —  | d||dœ|¤Ž} |j         |fi |¤Ž |S )a  Construct VLite wrapper from a list of documents.

        This is a user-friendly interface that:
        1. Embeds documents.
        2. Adds the documents to the vectorstore.

        This is intended to be a quick way to get started.

        Example:
        .. code-block:: python

            from langchain import VLite
            from langchain_classic.embeddings import OpenAIEmbeddings

            embeddings = OpenAIEmbeddings()
            vlite = VLite.from_documents(documents, embeddings)
        rv   r   )rR   )rw   rB   r6   r   r   r   s         r    Úfrom_documentszVLite.from_documentsÜ   s@   € ð2 �ÐR y¸ZÐRÐRÈ6ÐRÐRˆØˆÔ˜IÐ0Ð0¨Ð0Ð0Ð0Øˆr0   )N)r   r   r   r   r   r   )r!   r"   r#   r$   r   r   r%   r&   )rB   rC   r   r   r%   r&   )rS   )rT   r+   rU   rV   r   r   r%   rC   )rS   N)
rT   r+   rU   rV   r\   r]   r   r   r%   r^   )rh   r+   ri   r   r%   rj   )r(   r&   r%   rC   )r(   rq   r   r   r%   rr   )r6   r   r   r+   r   r   r%   r   )NN)r!   r&   r6   r   r#   r$   r   r   r   r   r%   r   )
rB   rC   r6   r   r   r   r   r   r%   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rA   rR   r[   rY   rm   rp   rt   Úclassmethodrx   rz   r|   Ú__classcell__)r   s   @r    r   r      s  ø€ € € € € ØIÐIð
 %)ðAð Að Að Að Að Að Að, +/ð1ð 1ð 1ð 1ð 1ð8#9ð #9ð #9ð #9ðP ð3ð 3ð 3ð 3ð 3ð* Ø+/ð	%ð %ð %ð %ð %ð@
ð 
ð 
ð 
ðð ð ð ðð ð ð ð ð ðð ð ñ „[ðð$ ð
 +/Ø$(ðð ð ð ñ „[ðð: ð
 %)ð	ð ð ð ñ „[ðð ð ð ð r0   r   N)Ú
__future__r   Útypingr   r   r   r   r   r	   Úuuidr
   Úlangchain_core.documentsr   Úlangchain_core.embeddingsr   Úlangchain_core.vectorstoresr   r   r   r0   r    ú<module>r‰      sÑ   ðØ "Ð "Ð "Ð "Ð "Ð "ð >Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø Ð Ð Ð Ð Ð ð .Ð -Ð -Ð -Ð -Ð -Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ðjð jð jð jð jˆKñ jô jð jð jð jr0   