
    Zǻi:                        d dl mZ d dlmZmZmZ d dlmZ d dlm	Z	 d dl
mZmZ 	 d dlmZmZ erd dlmZmZ  G d d	e      Zy# eef$ r dxZZY #w xY w)
    )annotations)TYPE_CHECKINGAnyOptional)Embedder)EmbeddingsGenerationError)RateLimitHandlerrate_limit_handler)TextEmbeddingInputTextEmbeddingModelNc                  X     e Zd ZdZ	 	 d	 	 	 	 	 d fdZe	 d	 	 	 	 	 	 	 dd       Z xZS )VertexAIEmbeddingsz
    Vertex AI embeddings class.
    This class uses the Vertex AI Python client to generate vector embeddings for text data.

    Args:
        model (str): The name of the Vertex AI text embedding model to use. Defaults to "text-embedding-004".
    c                z    t         t        d      t        |   |       t        j                  |      | _        y )NzxCould not import Vertex AI Python client.
                Please install it with `pip install "neo4j-graphrag[google]"`.)r   ImportErrorsuper__init__from_pretrainedmodel)selfr   r
   	__class__s      `/opt/lhia/marcimex/agent/venv/lib/python3.12/site-packages/neo4j_graphrag/embeddings/vertexai.pyr   zVertexAIEmbeddings.__init__*   s@    
 %R  	+,'77>
    c                    	 t        ||      g} | j                  j                  |fi |}t        |d   j                        S # t
        $ r}t        d|       |d}~ww xY w)a  
        Generate embeddings for a given query using a Vertex AI text embedding model.

        Args:
            text (str): The text to generate an embedding for.
            task_type (str): The type of the text embedding task. Defaults to "RETRIEVAL_QUERY". See https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/text-embeddings-api#tasktype for a full list.
            **kwargs (Any): Additional keyword arguments to pass to the Vertex AI client's get_embeddings method.
        r   z,Failed to generate embedding with VertexAI: N)r   r   get_embeddingslistvalues	Exceptionr   )r   text	task_typekwargsinputs
embeddingses          r   embed_queryzVertexAIEmbeddings.embed_query7   sv    
	 #436F 3226DVDJ
1,,-- 	+>qcB	s   AA 	A!AA!)ztext-embedding-004N)r   strr
   zOptional[RateLimitHandler]returnNone)RETRIEVAL_QUERY)r   r%   r   r%   r    r   r&   zlist[float])__name__
__module____qualname____doc__r   r
   r$   __classcell__)r   s   @r   r   r   !   sh     *9=?? 7? 
	? *;$'GJ	 r   r   )
__future__r   typingr   r   r   neo4j_graphrag.embeddings.baser   neo4j_graphrag.exceptionsr   neo4j_graphrag.utils.rate_limitr	   r
   vertexai.language_modelsr   r   r   AttributeErrorr    r   r   <module>r6      sW    # / / 3 ? P3O
 O, , 	^$ 3.22+3s   A AA