Ë
    kQêj€  ã                   ó˜   — d dl mZ d dlmZmZmZmZmZmZ d dl	Z
ddlmZ ddlmZ ddlmZ erd dlZd	Z ed
«       G d„ de«      «       Zy)é    )Úcached_property)ÚTYPE_CHECKINGÚAnyÚListÚOptionalÚSequenceÚUnionNé   )Úattempt_import_or_raiseé   )ÚTextEmbeddingFunction)Úregisterzhttp://localhost:11434Úollamac                   ó^  ‡ — e Zd ZU dZdZeed<   eZeed<   dZ	e
e   ed<   dZe
eeef      ed<   i Ze
e   ed<   d	ee   fd
„Zd	efd„Zdee   d	eee      fd„Zdeee   ej.                  f   d	eeej2                  df      fd„Zd	eeef   fˆ fd„Zdeeef   d	dfˆ fd„Zedd„«       Zˆ xZ S )ÚOllamaEmbeddingsz­
    An embedding function that uses Ollama

    https://github.com/ollama/ollama/blob/main/docs/api.md#generate-embeddings
    https://ollama.com/blog/embedding-models
    znomic-embed-textÚnameÚhostNÚoptionsÚ
keep_aliveÚollama_client_kwargsÚreturnc                 ó‚  — g }| j                   j                  d«      t        k7  r|j                  | j                   «       dD ]z  }| j                  xs i j                  |«      }t        |t        «      r|j                  |«       ŒDt        |t        «      sŒU|j                  d„ |j                  «       D «       «       Œ| |S )Nú/)ÚproxyÚproxiesc              3   óB   K  — | ]  }t        |t        «      sŒ|–— Œ y ­w©N)Ú
isinstanceÚstr)Ú.0Úvs     ú^/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/lancedb/embeddings/ollama.pyú	<genexpr>z-OllamaEmbeddings.endpoints.<locals>.<genexpr>.   s   è ø€ ÒL !¼ÀAÄsÕ9KœAÑLùs   ‚˜)r   ÚrstripÚDEFAULT_OLLAMA_HOSTÚappendr   Úgetr   r   ÚdictÚextendÚvalues)ÚselfÚurlsÚkeyr   s       r"   Ú	endpointszOllamaEmbeddings.endpoints#   sœ   € ØˆØ�9‰9×Ñ˜CÓ Ô$7Ò7Ø�K‰K˜Ÿ	™	Ô"ð (ò 	MˆCØ×.Ñ.Ò4°"×9Ñ9¸#Ó>ˆEÜ˜%¤Ô%Ø—‘˜EÕ"Ü˜E¤4Õ(Ø—‘ÑL u§|¡|£~ÔLÕLð	Mð ˆó    c                 ó>   — t        | j                  dg«      d   «      S )NÚfoor   )ÚlenÚgenerate_embeddings)r+   s    r"   ÚndimszOllamaEmbeddings.ndims1   s   € Ü�4×+Ñ+¨U¨GÓ4°QÑ7Ó8Ð8r/   Útextc                 ó”   — | j                   j                  | j                  || j                  | j                  ¬«      }|j
                  S )N)ÚmodelÚinputr   r   )Ú_ollama_clientÚembedr   r   r   Ú
embeddings)r+   r5   Úresponses      r"   Ú_compute_embeddingz#OllamaEmbeddings._compute_embedding4   sC   € Ø×&Ñ&×,Ñ,Ø—)‘)ØØ—L‘LØ—‘ð	 -ó 
ˆð ×"Ñ"Ð"r/   Útextsc                 óŽ   — t        |t        j                  «      r|j                  «       }| j	                  |«      }t        |«      S )z®
        Get the embeddings for the given texts

        Parameters
        ----------
        texts: list[str] or np.ndarray (of str)
            The texts to embed
        )r   ÚnpÚndarrayÚtolistr=   Úlist)r+   r>   r;   s      r"   r3   z$OllamaEmbeddings.generate_embeddings=   s8   € ô �eœRŸZ™ZÔ(Ø—L‘L“NˆEØ×,Ñ,¨UÓ3ˆ
Ü�JÓÐr/   c                 ó�   •— t         ‰| �  «       }|d   j                  «       D ��ci c]  \  }}|dk7  sŒ||“Œ c}}|d<   |S c c}}w )NÚ__dict__r9   )ÚsuperÚ__getstate__Úitems)r+   ÚstateÚkr!   Ú	__class__s       €r"   rG   zOllamaEmbeddings.__getstate__N   sT   ø€ Ü‘Ñ$Ó&ˆà" :Ñ.×4Ñ4Ó6÷
Ù�Q˜¸!Ð?OÓ:OˆAˆq‰Dó
ˆˆjÑð ˆùó
s
   ¦A´ArI   c                 ó$   •— t         ‰| �  |«       y r   )rF   Ú__setstate__)r+   rI   rK   s     €r"   rM   zOllamaEmbeddings.__setstate__U   s   ø€ Ü‰Ñ˜UÕ#r/   c                 óh   — t        d«      } |j                  dd| j                  i| j                  ¤ŽS )Nr   r   © )r   ÚClientr   r   )r+   r   s     r"   r9   zOllamaEmbeddings._ollama_clientX   s/   € ä(¨Ó2ˆàˆv�}‰}ÑI $§)¡)ÐI¨t×/HÑ/HÑIÐIr/   )r   zollama.Client)!Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ú__annotations__r%   r   r   r   r(   r   r	   Úfloatr   r   r.   Úintr4   r   r=   r@   rA   rC   Úarrayr3   r   rG   rM   r   r9   Ú__classcell__)rK   s   @r"   r   r      s  ø… ñð #€Dˆ#Ó"Ø#€Dˆ#Ó#Ø"€GˆX�d‰^Ó"Ø.2€J�˜˜u c˜zÑ*Ñ+Ó2Ø+-Ð˜( 4™.Ó-ð˜4 ™9ó ð9�só 9ð# x°¡}ð #¸À(È5Á/Ñ9Ró #ð Ø˜4 ™9 b§j¡jÐ0Ñ1ð à	ˆe�B—H‘H˜d�NÑ#Ñ	$ó ð"˜d 3¨ 8™nõ ð$ $ s¨C x¡.ð $°Tõ $ð òJó ôJr/   r   )Ú	functoolsr   Útypingr   r   r   r   r   r	   Únumpyr@   Úutilr   Úbaser   Úregistryr   r   r%   r   rO   r/   r"   ú<module>r`      sQ   ðõ &ß F× Fã å *Ý 'Ý áÛð /Ð ñ 
ˆ(ÓôGJÐ,ó GJó ñGJr/   