§
    æ˜ºhC  ã                   ó`   — d dl mZmZmZmZ d dlmZ d dlmZm	Z	m
Z
mZ  G d„ dee¦  «        ZdS )é    )ÚAnyÚDictÚListÚOptional)Ú
Embeddings)Ú	BaseModelÚExtraÚFieldÚroot_validatorc                   óˆ  — e Zd ZU dZeed<   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<   	  G d„ d¦  «        Z e¦   «         de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")
    ÚclientÚ
model_pathi   Ún_ctx)ÚaliaséÿÿÿÿÚn_partsÚseedFÚf16_kvÚ
logits_allÚ
vocab_onlyÚ	use_mlockNÚ	n_threadsé   Ún_batchÚn_gpu_layersTÚverbosec                   ó    — e Zd ZdZej        ZdS )úLlamaCppEmbeddings.Configz'Configuration for this pydantic object.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   ÚforbidÚextra© ó    úo/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/embeddings/llamacpp.pyÚConfigr   <   s   € € € € € Ø5Ð5à”ˆˆˆr'   r)   ÚvaluesÚreturnc                 ó  ‡— ‰d         }g d¢}ˆfd„|D ¦   «         }‰d         �‰d         |d<   	 ddl m}  ||fdd	i|¤Ž‰d
<   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                 ó"   •— i | ]}|‰|         “ŒS r&   r&   )Ú.0Úkr*   s     €r(   ú
<dictcomp>z;LlamaCppEmbeddings.validate_environment.<locals>.<dictcomp>Q   s   ø€ Ð@Ð@Ð@¨˜˜6 !œ9Ð@Ð@Ð@r'   r   Nr   )ÚLlamaÚ	embeddingTr   z�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 )Ú	llama_cppr1   ÚImportErrorÚModuleNotFoundErrorÚ	ExceptionÚ
ValueError)Úclsr*   r   Úmodel_param_namesÚmodel_paramsr1   Úes    `     r(   Úvalidate_environmentz'LlamaCppEmbeddings.validate_environmentA   s  ø€ ð ˜LÔ)ˆ
ð
ð 
ð 
Ðð AÐ@Ð@Ð@Ð.?Ð@Ñ@Ô@ˆà�.Ô!Ð-Ø+1°.Ô+AˆL˜Ñ(ð	Ø'Ð'Ð'Ð'Ð'Ð'à$˜u ZÐPÐP¸4ÐPÀ<ÐPÐPˆF�8ÑÐøÝð 	ð 	ð 	Ý%ðIñô ð õ
 ð 	ð 	ð 	Ýð&¸ð &ð &Ø"#ð&ð &ñô ð øøøøð	øøøð ˆs   °A Á"BÁ'A<Á<BÚtextsc                 ó8   ‡ — ˆ fd„|D ¦   «         }d„ |D ¦   «         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.
        c                 óD   •— g | ]}‰j                              |¦  «        ‘ŒS r&   )r   Úembed)r.   ÚtextÚselfs     €r(   ú
<listcomp>z6LlamaCppEmbeddings.embed_documents.<locals>.<listcomp>q   s)   ø€ Ð@Ð@Ð@°$�d”k×'Ò'¨Ñ-Ô-Ð@Ð@Ð@r'   c                 óR   — g | ]$}t          t          t          |¦  «        ¦  «        ‘Œ%S r&   )ÚlistÚmapÚfloat)r.   r;   s     r(   rC   z6LlamaCppEmbeddings.embed_documents.<locals>.<listcomp>r   s(   € Ð8Ð8Ð8¨••S� ‘]”]Ñ#Ô#Ð8Ð8Ð8r'   r&   )rB   r=   Ú
embeddingss   `  r(   Úembed_documentsz"LlamaCppEmbeddings.embed_documentsh   s3   ø€ ð AÐ@Ð@Ð@¸%Ð@Ñ@Ô@ˆ
Ø8Ð8¨ZÐ8Ñ8Ô8Ð8r'   rA   c                 óz   — | j                              |¦  «        }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@   rE   rF   rG   )rB   rA   r2   s      r(   Úembed_queryzLlamaCppEmbeddings.embed_queryt   s1   € ð ”K×%Ò% dÑ+Ô+ˆ	Ý•C�˜yÑ)Ô)Ñ*Ô*Ð*r'   )r    r!   r"   r#   r   Ú__annotations__Ústrr
   r   Úintr   r   r   Úboolr   r   r   r   r   r   r   r   r)   r   r   r<   r   rG   rI   rK   r&   r'   r(   r   r      sw  € € € € € € ðð ð €K€K�KØ€O€O�Oà��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 1¨IÐ6Ñ6Ô6€GˆX�cŒ]Ð6Ð6Ñ6ð/ð #( %¨°NÐ"CÑ"CÔ"C€L�(˜3”-ÐCÐCÑCØFà�E˜$ iÐ0Ñ0Ô0€GˆTÐ0Ð0Ñ0Ø)ðð ð ð ð ñ ô ð ð
 €^ÑÔð$¨$ð $°4ð $ð $ð $ñ Ôð$ðL
9 T¨#¤Yð 
9°4¸¸U¼Ô3Dð 
9ð 
9ð 
9ð 
9ð
+ ð 
+¨¨U¬ð 
+ð 
+ð 
+ð 
+ð 
+ð 
+r'   r   N)Útypingr   r   r   r   Úlangchain_core.embeddingsr   Úlangchain_core.pydantic_v1r   r	   r
   r   r   r&   r'   r(   ú<module>rS      sŸ   ðØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ Nðw+ð w+ð w+ð w+ð w+˜ Jñ w+ô w+ð w+ð w+ð w+r'   