
    dh                     `    S SK JrJrJr  S SKJr  S SKJrJrJ	r	J
r
  S SKJr   " S S\\5      rg)    )AnyListOptional)
Embeddings)	BaseModel
ConfigDictFieldmodel_validator)Selfc                      \ rS rSr% SrSr\\S'   \" SS9r	\
\S'   \" SS	S
9r\\S	'    \" SSS
9r\\S'    \" SSS
9r\\S'    \" SSS
9r\\S'    \" SSS
9r\\S'    \" SSS
9r\\S'    \" SSS
9r\\S'    \" SSS
9r\\   \S'    \" SSS
9r\\   \S'    \" SSS
9r\\   \S'    \" SSS
9r\\S'    \" SSS
9r\\
   \S'    \" SSS9r\" SS9S\4S j5       rS \\
   S\\\       4S! jr!S"\
S\\    4S# jr"S$r#g)%LlamaCppEmbeddings   a  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                 ^   U R                   n/ SQnU Vs0 sH  o3[        X5      _M     nnU R                  b  U R                  US'   U R                  (       d   SSKJn  U" U4SS0UD6U l        U $ U $ s  snf ! [         a    [        S5      e[         a  n[        S	U S
U 35      eSnAff = f)z4Validate that llama-cpp-python library is installed.)r   r   r   r   r   r   r   r   r   r   r    Nr   r   )Llama	embeddingTzCould 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   getattrr   r   	llama_cppr)   ImportError	Exception
ValueError)selfr   model_param_nameskmodel_paramsr)   es          _/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/embeddings/llamacpp.pyvalidate_environment'LlamaCppEmbeddings.validate_environmentE   s     __

 6GG5F74++5FG(+/+<+<L({{+#JO$O,O t- H  !M 
   <ZL I&&'S* s   A3A8 8B,B''B,textsc                    U R                   R                  U5      n/ nUS    H  n [        US   S   [        5      (       a6  US    H+  nUR	                  [        [        [        U5      5      5        M-     MU  UR	                  [        [        [        US   5      5      5        M     U$ ! [        [        4 a/    UR	                  [        [        [        US   5      5      5         M  f = f)zEmbed a list of documents using the Llama model.

Args:
    texts: The list of texts to embed.

Returns:
    List of embeddings, one for each text.
datar*   r   )	r   create_embedding
isinstancelistappendmapfloat
IndexError	TypeError)r0   r8   
embeddingsfinal_embeddingsr4   r:   s         r5   embed_documents"LlamaCppEmbeddings.embed_documentsn   s     [[11%8
F#AJanQ/66 !+(//S5E0FG !/ %++DUAkN1K,LM $   	* J ''S+-G(HIJs   AB)8+B));C('C(textc                 
   U R                   R                  U5      nU(       aI  [        U[        5      (       a4  [        US   [        5      (       a  [        [	        [
        US   5      5      $ [        [	        [
        U5      5      $ )zpEmbed a query using the Llama model.

Args:
    text: The text to embed.

Returns:
    Embeddings for the text.
r   )r   embedr<   r=   r?   r@   )r0   rG   r*   s      r5   embed_queryLlamaCppEmbeddings.embed_query   s`     KK%%d+	It44IaLRV9W9WE9Q<011E9-..    )r   )$__name__
__module____qualname____firstlineno____doc__r   r   __annotations__r	   r   strr   intr   r   r   boolr   r   r   r   r   r   r   r   r    r   model_configr
   r   r6   r   r@   rE   rJ   __static_attributes__r"   rL   r5   r   r      s    FCB'J's'*E3*9-GS-? b'D#'-h/FD/1U,7J7@U,7J7/E5It5,$T=Ix}=/ #3i8GXc]8/ #(N"CL(3-CF$i0GT0)!$h7FHSM72L
 '"&d & #&P T#Y  4U3D  ,/ /U /rL   r   N)typingr   r   r   langchain_core.embeddingsr   pydanticr   r   r	   r
   typing_extensionsr   r   r"   rL   r5   <module>r\      s'    & & 0 B B "I/J I/rL   