
    :Qg	                         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y)    )	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y)VoyageAIEmbeddingConfigapi_key
model_nameN)default
batch_size
truncation	langchainlangchain_voyageaizembed-voyageai)extrasc                 v    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     X/var/www/html/answerous/venv/lib/python3.12/site-packages/unstructured/embed/voyageai.py
get_clientz"VoyageAIEmbeddingConfig.get_client   s0     	:!<<//	
 	
    )returnr   )__name__
__module____qualname__r   __annotations__strr   r   r   intr   boolr   r    r   r   r   r      sV    O %d 3J3!&t!4J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y)VoyageAIEmbeddingEncoderconfigr    c                 &    | j                  d      S )NzA sample query.)query)embed_queryr   s    r   get_exemplary_embeddingz0VoyageAIEmbeddingEncoder.get_exemplary_embedding)   s    &788r   c                      y Nr(   r/   s    r   
initializez#VoyageAIEmbeddingEncoder.initialize,   s    r   .c                 L    | j                         }t        j                  |      S r2   )r0   npshaper   exemplary_embeddings     r   num_of_dimensionsz*VoyageAIEmbeddingEncoder.num_of_dimensions/   s!    "::<xx+,,r   c                     | j                         }t        j                  t        j                  j	                  |      d      S )Ng      ?)r0   r5   iscloselinalgnormr7   s     r   is_unit_vectorz'VoyageAIEmbeddingEncoder.is_unit_vector4   s0    "::<zz"))..)<=sCCr   elementsc                     | j                   j                         }|j                  |D cg c]  }t        |       c}      }| j	                  ||      S c c}w r2   )r+   r   embed_documentsr%   _add_embeddings_to_elements)r   r?   cliente
embeddingss        r   rA   z(VoyageAIEmbeddingEncoder.embed_documents9   sL    '')++X,FSV,FG
//*EE -Gs   Ar-   c                 X    | j                   j                         }|j                  |      S r2   )r+   r   r.   )r   r-   rC   s      r   r.   z$VoyageAIEmbeddingEncoder.embed_query>   s%    '')!!%((r   c                     t        |       t        |      k(  sJ g }t        |       D ]   \  }}||   |_        |j                  |       " | S r2   )len	enumeraterE   append)r?   rE   elements_w_embeddingielements        r   rB   z4VoyageAIEmbeddingEncoder._add_embeddings_to_elementsB   sW    8}J///!#H- 	1JAw!+AG ''0	1 r   N)r!   r"   r#   r   r$   r   floatr0   r3   propertytupler&   r9   r'   r>   r	   rA   r%   r.   staticmethodrB   r(   r   r   r*   r*   %   s    ##9e 9 -5c? - - D D DFW F$w- 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>rY      sK    ! 0 0  % 3 O 45
o 
, #3 # #r   