
    j                         d dl mZ d dlmZmZmZ d dlZd dlm	Z	 d dl
mZmZ d dlmZ d dlmZ d dlmZ erd d	lmZ e G d
 de                      Ze G d de                      ZdS )    )	dataclass)TYPE_CHECKINGListOptionalN)Element)BaseEmbeddingEncoderEmbeddingConfig)enhanced_field)EmbeddingEncoderConnectionError)requires_dependenciesBedrockEmbeddingsc                   b    e Zd ZU  ed          Zeed<    ed          Zeed<   dZeed<   dS )BedrockEmbeddingConfigT)	sensitiveaws_access_key_idaws_secret_access_keyz	us-west-2region_nameN)	__name__
__module____qualname__r
   r   str__annotations__r   r        d/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/unstructured/embed/bedrock.pyr   r      s^         +^d;;;s;;;!/$!?!?!?3???"K"""""r   r   c                   p   e Zd ZU eed<    edd          Zed         ed<    edd          Zee	e
                  ed<   edd	            Zede	e
         fd
            Z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ej         eg dd          dd                        ZdS )BedrockEmbeddingEncoderconfigFN)initdefaultr   _client_exemplary_embeddingreturnc                 P    | j         |                                 | _         | j         S N)r"   create_clientselfs    r   clientzBedrockEmbeddingEncoder.client   s%    <--//DL|r   c                 \    | j         | j                            d          | _         | j         S )NQ)r#   r*   embed_queryr(   s    r   exemplary_embeddingz+BedrockEmbeddingEncoder.exemplary_embedding%   s,    $,(,(?(?(D(DD%((r   c                 .    |                                   d S r&   )
initializer(   s    r   __post_init__z%BedrockEmbeddingEncoder.__post_init__+   s    r   c                 8    |                                  | _        d S r&   )r'   bedrock_clientr(   s    r   r0   z"BedrockEmbeddingEncoder.initialize.   s    "0022r   c                 4    t          j        | j                  S r&   )npshaper.   r(   s    r   num_of_dimensionsz)BedrockEmbeddingEncoder.num_of_dimensions1   s    x0111r   c                 p    t          j        t           j                            | j                  d          S )Ng      ?)r5   iscloselinalgnormr.   r(   s    r   is_unit_vectorz&BedrockEmbeddingEncoder.is_unit_vector4   s%    z")..)ABBCHHHr   c                 Z    t          j        | j                            |                    S r&   )r5   arrayr3   r-   )r)   querys     r   r-   z#BedrockEmbeddingEncoder.embed_query7   s#    x+77>>???r   elementsc                 z    | j                             d |D                       }|                     ||          }|S )Nc                 ,    g | ]}t          |          S r   )r   ).0es     r   
<listcomp>z;BedrockEmbeddingEncoder.embed_documents.<locals>.<listcomp>;   s    9S9S9SQ#a&&9S9S9Sr   )r3   embed_documents_add_embeddings_to_elements)r)   r@   
embeddingselements_with_embeddingss       r   rF   z'BedrockEmbeddingEncoder.embed_documents:   sC    (889S9S(9S9S9STT
#'#C#CHj#Y#Y ''r   c                     t          |          t          |          k    sJ g }t          |          D ]'\  }}||         |_        |                    |           (|S r&   )len	enumeraterH   append)r)   r@   rH   elements_w_embeddingielements         r   rG   z3BedrockEmbeddingEncoder._add_embeddings_to_elements?   sh    8}}J////!#H-- 	1 	1JAw!+AG ''0000r   )boto3numpy	langchainbedrock)extrasc                 ~    dd l }ddlm}  |j        dddi| j                                        } ||          }|S )Nr   r   service_namezbedrock-runtime)r*   r   )rQ   langchain.embeddingsr   r*   r   to_dict)r)   rQ   r   bedrock_runtimer3   s        r   r'   z%BedrockEmbeddingEncoder.create_clientG   sc     	::::::&%,__4E_I\I\I^I^__**/BBBr   )r$   r   )r   r   r   r   r   r
   r"   r   r#   r   floatpropertyr*   r.   r1   r0   r7   r<   r-   r   rF   rG   r   wrapr   r'   r   r   r   r   r      s        """"-;^PT-U-U-UGX)*UUU2@.eUY2Z2Z2Z(4;/ZZZ   X
 )T%[ ) ) ) X)
  3 3 32 2 2I I I@ @ @(W ($w- ( ( ( (
4=     %)'''    	  *)
  r   r   )dataclassesr   typingr   r   r   rR   r5   unstructured.documents.elementsr   unstructured.embed.interfacesr   r	   &unstructured.ingest.enhanced_dataclassr
   unstructured.ingest.errorr   unstructured.utilsr   rX   r   r   r   r   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 E E E E E E 4 4 4 4 4 4 7666666 # # # # #_ # # # : : : : :2 : : : : :r   