
    Ng	                         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 erd dlmZ  G d	 d
e          Ze G d de                      ZdS )    )	dataclass)TYPE_CHECKINGListOptionalN)Field	SecretStr)Element)BaseEmbeddingEncoderEmbeddingConfig)requires_dependenciesVoyageAIEmbeddingsc                       e Zd ZU eed<   eed<    ed          Zee	         ed<    ed          Z
ee         ed<    eddgd	
          dd            ZdS )VoyageAIEmbeddingConfigapi_key
model_nameN)default
batch_size
truncation	langchainlangchain_voyageaizembed-voyageai)extrasreturnr   c                 T    ddl m}  || j        | j        | j        | j                  S )z=Creates a Langchain VoyageAI python client to embed elements.r   r   )voyage_api_keymodelr   r   )r   r   r   r   r   r   )selfr   s     W/var/www/html/ai-engine/env/lib/python3.11/site-packages/unstructured/embed/voyageai.py
get_clientz"VoyageAIEmbeddingConfig.get_client   sD     	:99999!!</	
 
 
 	
    )r   r   )__name__
__module____qualname__r   __annotations__strr   r   r   intr   boolr   r    r    r   r   r      s         OOO %d 3 3 3J333!&t!4!4!4J444	*+  	
 	
 	
	 	
 	
 	
r    r   c                       e Zd ZU eed<   dee         fdZd Ze	de
edf         fd            Ze	defd            Zdee         dee         fd	Zd
edee         fdZedee         fd            ZdS )VoyageAIEmbeddingEncoderconfigr   c                 .    |                      d          S )NzA sample query.)query)embed_queryr   s    r   get_exemplary_embeddingz0VoyageAIEmbeddingEncoder.get_exemplary_embedding)   s    &7888r    c                     d S Nr(   r/   s    r   
initializez#VoyageAIEmbeddingEncoder.initialize,   s    r    .c                 R    |                                  }t          j        |          S r2   )r0   npshaper   exemplary_embeddings     r   num_of_dimensionsz*VoyageAIEmbeddingEncoder.num_of_dimensions/   s%    "::<<x+,,,r    c                     |                                  }t          j        t          j                            |          d          S )Ng      ?)r0   r5   iscloselinalgnormr7   s     r   is_unit_vectorz'VoyageAIEmbeddingEncoder.is_unit_vector4   s5    "::<<z")..)<==sCCCr    elementsc                     | j                                         }|                    d |D                       }|                     ||          S )Nc                 ,    g | ]}t          |          S r(   )r%   ).0es     r   
<listcomp>z<VoyageAIEmbeddingEncoder.embed_documents.<locals>.<listcomp>;   s    ,F,F,FSVV,F,F,Fr    )r+   r   embed_documents_add_embeddings_to_elements)r   r?   client
embeddingss       r   rE   z(VoyageAIEmbeddingEncoder.embed_documents9   sM    ''))++,F,FX,F,F,FGG
//*EEEr    r-   c                 ^    | j                                         }|                    |          S r2   )r+   r   r.   )r   r-   rG   s      r   r.   z$VoyageAIEmbeddingEncoder.embed_query>   s)    ''))!!%(((r    c                     t          |           t          |          k    sJ g }t          |           D ]'\  }}||         |_        |                    |           (| S r2   )len	enumeraterH   append)r?   rH   elements_w_embeddingielements        r   rF   z4VoyageAIEmbeddingEncoder._add_embeddings_to_elementsB   sh    8}}J////!#H-- 	1 	1JAw!+AG ''0000r    N)r!   r"   r#   r   r$   r   floatr0   r3   propertytupler&   r9   r'   r>   r	   rE   r%   r.   staticmethodrF   r(   r    r   r*   r*   %   s,        ####9e 9 9 9 9   -5c? - - - X- D D D D XDFW F$w- F F F F
) )e ) ) ) ) T']    \  r    r*   )dataclassesr   typingr   r   r   numpyr5   pydanticr   r   unstructured.documents.elementsr	   unstructured.embed.interfacesr
   r   unstructured.utilsr   r   r   r   r*   r(   r    r   <module>r\      s   ! ! ! ! ! ! 0 0 0 0 0 0 0 0 0 0     % % % % % % % % 3 3 3 3 3 3 O O O O O O O O 4 4 4 4 4 4 6555555
 
 
 
 
o 
 
 
, # # # # #3 # # # # #r    