§
    íNg  ã                   óÒ   — d dl Z d dlZd dlmZ d dlmZmZmZ d dlZ	d dl
mZ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  G d	„ d
e¦  «        Ze G d„ de¦  «        ¦   «         ZdS )é    N)Ú	dataclass)ÚTYPE_CHECKINGÚListÚOptional)ÚFieldÚ	SecretStr)ÚElement)ÚBaseEmbeddingEncoderÚEmbeddingConfig)ÚFileHandlerÚrequires_dependencies©ÚVertexAIEmbeddingsc                   ó€   — e Zd ZU eed<    ed¬¦  «        Zee         ed<   d„ Z	 e
ddgd¬	¦  «        dd„¦   «         ZdS )ÚVertexAIEmbeddingConfigÚapi_keyztextembedding-gecko@001)ÚdefaultÚ
model_namec                 ó"  — t           j                             dd¦  «        }t          |¦  «        }|                     t          j        t          j        | j         	                    ¦   «         ¦  «        ¦  «        ¦  «         |t           j
        d<   d S )Nz/tmpz"google-vertex-app-credentials.jsonÚGOOGLE_APPLICATION_CREDENTIALS)ÚosÚpathÚjoinr   Ú
write_fileÚjsonÚdumpsÚloadsr   Úget_secret_valueÚenviron)ÚselfÚapplication_credentials_pathÚcredentials_files      úW/var/www/html/ai-engine/env/lib/python3.11/site-packages/unstructured/embed/vertexai.pyÚ register_application_credentialsz8VertexAIEmbeddingConfig.register_application_credentials   sq   € Ý')¤w§|¢|°FÐ<`Ñ'aÔ'aÐ$Ý&Ð'CÑDÔDÐØ×#Ò#¥D¤J­t¬z¸$¼,×:WÒ:WÑ:YÔ:YÑ/ZÔ/ZÑ$[Ô$[Ñ\Ô\Ð\Ø7SŒ
Ð3Ñ4Ð4Ð4ó    Ú	langchainÚlangchain_google_vertexaizembed-vertexai)ÚextrasÚreturnr   c                 ó\   — ddl m} |                      ¦   «           || j        ¬¦  «        }|S )z=Creates a Langchain VertexAI python client to embed elements.r   r   )r   )r'   r   r$   r   )r    r   Úvertexai_clients      r#   Ú
get_clientz"VertexAIEmbeddingConfig.get_client   sD   € ð 	AÐ@Ð@Ð@Ð@Ð@à×-Ò-Ñ/Ô/Ð/Ø,Ð,¸¼ÐHÑHÔHˆØÐr%   N)r)   r   )Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__r   r   r   Ústrr$   r   r,   © r%   r#   r   r      s—   € € € € € € ØÐÐÑØ % Ð.GÐ HÑ HÔ H€J˜”ÐHÐHÑHðTð Tð Tð ÐØ	Ð1Ð2Øðñ ô ðð ð ñ	ô ðð ð r%   r   c                   óŠ   — e Zd ZU eed<   dee         fd„Zd„ Zd„ Z	d„ Z
d„ Zdee         dee         fd	„Zdee         fd
„ZdS )ÚVertexAIEmbeddingEncoderÚconfigr)   c                 ó.   — |                       d¬¦  «        S )NzA sample query.)Úquery)Úembed_query©r    s    r#   Úget_exemplary_embeddingz0VertexAIEmbeddingEncoder.get_exemplary_embedding/   s   € Ø×ÒÐ&7ÐÑ8Ô8Ð8r%   c                 ó   — d S ©Nr2   r9   s    r#   Ú
initializez#VertexAIEmbeddingEncoder.initialize2   s   € Øˆr%   c                 óR   — |                       ¦   «         }t          j        |¦  «        S r<   )r:   ÚnpÚshape©r    Úexemplary_embeddings     r#   Únum_of_dimensionsz*VertexAIEmbeddingEncoder.num_of_dimensions5   s%   € Ø"×:Ò:Ñ<Ô<ÐÝŒxÐ+Ñ,Ô,Ð,r%   c                 óŽ   — |                       ¦   «         }t          j        t          j                             |¦  «        d¦  «        S )Ng      ð?)r:   r?   ÚiscloseÚlinalgÚnormrA   s     r#   Úis_unit_vectorz'VertexAIEmbeddingEncoder.is_unit_vector9   s5   € Ø"×:Ò:Ñ<Ô<ÐÝŒz"œ)Ÿ.š.Ð)<Ñ=Ô=¸sÑCÔCÐCr%   c                 ó|   — | j                              ¦   «         }|                     t          |¦  «        ¦  «        }|S r<   )r5   r,   r8   r1   )r    r7   ÚclientÚresults       r#   r8   z$VertexAIEmbeddingEncoder.embed_query=   s3   € Ø”×'Ò'Ñ)Ô)ˆØ×#Ò#¥C¨¡J¤JÑ/Ô/ˆØˆr%   Úelementsc                 ó¢   — | j                              ¦   «         }|                     d„ |D ¦   «         ¦  «        }|                      ||¦  «        }|S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r2   )r1   )Ú.0Úes     r#   ú
<listcomp>z<VertexAIEmbeddingEncoder.embed_documents.<locals>.<listcomp>D   s   € Ð,FÐ,FÐ,F¸­S°©V¬VÐ,FÐ,FÐ,Fr%   )r5   r,   Úembed_documentsÚ_add_embeddings_to_elements)r    rL   rJ   Ú
embeddingsÚelements_with_embeddingss        r#   rR   z(VertexAIEmbeddingEncoder.embed_documentsB   sS   € Ø”×'Ò'Ñ)Ô)ˆØ×+Ò+Ð,FÐ,F¸XÐ,FÑ,FÔ,FÑGÔGˆ
Ø#'×#CÒ#CÀHÈjÑ#YÔ#YÐ Ø'Ð'r%   c                 ó¼   — t          |¦  «        t          |¦  «        k    sJ ‚g }t          |¦  «        D ]'\  }}||         |_        |                     |¦  «         Œ(|S r<   )ÚlenÚ	enumeraterT   Úappend)r    rL   rT   Úelements_w_embeddingÚiÚelements         r#   rS   z4VertexAIEmbeddingEncoder._add_embeddings_to_elementsH   sh   € Ý8‰}Œ}¥ J¡¤Ò/Ð/Ð/Ð/Ø!ÐÝ# HÑ-Ô-ð 	1ð 	1‰JˆAˆwØ!+¨A¤ˆGÔØ ×'Ò'¨Ñ0Ô0Ð0Ð0Øˆr%   N)r-   r.   r/   r   r0   r   Úfloatr:   r=   rC   rH   r8   r	   rR   rS   r2   r%   r#   r4   r4   +   sÉ   € € € € € € à#Ð#Ð#Ñ#ð9¨¨e¬ð 9ð 9ð 9ð 9ðð ð ð-ð -ð -ðDð Dð Dðð ð ð
(¨¨W¬ð (¸$¸w¼-ð (ð (ð (ð (ðÀ4ÈÄ=ð ð ð ð ð ð r%   r4   )r   r   Údataclassesr   Útypingr   r   r   Únumpyr?   Úpydanticr   r   Úunstructured.documents.elementsr	   Úunstructured.embed.interfacesr
   r   Úunstructured.utilsr   r   r'   r   r   r4   r2   r%   r#   ú<module>re      sA  ðà €€€Ø 	€	€	€	Ø !Ð !Ð !Ð !Ð !Ð !Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0à Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %ðð ð ð ð ð ð PÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aàð =Ø<Ð<Ð<Ð<Ð<Ð<ðð ð ð ð ˜oñ ô ð ð. ð"ð "ð "ð "ð "Ð3ñ "ô "ñ „ð"ð "ð "r%   