
    ugG                     |    d dl Z d dlmZmZmZ d dlZd dlmZmZm	Z	  e j                  e      Z G d dee         Zy)    N)ListcastUnion)	DocumentsEmbeddingFunction
Embeddingsc                   2    e Zd ZdZd	dedefdZdedefdZy)
JinaEmbeddingFunctionz
    This class is used to get embeddings for a list of texts using the Jina AI API.
    It requires an API key and a model name. The default model name is "jina-embeddings-v2-base-en".
    api_key
model_namec                     || _         d| _        t        j                         | _        | j                  j
                  j                  d| dd       y)a  
        Initialize the JinaEmbeddingFunction.

        Args:
            api_key (str): Your API key for the Jina AI API.
            model_name (str, optional): The name of the model to use for text embeddings. Defaults to "jina-embeddings-v2-base-en".
        z!https://api.jina.ai/v1/embeddingszBearer identity)AuthorizationzAccept-EncodingN)_model_name_api_urlhttpxClient_sessionheadersupdate)selfr   r   s      o/var/www/openai/venv/lib/python3.12/site-packages/chromadb/utils/embedding_functions/jina_embedding_function.py__init__zJinaEmbeddingFunction.__init__   sG     &;$$ 'y1jQ	
    inputreturnc                    | j                   j                  | j                  || j                  d      j	                         }d|vrt        |d         |d   }t        |d       }t        t        |D cg c]  }|d   	 c}      S c c}w )a  
        Get the embeddings for a list of texts.

        Args:
            texts (Documents): A list of texts to get embeddings for.

        Returns:
            Embeddings: The embeddings for the texts.

        Example:
            >>> jina_ai_fn = JinaEmbeddingFunction(api_key="your_api_key")
            >>> input = ["Hello, world!", "How are you?"]
            >>> embeddings = jina_ai_fn(input)
        )r   model)jsondatadetailc                     | d   S )Nindex )es    r   <lambda>z0JinaEmbeddingFunction.__call__.<locals>.<lambda>9   s    QwZr   )key	embedding)	r   postr   r   r   RuntimeErrorsortedr   r   )r   r   resp
embeddingssorted_embeddingsresults         r   __call__zJinaEmbeddingFunction.__call__    s      }}!!MM%$:J:J K " 

$& 	 tH~..?CF|
 #:3GH JCT UCT!4CT UVV Us   6B	
N)zjina-embeddings-v2-base-en)	__name__
__module____qualname____doc__strr   r   r   r0   r$   r   r   r
   r
      s0    

 
 
Wi WJ Wr   r
   )loggingtypingr   r   r   r   chromadb.api.typesr   r   r   	getLoggerr1   loggerr
   r$   r   r   <module>r;      s=     $ $  G G			8	$1W-i8 1Wr   