
    "ij+                        S r SSKJr  SSKJr  SSKJr  SSKJrJ	r	  SSK
JrJrJrJr  SSKJr  SS	KJrJrJr   " S
 S\\5      rg)zOllama embeddings models.    )annotations)Any)
Embeddings)AsyncClientClient)	BaseModel
ConfigDictPrivateAttrmodel_validator)Self   )merge_auth_headersparse_url_with_authvalidate_modelc                     \ rS rSr% SrS\S'    SrS\S'    SrS	\S
'    0 rS\S'    0 r	S\S'    0 r
S\S'    \" SS9rS\S'    \" SS9rS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS \S!'    SrS\S"'    SrS\S#'    SrS\S$'    \" S%S&9r\S0S' j5       r\ " S(S)9S1S* j5       r!S2S+ jr"S3S, jr#S2S- jr$S3S. jr%S/r&g)4OllamaEmbeddings   u	  Ollama embedding model integration.

Set up a local Ollama instance:
    [Install the Ollama package](https://github.com/ollama/ollama) and set up a
    local Ollama instance.

    You will need to choose a model to serve.

    You can view a list of available models via [the model library](https://ollama.com/library).

    To fetch a model from the Ollama model library use `ollama pull <name-of-model>`.

    For example, to pull the llama3 model:

    ```bash
    ollama pull llama3
    ```

    This will download the default tagged version of the model.
    Typically, the default points to the latest, smallest sized-parameter model.

    * On Mac, the models will be downloaded to `~/.ollama/models`
    * On Linux (or WSL), the models will be stored at `/usr/share/ollama/.ollama/models`

    You can specify the exact version of the model of interest
    as such `ollama pull vicuna:13b-v1.5-16k-q4_0`.

    To view pulled models:

    ```bash
    ollama list
    ```

    To start serving:

    ```bash
    ollama serve
    ```

    View the Ollama documentation for more commands.

    ```bash
    ollama help
    ```

Install the `langchain-ollama` integration package:
    ```bash
    pip install -U langchain_ollama
    ```

Key init args — completion params:
    model: str
        Name of Ollama model to use.
    base_url: str | None
        Base url the model is hosted under.

See full list of supported init args and their descriptions in the params section.

Instantiate:
    ```python
    from langchain_ollama import OllamaEmbeddings

    embed = OllamaEmbeddings(model="llama3")
    ```

Embed single text:
    ```python
    input_text = "The meaning of life is 42"
    vector = embed.embed_query(input_text)
    print(vector[:3])
    ```

    ```python
    [-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915]
    ```

Embed multiple texts:
    ```python
    input_texts = ["Document 1...", "Document 2..."]
    vectors = embed.embed_documents(input_texts)
    print(len(vectors))
    # The first 3 coordinates for the first vector
    print(vectors[0][:3])
    ```

    ```python
    2
    [-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915]
    ```

Async:
    ```python
    vector = await embed.aembed_query(input_text)
    print(vector[:3])

    # multiple:
    # await embed.aembed_documents(input_texts)
    ```

    ```python
    [-0.009100092574954033, 0.005071679595857859, -0.0029193938244134188]
    ```
strmodelFboolvalidate_model_on_initNz
str | Nonebase_urlzdict | Noneclient_kwargsasync_client_kwargssync_client_kwargs)defaultzClient | None_clientzAsyncClient | None_async_clientz
int | Nonemirostatzfloat | Nonemirostat_etamirostat_taunum_ctxnum_gpu
keep_alive
num_threadrepeat_last_nrepeat_penaltytemperaturezlist[str] | Nonestoptfs_ztop_ktop_pforbid)extrac                &   U R                   U R                  U R                  U R                  U R                  U R
                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  S.$ )z.Get the default parameters for calling Ollama.r   r    r!   r"   r#   r%   r&   r'   r(   r)   r*   r+   r,   r0   )selfs    ]/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/langchain_ollama/embeddings.py_default_params OllamaEmbeddings._default_params   ss      -- --||||//!//"11++IIZZZZZZ
 	
    after)modec                   U R                   =(       d    0 n[        U R                  5      u  p#[        X5        UnU R                  (       a  0 UEU R                  EnUnU R
                  (       a  0 UEU R
                  En[        SSU0UD6U l        [        SSU0UD6U l	        U R                  (       a   [        U R                  U R                  5        U $ )zSet clients to use for Ollama.host )r   r   r   r   r   r   r   r   r   r   r   r   r   )r1   r   cleaned_urlauth_headersr   r   s         r2   _set_clientsOllamaEmbeddings._set_clients  s     **0b$7$F!=7*""!R$6!R$:Q:Q!R+##"U%8"UD<T<T"UE;E2DE(QkQ=PQ&&4<<4r5   c                    U R                   (       d  Sn[        U5      eU R                   R                  U R                  XR                  U R
                  S9S   $ )Embed search docs.ZOllama client is not initialized. Please ensure Ollama is running and the model is loaded.optionsr$   
embeddings)r   
ValueErrorembedr   r3   r$   r1   textsmsgs      r2   embed_documents OllamaEmbeddings.embed_documents%  sY    ||K  S/!||!!JJ';'; " 

 	r5   c                ,    U R                  U/5      S   $ )Embed query text.r   )rJ   r1   texts     r2   embed_queryOllamaEmbeddings.embed_query1  s    ##TF+A..r5   c                   #    U R                   (       d  Sn[        U5      eU R                   R                  U R                  UU R                  U R
                  S9I Sh  vN S   $  N7f)r@   rA   rB   NrD   )r   rE   rF   r   r3   r$   rG   s      r2   aembed_documents!OllamaEmbeddings.aembed_documents5  sq     !!K  S/!$$**

,,??	 +    	s   AA(A&A(c                H   #    U R                  U/5      I Sh  vN S   $  N7f)rM   Nr   )rS   rN   s     r2   aembed_queryOllamaEmbeddings.aembed_queryF  s#     ++TF33Q773s   " ")r   r   )returnzdict[str, Any])rX   r   )rH   z	list[str]rX   zlist[list[float]])rO   r   rX   zlist[float])'__name__
__module____qualname____firstlineno____doc____annotations__r   r   r   r   r   r
   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r	   model_configpropertyr3   r   r=   rJ   rP   rS   rV   __static_attributes__r:   r5   r2   r   r      s   fP J#(D(  Hj* "$M;# (*) ')( )6G]60(3D(AM%A6HjJ "&L,%7
 "&L,%' GZ& GZ- "J
! "J
!N
 !%M:$E $(NL'. !%K$? "D
!&E<Q E:2 E<E L 
 
$ '" #*
/"8r5   r   N)r]   
__future__r   typingr   langchain_core.embeddingsr   ollamar   r   pydanticr   r	   r
   r   typing_extensionsr   _utilsr   r   r   r   r:   r5   r2   <module>ri      s3     "  0 & H H " K Ky8y* y8r5   