Ë
    lQêjh  ã                   ó†   — 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mZ d dlZd dlZ G d„ de«      Z G d„ dee   «      Zy)	é    )Ú
EmbeddingsÚ	DocumentsÚEmbeddingFunctionÚSpace©Úvalidate_config_schema)ÚListÚDictÚAnyÚ	TypedDictÚOptionalNc                   ó   — e Zd ZU eed<   y)ÚNomicQueryConfigÚ	task_typeN)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__© ó    ú€/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/chromadb/utils/embedding_functions/nomic_embedding_function.pyr   r      s   … Ø„Nr   r   c            	       ó  — e Zd ZdZ	 ddededee   defd„Zdede	fd	„Z
dede	fd
„Zedefd„«       Zdefd„Zdee   fd„Zedeeef   ddfd„«       Zdeeef   fd„Zdeeef   deeef   ddfd„Zedeeef   ddfd„«       Zy)ÚNomicEmbeddingFunctionzW
    This class is used to get embeddings for a list of texts using the Nomic API.
    Úmodelr   Úquery_configÚapi_key_env_varc                 óò   — 	 ddl m} || _        || _        || _        t        j                  |«      | _	        || _
        | j                  st        d|› d�«      ‚|| _        y# t        $ r t        d«      ‚w xY w)av  
        Initialize the NomicEmbeddingFunction.

        Args:
            model (str): The name of the model to use for text embeddings.
            task_type (str): The type of task to embed with. See reference https://docs.nomic.ai/platform/embeddings-and-retrieval/text-embedding#embedding-task-types
            query_config (Optional[NomicQueryConfig]): The configuration for setting task type for queries
            api_key_env_var (str): The environment variable name for the Nomic API key. Defaults to "NOMIC_API_KEY".

            Supported task types: search_document, search_query, classification, clustering
        r   )ÚembedzUThe nomic python package is not installed. Please install it with `pip install nomic`zThe z! environment variable is not set.N)Únomicr   ÚImportErrorÚ
ValueErrorr   r   r   ÚosÚgetenvÚapi_keyr   )Úselfr   r   r   r   r   s         r   Ú__init__zNomicEmbeddingFunction.__init__   s   € ð$	Ý#ð ˆŒ
Ø"ˆŒØ.ˆÔÜ—y‘y Ó1ˆŒØ(ˆÔØ�|Š|Ü˜t OÐ#4Ð4UÐVÓWÐWØˆ�
øô ò 	ÜØgóð ð	ús   ‚A! Á!A6ÚinputÚreturnc                 ó  — t        d„ |D «       «      st        d«      ‚| j                  j                  | j                  || j
                  ¬«      }|j                  D �cg c]!  }t        j                  |j                  «      ‘Œ# c}S c c}w )Nc              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­w©N©Ú
isinstancer   ©Ú.0Úitems     r   ú	<genexpr>z2NomicEmbeddingFunction.__call__.<locals>.<genexpr>9   ó   è ø€ Ò;¨T”:˜d¤C×(Ñ;ùó   ‚z.Nomic only supports text documents, not images©r   Útextsr   )
Úallr"   r   Útextr   r   ÚdataÚnpÚarrayÚ	embedding)r&   r(   Úoutputr9   s       r   Ú__call__zNomicEmbeddingFunction.__call__8   sk   € ÜÑ;°UÔ;Ô;ÜÐMÓNÐNØ—‘—‘Ø—*‘*ØØ—n‘nð !ó 
ˆð
 6<·[±[ÖA¨T”—‘˜Ÿ™Õ(ÒAÐAùÒAs   Á&Bc                 ój  — t        d„ |D «       «      st        d«      ‚| j                  r| j                  j                  d«      n| j                  }| j
                  j                  | j                  ||¬«      }|j                  D �cg c]!  }t        j                  |j                  «      ‘Œ# c}S c c}w )Nc              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr,   r-   r/   s     r   r2   z5NomicEmbeddingFunction.embed_query.<locals>.<genexpr>C   r3   r4   z,Nomic only supports text queries, not imagesr   r5   )r7   r"   r   Úgetr   r   r8   r   r9   r:   r;   r<   )r&   r(   r   r=   r9   s        r   Úembed_queryz"NomicEmbeddingFunction.embed_queryB   s’   € ÜÑ;°UÔ;Ô;ÜÐKÓLÐLð 37×2CÒ2CˆD×Ñ×!Ñ! +Ô.ÈÏÉð 	ð —‘—‘Ø—*‘*ØØð !ó 
ˆð
 6<·[±[ÖA¨T”—‘˜Ÿ™Õ(ÒAÐAùÒAs   Â&B0c                   ó   — y)Nr    r   r   r   r   ÚnamezNomicEmbeddingFunction.nameP   s   € àr   c                  ó   — y)NÚcosiner   ©r&   s    r   Údefault_spacez$NomicEmbeddingFunction.default_spaceT   s   € Ør   c                 ó
   — g d¢S )N)rF   Úl2Úipr   rG   s    r   Úsupported_spacesz'NomicEmbeddingFunction.supported_spacesW   s   € Ú%Ð%r   ÚconfigzEmbeddingFunction[Documents]c                 óÂ   — | j                  d«      }| j                  d«      }| j                  d«      }| j                  d«      }|�|�|€J d«       ‚t        ||||¬«      S )Nr   r   r   r   zThis code should not be reached©r   r   r   r   )rA   r   )rM   r   r   r   r   s        r   Úbuild_from_configz(NomicEmbeddingFunction.build_from_configZ   sn   € à—
‘
˜7Ó#ˆØ Ÿ*™*Ð%6Ó7ˆØ—J‘J˜{Ó+ˆ	Ø—z‘z .Ó1ˆØˆ=˜OÐ3°yÐ7HØ;Ð;Ó;�5Ü%ØØ+ØØ%ô	
ð 	
r   c                 ó`   — | j                   | j                  | j                  | j                  dœS )NrO   rO   rG   s    r   Ú
get_configz!NomicEmbeddingFunction.get_configi   s,   € à—Z‘ZØ#×3Ñ3ØŸ™Ø ×-Ñ-ñ	
ð 	
r   Ú
old_configÚ
new_configNc                 ó"   — d|v rt        d«      ‚y )Nr   zNThe model cannot be changed after the embedding function has been initialized.)r"   )r&   rS   rT   s      r   Úvalidate_config_updatez-NomicEmbeddingFunction.validate_config_updateq   s!   € ð �jÑ ÜØ`óð ð !r   c                 ó   — t        | d«       y)z€
        Validate the configuration using the JSON schema.

        Args:
            config: Configuration to validate
        r    Nr   )rM   s    r   Úvalidate_configz&NomicEmbeddingFunction.validate_configy   s   € ô 	˜v wÕ/r   )ÚNOMIC_API_KEY)r   r   r   Ú__doc__r   r   r   r'   r   r   r>   rB   ÚstaticmethodrD   r   rH   r	   rL   r
   r   rP   rR   rV   rX   r   r   r   r   r      s7  „ ñð  /ñ àð ð ð ð Ð/Ñ0ð	 ð
 ó ðDB˜ið B¨Jó BðB ð B¨zó Bð ð�#ò ó ðð˜uó ð& $ u¡+ó &ð ð
 $ s¨C x¡.ð 
Ð5Sò 
ó ð
ð
˜D  c ™Nó 
ðØ˜s C˜x™.ðØ6:¸3À¸8±nðà	óð ð0  S¨# X¡ð 0°4ò 0ó ñ0r   r   )Úchromadb.api.typesr   r   r   r   Ú*chromadb.utils.embedding_functions.schemasr   Útypingr	   r
   r   r   r   r#   Únumpyr:   r   r   r   r   r   ú<module>r`      sA   ð÷ó õ Nß 7Õ 7Û 	Û ô�yô ôp0Ð.¨yÑ9õ p0r   