Ë
    ´Œj-&  ã                   óÚ   — d Z ddlmZm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dlmZmZ dd	lmZmZmZ dd
lmZ ddlmZ defd„Z G d„ de«      Zdee   fd„Z G d„ de«      Zy)z'Vectorstore stubs for the indexing api.é    )ÚAnyÚOptional)Ú
BaseLoader)ÚDocument)Ú
Embeddings)ÚBaseLanguageModel)ÚVectorStore)ÚRecursiveCharacterTextSplitterÚTextSplitter)Ú	BaseModelÚ
ConfigDictÚField)ÚRetrievalQAWithSourcesChain)ÚRetrievalQAÚreturnc                  ó   — t        dd¬«      S )z=Return the default text splitter used for chunking documents.iè  r   )Ú
chunk_sizeÚchunk_overlap)r
   © ó    úg/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain/indexes/vectorstore.pyÚ_get_default_text_splitterr      s   € ä)°TÈÔKÐKr   c                   ó  — e Zd ZU dZeed<    edd¬«      Z	 	 ddede	e
   d	e	eeef      d
edef
d„Z	 	 ddede	e
   d	e	eeef      d
edef
d„Z	 	 ddede	e
   d	e	eeef      d
edef
d„Z	 	 ddede	e
   d	e	eeef      d
edef
d„Zy)ÚVectorStoreIndexWrapperz-Wrapper around a vectorstore for easy access.ÚvectorstoreTÚforbid©Úarbitrary_types_allowedÚextraNÚquestionÚllmÚretriever_kwargsÚkwargsr   c           	      óä   — |€d}t        |«      ‚|xs i }t        j                  |fd | j                  j                  di |¤Ži|¤Ž}|j                  |j                  |i«      |j                     S )a�  Query the vectorstore using the provided LLM.

        Args:
            question: The question or prompt to query.
            llm: The language model to use. Must not be None.
            retriever_kwargs: Optional keyword arguments for the retriever.
            **kwargs: Additional keyword arguments forwarded to the chain.

        Returns:
            The result string from the RetrievalQA chain.
        ú´This API has been changed to require an LLM. Please provide an llm to use for querying the vectorstore.
For example,
from langchain_openai import OpenAI
llm = OpenAI(temperature=0)Ú	retrieverr   )ÚNotImplementedErrorr   Úfrom_chain_typer   Úas_retrieverÚinvokeÚ	input_keyÚ
output_key©Úselfr    r!   r"   r#   ÚmsgÚchains          r   ÚqueryzVectorStoreIndexWrapper.query    sŒ   € ð$ ˆ;ð.ð ô & cÓ*Ð*Ø+Ò1¨rÐÜ×+Ñ+Øñ
à3�d×&Ñ&×3Ñ3ÑGÐ6FÑGð
ð ñ
ˆð
 �|‰|˜UŸ_™_¨hÐ7Ó8¸×9IÑ9IÑJÐJr   c           	   ‹   ó   K  — |€d}t        |«      ‚|xs i }t        j                  |fd | j                  j                  di |¤Ži|¤Ž}|j                  |j                  |i«      ƒ d{  –—† |j                     S 7 Œ­w)a¹  Asynchronously query the vectorstore using the provided LLM.

        Args:
            question: The question or prompt to query.
            llm: The language model to use. Must not be None.
            retriever_kwargs: Optional keyword arguments for the retriever.
            **kwargs: Additional keyword arguments forwarded to the chain.

        Returns:
            The asynchronous result string from the RetrievalQA chain.
        Nr%   r&   r   )r'   r   r(   r   r)   Úainvoker+   r,   r-   s          r   ÚaqueryzVectorStoreIndexWrapper.aqueryC   s–   è ø€ ð$ ˆ;ð.ð ô & cÓ*Ð*Ø+Ò1¨rÐÜ×+Ñ+Øñ
à3�d×&Ñ&×3Ñ3ÑGÐ6FÑGð
ð ñ
ˆð
 —m‘m U§_¡_°hÐ$?Ó@×@À%×BRÑBRÑSÐSÐ@ús   ‚A(A>Á*A<Á+A>c           	      óÊ   — |€d}t        |«      ‚|xs i }t        j                  |fd | j                  j                  di |¤Ži|¤Ž}|j                  |j                  |i«      S )a¼  Query the vectorstore and retrieve the answer along with sources.

        Args:
            question: The question or prompt to query.
            llm: The language model to use. Must not be None.
            retriever_kwargs: Optional keyword arguments for the retriever.
            **kwargs: Additional keyword arguments forwarded to the chain.

        Returns:
            A dictionary containing the answer and source documents.
        r%   r&   r   )r'   r   r(   r   r)   r*   Úquestion_keyr-   s          r   Úquery_with_sourcesz*VectorStoreIndexWrapper.query_with_sourcesf   sƒ   € ð$ ˆ;ð.ð ô & cÓ*Ð*Ø+Ò1¨rÐÜ+×;Ñ;Øñ
à3�d×&Ñ&×3Ñ3ÑGÐ6FÑGð
ð ñ
ˆð
 �|‰|˜U×/Ñ/°Ð:Ó;Ð;r   c           	   ‹   óæ   K  — |€d}t        |«      ‚|xs i }t        j                  |fd | j                  j                  di |¤Ži|¤Ž}|j                  |j                  |i«      ƒ d{  –—† S 7 Œ­w)aÄ  Asynchronously query the vectorstore and retrieve the answer and sources.

        Args:
            question: The question or prompt to query.
            llm: The language model to use. Must not be None.
            retriever_kwargs: Optional keyword arguments for the retriever.
            **kwargs: Additional keyword arguments forwarded to the chain.

        Returns:
            A dictionary containing the answer and source documents.
        Nr%   r&   r   )r'   r   r(   r   r)   r3   r6   r-   s          r   Úaquery_with_sourcesz+VectorStoreIndexWrapper.aquery_with_sources‰   s�   è ø€ ð$ ˆ;ð.ð ô & cÓ*Ð*Ø+Ò1¨rÐÜ+×;Ñ;Øñ
à3�d×&Ñ&×3Ñ3ÑGÐ6FÑGð
ð ñ
ˆð
 —]‘] E×$6Ñ$6¸Ð#AÓB×BÐBÐBús   ‚A(A1Á*A/Á+A1)NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   Ú__annotations__r   Úmodel_configÚstrr   r   Údictr   r1   r4   r7   r9   r   r   r   r   r      sp  … Ù7àÓáØ $Øô€Lð ,0Ø59ñ	!Kàð!Kð Ð'Ñ(ð!Kð # 4¨¨S¨¡>Ñ2ð	!Kð
 ð!Kð 
ó!KðL ,0Ø59ñ	!Tàð!Tð Ð'Ñ(ð!Tð # 4¨¨S¨¡>Ñ2ð	!Tð
 ð!Tð 
ó!TðL ,0Ø59ñ	!<àð!<ð Ð'Ñ(ð!<ð # 4¨¨S¨¡>Ñ2ð	!<ð
 ð!<ð 
ó!<ðL ,0Ø59ñ	!Càð!Cð Ð'Ñ(ð!Cð # 4¨¨S¨¡>Ñ2ð	!Cð
 ð!Cð 
ô!Cr   r   c                  ó€   — ddl } 	 ddlm} | j	                  dd¬«       |S # t        $ r}d}t        |«      |‚d}~ww xY w)zGet the InMemoryVectorStore.r   N)ÚInMemoryVectorStorezBPlease install langchain-community to use the InMemoryVectorStore.z¨Using InMemoryVectorStore as the default vectorstore.This memory store won't persist data. You should explicitlyspecify a vectorstore when using VectorstoreIndexCreatoré   )Ú
stacklevel)ÚwarningsÚ)langchain_community.vectorstores.inmemoryrC   ÚImportErrorÚwarn)rF   rC   Úer/   s       r   Ú_get_in_memory_vectorstorerK   ­   sW   € ãð&ÝQð ‡M�Mð	Cð ð	 ô ð Ðøô ò &ØRˆÜ˜#Ó AÐ%ûð&ús   †! ¡	=ª8¸=c                   óâ   — e Zd ZU dZ ee¬«      Zee   e	d<   e
e	d<    ee¬«      Zee	d<    ee¬«      Zee	d<    edd¬	«      Zd
ee   defd„Zd
ee   defd„Zdee   defd„Zdee   defd„Zy)ÚVectorstoreIndexCreatorzLogic for creating indexes.)Údefault_factoryÚvectorstore_clsÚ	embeddingÚtext_splitterÚvectorstore_kwargsTr   r   Úloadersr   c                 ót   — g }|D ]!  }|j                  |j                  «       «       Œ# | j                  |«      S )zõCreate a vectorstore index from a list of loaders.

        Args:
            loaders: A list of `BaseLoader` instances to load documents.

        Returns:
            A `VectorStoreIndexWrapper` containing the constructed vectorstore.
        )ÚextendÚloadÚfrom_documents)r.   rS   ÚdocsÚloaders       r   Úfrom_loadersz$VectorstoreIndexCreator.from_loadersÎ   s6   € ð ˆÛˆFØ�K‰K˜Ÿ™›Õ&ð à×"Ñ" 4Ó(Ð(r   c           	   ƒ   óÈ   K  — g }|D ],  }|j                  |j                  «       2 �cg c3 d{  –—† }|‘Œ | j                  |«      ƒ d{  –—† S 7 Œ!6 nc c}w c}«       ŒY7 Œ­w)a  Asynchronously create a vectorstore index from a list of loaders.

        Args:
            loaders: A list of `BaseLoader` instances to load documents.

        Returns:
            A `VectorStoreIndexWrapper` containing the constructed vectorstore.
        N)rU   Ú
alazy_loadÚafrom_documents)r.   rS   rX   rY   Údocs        r   Úafrom_loadersz%VectorstoreIndexCreator.afrom_loadersÜ   s[   è ø€ ð ˆÛˆFØ�K‰K¨f×.?Ñ.?Ô.A×BÓB sšð à×)Ñ)¨$Ó/×/Ð/ð CøÑBùÔBÕCØ/úsA   ‚%A"§A
©A­A®A±A
µA"Á
A ÁA"ÁAÁA
ÁA"Ú	documentsc                 ó´   — | j                   j                  |«      } | j                  j                  || j                  fi | j
                  ¤Ž}t        |¬«      S )zãCreate a vectorstore index from a list of documents.

        Args:
            documents: A list of `Document` objects.

        Returns:
            A `VectorStoreIndexWrapper` containing the constructed vectorstore.
        ©r   )rQ   Úsplit_documentsrO   rW   rP   rR   r   ©r.   r`   Úsub_docsr   s       r   rW   z&VectorstoreIndexCreator.from_documentsê   sY   € ð ×%Ñ%×5Ñ5°iÓ@ˆØ9�d×*Ñ*×9Ñ9ØØ�N‰Nñ
ð ×%Ñ%ñ
ˆô
 '°;Ô?Ð?r   c              ƒ   óÐ   K  — | j                   j                  |«      } | j                  j                  || j                  fi | j
                  ¤Žƒ d{  –—† }t        |¬«      S 7 Œ­w)zòAsynchronously create a vectorstore index from a list of documents.

        Args:
            documents: A list of `Document` objects.

        Returns:
            A `VectorStoreIndexWrapper` containing the constructed vectorstore.
        Nrb   )rQ   rc   rO   r]   rP   rR   r   rd   s       r   r]   z'VectorstoreIndexCreator.afrom_documentsû   sg   è ø€ ð ×%Ñ%×5Ñ5°iÓ@ˆØ@˜D×0Ñ0×@Ñ@ØØ�N‰Nñ
ð ×%Ñ%ñ
÷ 
ˆô
 '°;Ô?Ð?ð
ús   ‚AA&ÁA$ÁA&N)r:   r;   r<   r=   r   rK   rO   Útyper	   r>   r   r   rQ   r   rA   rR   r   r?   Úlistr   r   rZ   r_   r   rW   r]   r   r   r   rM   rM   ¿   sÁ   … Ù%á).Ø2ô*€O�T˜+Ñ&ó ð ÓÙ"'Ð8RÔ"S€M�<ÓSÙ$°TÔ:Ð˜Ó:áØ $Øô€Lð
) D¨Ñ$4ð )Ð9Pó )ð0¨4°
Ñ+;ð 0Ð@Wó 0ð@¨¨X©ð @Ð;Ró @ð"@à˜‘>ð@ð 
!ô@r   rM   N)r=   Útypingr   r   Úlangchain_core.document_loadersr   Úlangchain_core.documentsr   Úlangchain_core.embeddingsr   Úlangchain_core.language_modelsr   Úlangchain_core.vectorstoresr	   Úlangchain_text_splittersr
   r   Úpydanticr   r   r   Ú*langchain.chains.qa_with_sources.retrievalr   Ú"langchain.chains.retrieval_qa.baser   r   r   rg   rK   rM   r   r   r   Ú<module>rs      si   ðÙ -ç  å 6Ý -Ý 0Ý <Ý 3ß Qß 1Ñ 1å RÝ :ðL Ló Lô
TC˜iô TCðn D¨Ñ$5ó ô$N@˜iõ N@r   