
    Mi	                         S SK Jr  S SKJrJrJr  S SKrS SKJ	r	  S SK
Jr  S SKJrJr  S SKJr  \(       a  S SKJr   " S	 S
\5      r\ " S S\5      5       rg)    )	dataclass)TYPE_CHECKINGListOptionalN)Field)Element)BaseEmbeddingEncoderEmbeddingConfig)requires_dependenciesHuggingFaceEmbeddingsc                       \ rS rSr% \" SS9r\\   \S'   \" S S9r	\\
   \S'   \" S S9r\\
   \S	'   \" S
S9r\\
   \S'   \" S/SS9SS j5       rSrg
)HuggingFaceEmbeddingConfig   z&sentence-transformers/all-MiniLM-L6-v2)default
model_namec                  
    SS0$ )Ndevicecpu r       x/var/www/eduai.edurigo.com/storigo/production/storigo_env/lib/python3.13/site-packages/unstructured/embed/huggingface.py<lambda>#HuggingFaceEmbeddingConfig.<lambda>   s	    (EARr   )default_factorymodel_kwargsc                  
    SS0$ )Nnormalize_embeddingsFr   r   r   r   r   r      s    CY[`Bar   encode_kwargsNcache_folderlangchain_huggingfacezembed-huggingface)extrasc                 >    SSK Jn  U" S0 U R                  5       D6nU$ )z@Creates a langchain Huggingface python client to embed elements.r   r   r   ) langchain_huggingface.embeddingsr   dict)selfr   clients      r   
get_client%HuggingFaceEmbeddingConfig.get_client   s      	K&55r   r   )returnr   )__name__
__module____qualname____firstlineno__r   r   r   str__annotations__r   r%   r   r    r   r(   __static_attributes__r   r   r   r   r      sq     %.V WJW#(9R#SL(4.S$):a$bM8D>b#(#6L(4.6	 !"	r   r   c                   x    \ rS rSr% \\S'   S\\   4S jrS r	S r
S rS\\   S\\   4S	 jrS\\   4S
 jrSrg)HuggingFaceEmbeddingEncoder#   configr*   c                      U R                  SS9$ )NQ)query)embed_query)r&   s    r   get_exemplary_embedding3HuggingFaceEmbeddingEncoder.get_exemplary_embedding'   s    c**r   c                 N    U R                  5       n[        R                  " U5      $ N)r:   npshaper&   exemplary_embeddings     r   num_of_dimensions-HuggingFaceEmbeddingEncoder.num_of_dimensions*   s!    "::<xx+,,r   c                     U R                  5       n[        R                  " [        R                  R	                  U5      S5      $ )Ng      ?)r:   r>   iscloselinalgnormr@   s     r   is_unit_vector*HuggingFaceEmbeddingEncoder.is_unit_vector.   s0    "::<zz"))..)<=sCCr   c                 j    U R                   R                  5       nUR                  [        U5      5      $ r=   )r5   r(   r9   r/   )r&   r8   r'   s      r   r9   'HuggingFaceEmbeddingEncoder.embed_query2   s)    '')!!#e*--r   elementsc                     U R                   R                  5       nUR                  U Vs/ s H  n[        U5      PM     sn5      nU R	                  X5      nU$ s  snf r=   )r5   r(   embed_documentsr/   _add_embeddings_to_elements)r&   rL   r'   e
embeddingselements_with_embeddingss         r   rN   +HuggingFaceEmbeddingEncoder.embed_documents6   sT    '')++X,FXSVX,FG
#'#C#CH#Y '' -Gs   Ac                     [        U5      [        U5      :X  d   e/ n[        U5       H  u  pEX$   Ul        UR                  U5        M!     U$ r=   )len	enumeraterQ   append)r&   rL   rQ   elements_w_embeddingielements         r   rO   7HuggingFaceEmbeddingEncoder._add_embeddings_to_elements<   sN    8}J///!#H-JA!+G ''0 . r   r   N)r+   r,   r-   r.   r   r0   r   floatr:   rB   rH   r9   r   rN   rO   r1   r   r   r   r3   r3   #   sS    &&+e +-D.(W ($w- (4= r   r3   )dataclassesr   typingr   r   r   numpyr>   pydanticr   unstructured.documents.elementsr   unstructured.embed.interfacesr	   r
   unstructured.utilsr   r$   r   r   r3   r   r   r   <module>rd      sP    ! 0 0   P 4F $ "6  r   