
    ^Nj                        U 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 d dlmZ d dlmZ d dlmZmZ  ed	d
d dddddddd ed	      ddg	      gZee   ed<    G d dee      Z G d de      Z G d de      Zy)    )Enum)AnyTypeIterableN)OnnxOutputContext)
NumpyArray)PooledNormalizedEmbedding)OnnxTextEmbeddingWorker)DenseModelDescriptionModelSourcezjinaai/jina-embeddings-v3i               )zretrieval.queryzretrieval.passage
separationclassificationztext-matchingzMulti-task unimodal (text) embedding model, multi-lingual (~100), 1024 tokens truncation, and 8192 sequence length. Prefixes for queries/documents: not necessary, 2024 year.zcc-by-nc-4.0gRQ@)hfzonnx/model.onnxzonnx/model.onnx_data)	modeldimtasksdescriptionlicense
size_in_GBsources
model_fileadditional_filessupported_multitask_modelsc                        e Zd ZdZdZdZdZdZy)Taskr   r   r   r   r   N)__name__
__module____qualname__RETRIEVAL_QUERYRETRIEVAL_PASSAGE
SEPARATIONCLASSIFICATIONTEXT_MATCHING     s/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/fastembed/text/multitask_embedding.pyr   r   $   s    OJNMr)   r   c                   t    e Zd Zej                  Zej                  Zdddede	dz  def fdZ
edee   fd       Zedee   fd	       Z	 dd
eeef   de	ez  dz  dedeeef   fdZ	 	 	 ddeee   z  de	de	dz  de	dz  dedee   f fdZdeee   z  dedee   f fdZdee   dedee   f fdZ xZS )JinaEmbeddingV3Ntask_idargsr.   kwargsc                Z    t        |   |i | ||| _        y | j                  | _        y N)super__init__PASSAGE_TASKdefault_task_id)selfr.   r/   r0   	__class__s       r*   r4   zJinaEmbeddingV3.__init__0   s/    $)&)6=6I7tO`O`r)   returnc                     t         S r2   )JinaEmbeddingV3Workerclss    r*   _get_worker_classz!JinaEmbeddingV3._get_worker_class4   s    $$r)   c                     t         S r2   )r   r<   s    r*   _list_supported_modelsz&JinaEmbeddingV3._list_supported_models8   s    ))r)   
onnx_inputc                 x    |t        d| d      t        j                  |t        j                        |d<   |S )Nz3task_id must be provided for JinaEmbeddingV3, got <>)dtyper.   )
ValueErrornparrayint64)r7   rA   r.   r0   s       r*   _preprocess_onnx_inputz&JinaEmbeddingV3._preprocess_onnx_input<   s@     ?RSZR[[\]^^ " A
9r)   	documents
batch_sizeparallelc              +   j   K   ||n| j                   }t        |   |||fd|i|E d {    y 7 wNr.   )r6   r3   embed)r7   rJ   rK   rL   r.   r0   r8   s         r*   rO   zJinaEmbeddingV3.embedG   sA      *G0D0D 	 7=J\'\U[\\\s   (313queryc              +   Z   K   t        |   |fd| j                  i|E d {    y 7 wrN   )r3   rO   
QUERY_TASK)r7   rP   r0   r8   s      r*   query_embedzJinaEmbeddingV3.query_embedT   s'     7=JJ6JJJ    +)+textsc              +   Z   K   t        |   |fd| j                  i|E d {    y 7 wrN   )r3   rO   r5   )r7   rU   r0   r8   s      r*   passage_embedzJinaEmbeddingV3.passage_embedW   s)     7=L0A0ALVLLLrT   r2   )   NN)r    r!   r"   r   r$   r5   r#   rR   r   intr4   classmethodr   r
   r>   listr   r@   dictstrr   rI   r   rO   rS   rW   __classcell__)r8   s   @r*   r,   r,   ,   s   ))L%%J9= ac aC$J a a %$'>"? % % *t,A'B * * &*	j)	 td"	 		
 
c:o		 #"]#&] ] *	]
 t] ] 
*	]Kx}!4 K KQ[H\ KM8C= MC MHZDX M Mr)   r,   c                   T    e Zd ZdedededefdZdeee	ef      deee	e
f      fdZy)	r;   
model_name	cache_dirr0   r9   c                      t        d||dd|S )Nr   )r`   ra   threadsr(   )r,   )r7   r`   ra   r0   s       r*   init_embeddingz$JinaEmbeddingV3Worker.init_embedding\   s)      
!
 	
 	
r)   itemsc              #      K   |  |D ]<  \  }}| j                   j                  || j                   j                        }||f > y w)Nr-   )r   
onnx_embedr6   )r7   re   idxbatchonnx_outputs        r*   processzJinaEmbeddingV3Worker.processi   sE     JC**//tzz?Y?Y/ZK{""  s   AAN)r    r!   r"   r]   r   r,   rd   r   tuplerY   r   rk   r(   r)   r*   r;   r;   [   s]    

 
 	

 

#XeCHo6 #8E#O`J`Da;b #r)   r;   )enumr   typingr   r   r   numpyrF   fastembed.common.onnx_modelr   fastembed.common.typesr   *fastembed.text.pooled_normalized_embeddingr	   fastembed.text.onnx_embeddingr
   "fastembed.common.model_descriptionr   r   r   r[   __annotations__rY   r   r,   r;   r(   r)   r*   <module>rv      s     & &  9 - P A Q ) !"
z :;$01%; D!67 03 ,M/ ,M^#3 #r)   