§
    šŠtjm  ã                   óh   — d dl mZmZmZ d dlmZ d dlmZmZm	Z	m
Z
 d dlmZ  G d„ dee¦  «        ZdS )é    )ÚAnyÚListÚOptional)Ú
Embeddings)Ú	BaseModelÚ
ConfigDictÚFieldÚmodel_validator)ÚSelfc                   óÖ  — e Zd ZU dZdZeed<    ed¬¦  «        Ze	ed<    edd¬	¦  «        Z
eed<   	  ed
d¬	¦  «        Zeed<   	  ed
d¬	¦  «        Zeed<   	  edd¬	¦  «        Zeed<   	  edd¬	¦  «        Zeed<   	  edd¬	¦  «        Zeed<   	  edd¬	¦  «        Zeed<   	  edd¬	¦  «        Zee         ed<   	  edd¬	¦  «        Zee         ed<   	  edd¬	¦  «        Zee         ed<   	  edd¬	¦  «        Zeed<   	  edd¬	¦  «        Zee	         ed<   	  edd¬¦  «        Z ed¬¦  «        defd„¦   «         Zdee	         deee                  fd „Z d!e	dee         fd"„Z!dS )#ÚLlamaCppEmbeddingsaµ  llama.cpp embedding models.

    To use, you should have the llama-cpp-python library installed, and provide the
    path to the Llama model as a named parameter to the constructor.
    Check out: https://github.com/abetlen/llama-cpp-python

    Example:
        .. code-block:: python

            from langchain_community.embeddings import LlamaCppEmbeddings
            llama = LlamaCppEmbeddings(model_path="/path/to/model.bin")
    NÚclientÚ )ÚdefaultÚ
model_pathi   Ún_ctx)ÚaliaséÿÿÿÿÚn_partsÚseedFÚf16_kvÚ
logits_allÚ
vocab_onlyÚ	use_mlockÚ	n_threadsÚn_batchÚn_gpu_layersTÚverboseÚdeviceÚforbid© )ÚextraÚprotected_namespacesÚafter)ÚmodeÚreturnc                 ó  ‡ — ‰ j         }g d¢}ˆ fd„|D ¦   «         }‰ j        �
‰ j        |d<   ‰ j        sW	 ddlm}  ||fddi|¤Ž‰ _        n?# t
          $ r t          d	¦  «        ‚t          $ r}t          d
|› d|› �¦  «        ‚d}~ww xY w‰ S )z4Validate that llama-cpp-python library is installed.)r   r   r   r   r   r   r   r   r   r   r   c                 ó2   •— i | ]}|t          ‰|¦  «        “ŒS r!   )Úgetattr)Ú.0ÚkÚselfs     €úe/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/embeddings/llamacpp.pyú
<dictcomp>z;LlamaCppEmbeddings.validate_environment.<locals>.<dictcomp>V   s%   ø€ ÐGÐGÐG°˜�7 4¨Ñ+Ô+ÐGÐGÐGó    Nr   r   )ÚLlamaÚ	embeddingTz�Could not import llama-cpp-python library. Please install the llama-cpp-python library to use this embedding model: pip install llama-cpp-pythonz&Could not load Llama model from path: z. Received error )r   r   r   Ú	llama_cppr0   ÚImportErrorÚ	ExceptionÚ
ValueError)r,   r   Úmodel_param_namesÚmodel_paramsr0   Úes   `     r-   Úvalidate_environmentz'LlamaCppEmbeddings.validate_environmentE   s  ø€ ð ”_ˆ
ð
ð 
ð 
Ðð HÐGÐGÐGÐ5FÐGÑGÔGˆàÔÐ(Ø+/Ô+<ˆL˜Ñ(àŒ{ð 	ðØ+Ð+Ð+Ð+Ð+Ð+à#˜e JÐOÐO¸$ÐOÀ,ÐOÐO�”�øÝð ð ð Ý!ðMñô ð õ
 ð ð ð Ý ð*¸Zð *ð *Ø&'ð*ð *ñô ð øøøøðøøøð ˆs   ´A Á"BÁ-BÂBÚtextsc                 ó4  — | j                              |¦  «        }g }|d         D ]ò}	 t          |d         d         t          ¦  «        rA|d         D ]7}|                     t          t          t          |¦  «        ¦  «        ¦  «         Œ8n;|                     t          t          t          |d         ¦  «        ¦  «        ¦  «         Œ¡# t          t          f$ r> |                     t          t          t          |d         ¦  «        ¦  «        ¦  «         Y Œïw xY w|S )z¼Embed a list of documents using the Llama model.

        Args:
            texts: The list of texts to embed.

        Returns:
            List of embeddings, one for each text.
        Údatar1   r   )	r   Úcreate_embeddingÚ
isinstanceÚlistÚappendÚmapÚfloatÚ
IndexErrorÚ	TypeError)r,   r:   Ú
embeddingsÚfinal_embeddingsr8   r<   s         r-   Úembed_documentsz"LlamaCppEmbeddings.embed_documentsn   s"  € ð ”[×1Ò1°%Ñ8Ô8ˆ
ØÐØ˜FÔ#ð 	Jð 	JˆAðJÝ˜a œn¨QÔ/µÑ6Ô6ð NØ ! +¤ð Hð H˜Ø(×/Ò/µµS½ÀÑ5EÔ5EÑ0FÔ0FÑGÔGÐGÐGðHð %×+Ò+­DµµU¸A¸k¼NÑ1KÔ1KÑ,LÔ,LÑMÔMÐMøøÝ¥	Ð*ð Jð Jð JØ ×'Ò'­­Sµ¸¸+¼Ñ-GÔ-GÑ(HÔ(HÑIÔIÐIÐIÐIðJøøøàÐs   ¨BCÃADÄDÚtextc                 ó.  — | j                              |¦  «        }|rXt          |t          ¦  «        rCt          |d         t          ¦  «        r(t          t	          t
          |d         ¦  «        ¦  «        S t          t	          t
          |¦  «        ¦  «        S )z˜Embed a query using the Llama model.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r   )r   Úembedr>   r?   rA   rB   )r,   rH   r1   s      r-   Úembed_queryzLlamaCppEmbeddings.embed_query„   s|   € ð ”K×%Ò% dÑ+Ô+ˆ	Øð 	/� I­tÑ4Ô4ð 	/½ÀIÈaÄLÕRVÑ9WÔ9Wð 	/Ý��E 9¨Q¤<Ñ0Ô0Ñ1Ô1Ð1å��E 9Ñ-Ô-Ñ.Ô.Ð.r/   )"Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ú__annotations__r	   r   Ústrr   Úintr   r   r   Úboolr   r   r   r   r   r   r   r   r   r   Úmodel_configr
   r   r9   r   rB   rG   rK   r!   r/   r-   r   r      sª  € € € € € € ðð ð €FˆCÐÐÑØ�e BÐ'Ñ'Ô'€J�Ð'Ð'Ñ'à��s 'Ð*Ñ*Ô*€Eˆ3Ð*Ð*Ñ*Øà�5˜ 9Ð-Ñ-Ô-€GˆSÐ-Ð-Ñ-ð?ð ��b Ð'Ñ'Ô'€Dˆ#Ð'Ð'Ñ'Ø-à�5˜ hÐ/Ñ/Ô/€FˆDÐ/Ð/Ñ/Ø1à�u˜U¨,Ð7Ñ7Ô7€J�Ð7Ð7Ñ7Ø@à�u˜U¨,Ð7Ñ7Ô7€J�Ð7Ð7Ñ7Ø/à�e˜E¨Ð5Ñ5Ô5€IˆtÐ5Ð5Ñ5Ø,à$˜u T°Ð=Ñ=Ô=€Iˆx˜Œ}Ð=Ð=Ñ=ð/ð #˜U 3¨iÐ8Ñ8Ô8€GˆX�cŒ]Ð8Ð8Ñ8ð/ð #( %¨°NÐ"CÑ"CÔ"C€L�(˜3”-ÐCÐCÑCØFà�E˜$ iÐ0Ñ0Ô0€GˆTÐ0Ð0Ñ0Ø)à!˜E $¨hÐ7Ñ7Ô7€FˆH�SŒMÐ7Ð7Ñ7Ø2à�:ØØðñ ô €Lð
 €_˜'Ð"Ñ"Ô"ð& dð &ð &ð &ñ #Ô"ð&ðP  T¨#¤Yð  °4¸¸U¼Ô3Dð  ð  ð  ð  ð,/ ð /¨¨U¬ð /ð /ð /ð /ð /ð /r/   r   N)Útypingr   r   r   Úlangchain_core.embeddingsr   Úpydanticr   r   r	   r
   Útyping_extensionsr   r   r!   r/   r-   ú<module>rY      s«   ðØ &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ "Ð "Ð "Ð "Ð "Ð "ðI/ð I/ð I/ð I/ð I/˜ Jñ I/ô I/ð I/ð I/ð I/r/   