
    Ji.                         d dl mZmZmZ d dlZd dlmZmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZ d dlmZ d dlmZmZ d dlmZmZmZ d	d
lmZ d	dlmZmZmZ  G d de      Z y)    )AnyListOptionalN)CompositeRetrievalMode#CompositeRetrievedTextNodeWithScoreRetrieverCreate	RetrieverRetrieverPipelinePresetRetrievalParamsReRankConfig)OMIT)BaseRetriever)DEFAULT_PROJECT_NAME)get_aclient
get_client)NodeWithScoreQueryBundleTextNode   )LlamaCloudIndex)resolve_projectresolve_retriever(page_screenshot_nodes_to_node_with_scorec            %       b    e Zd Zddedddddddddddddfdee   dee   dee   dee   d	ee   d
edee   dee   dee   dedeej                     deej                     dee   dee   dee   dee   deddf$ fdZedee   fd       Zdee   defdZ	 	 	 d(dedee   dee   dee   def
dZdedefdZdee   defd Z	 	 	 d(dedee   dee   dee   def
d!Zdedefd"Zd#edefd$Z	 	 	 d(d%edee   dee   dee   dee   f
d&Z 	 	 	 d(d%edee   dee   dee   dee   f
d'Z! xZ"S ))LlamaCloudCompositeRetrieverNF<   Tnameretriever_idproject_name
project_idorganization_idcreate_if_not_existsapi_keybase_urlapp_urltimeouthttpx_clientasync_httpx_clientmodererank_top_nrerank_config	persistedkwargsreturnc                    t        |||	|
|      | _        t        |||	|
|      | _        t	        | j                  |||      | _        || _        | j
                  j                  | _        || _        t        | j                  | j
                  |||      | _
        | j                  s|rq|rV| j                  j                  j                  | j
                  j                  t        | j                  g             | _
        nt        d| j                   d      ||nt         | _        ||nt         | _        ||nt         | _        t(        | U  |j-                  d      |j-                  dd      	       y)
z#Initialize the Composite Retriever.N)r   	pipelines)r    requestzRetriever with name 'z' does not exist in project.callback_managerverboseF)r2   r3   )r   _clientr   _aclientr   projectr   r   
_persistedr   	retriever
retrieversupsert_retrieveridr   
ValueErrorr   _mode_rerank_top_n_rerank_configsuper__init__get)selfr   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   	__class__s                     /var/www/html/BankruptcyAI-uat/bankruptcy-ai/venv/lib/python3.12/site-packages/llama_cloud_services/index/composite_retriever.pyrA   z%LlamaCloudCompositeRetriever.__init__   sT   6 "'8Wg|T#Xw1C
 'LL,
O
 	 LL--#*LL$,,lI
 >>!i#!%!8!8!I!I#||+bI "J "
 !+DII;6RS 
 "-T4
-9-E\4/</Hmd#ZZ(:;JJy%0 	 	
    c                 6    | j                   j                  xs g S N)r8   r0   )rC   s    rE   retriever_pipelinesz0LlamaCloudCompositeRetriever.retriever_pipelines]   s    ~~''-2-rF   r0   c                    | j                   rL| j                  j                  j                  | j                  j
                  |      | _        | j                  S | j                  j                  d|i      | _        | j                  S N)r0   r0   update)r7   r4   r9   update_retrieverr8   r;   copyrC   r0   s     rE   update_retriever_pipelinesz7LlamaCloudCompositeRetriever.update_retriever_pipelinesa   sr     ??!\\44EE!!Y F DN ~~ "^^00i8P0QDN~~rF   indexdescriptionpreset_retrieval_parametersc                 P   |xs |j                   }|xs |j                  j                  }t        |j                  |||      }| j
                  xs g D ci c]  }|j                   | }}|||j                   <   | j                  t        |j                                     S c c}w N)pipeline_idr   rS   rT   )	r   pipelinerT   r
   r;   rI   rQ   listvaluesrC   rR   r   rS   rT   retriever_pipelinerX   #current_retriever_pipelines_by_names           rE   	add_indexz&LlamaCloudCompositeRetriever.add_indexm   s     !uzz'U5>>+U+U 	$ /#(C	
 6:5M5M5SQS/
(0HMM8#/
+ /

  	,##	
 ..4;;=>
 	
/
s   B#c                     | j                   j                  xs g }|D cg c]  }|j                  |k7  r| }}t        |      t        |      k(  ry| j	                  |       yc c}w NFT)r8   r0   r   lenrQ   rC   r    current_retriever_pipeline_namesrX   new_retriever_pipeliness        rE   remove_indexz)LlamaCloudCompositeRetriever.remove_index   ss    +/>>+C+C+Ir( =#
}}$ #
 #

 &'3/O+PP''(?@#
s   A#c                 ,  K   | j                   rT| j                  j                  j                  | j                  j
                  |       d {   | _        | j                  S | j                  j                  d|i      | _        | j                  S 7 DwrK   )r7   r5   r9   rN   r8   r;   rO   rP   s     rE   aupdate_retriever_pipelinesz8LlamaCloudCompositeRetriever.aupdate_retriever_pipelines   s      ??#'==#;#;#L#L!!Y $M $ DN ~~ "^^00i8P0QDN~~s   ABBABc                 l  K   |xs |j                   }|xs |j                  j                  }t        |j                  |||      }| j
                  xs g D ci c]  }|j                   | }}|||j                   <   | j                  t        |j                                      d {   S c c}w 7 	wrV   )	r   rX   rT   r
   r;   rI   rg   rY   rZ   r[   s           rE   async_add_indexz,LlamaCloudCompositeRetriever.async_add_index   s      !uzz'U5>>+U+U 	$ /#(C	
 6:5M5M5SQS/
(0HMM8#/
+ /

  	,##	
 554;;=>
 
 	
/

s   AB4B-,<B4(B2)
B4c                    K   | j                   j                  xs g }|D cg c]  }|j                  |k7  r| }}t        |      t        |      k(  ry| j	                  |       d {    yc c}w 7 
wr`   )r8   r0   r   ra   rg   rb   s        rE   aremove_indexz*LlamaCloudCompositeRetriever.aremove_index   s     +/>>+C+C+Ir( =#
}}$ #
 #

 &'3/O+PP../FGGG#
 	Hs   A4A-.A4'A2(A4composite_retrieval_nodec                     t        t        |j                  j                  |j                  j                  |j                  j
                        |j                        S )N)r;   textmetadata)nodescore)r   r   rp   r;   rn   ro   rq   )rC   rl   s     rE    _result_nodes_to_node_with_scorez=LlamaCloudCompositeRetriever._result_nodes_to_node_with_score   sQ     +0033-2277166??
 +00
 	
rF   query_bundlec                    ||n| j                   }||n| j                  }||n| j                  }|5|t        k7  r,|	|t        k(  rt	        |      }n|j                  d|i      }| j                  rH| j                  j                  j                  | j                  j                  |||j                        }n\| j                  j                  j                  | j                  j                  |||j                  | j                  j                        }|j                   D cg c]  }| j#                  |       }}t%        | j                  |j&                  | j                  j(                        }t+        ||z   d d      S c c}w )	Ntop_nrv   rL   r)   r+   queryr    r)   r+   rx   r0   c                     | j                   S rH   rq   xs    rE   <lambda>z8LlamaCloudCompositeRetriever._retrieve.<locals>.<lambda>   
     rF   Tkeyreverse)r=   r>   r?   r   r   rO   r7   r4   r9   retriever8   r;   	query_strdirect_retriever6   r0   nodesrr   r   image_nodesr    sorted	rC   rs   r)   r*   r+   resultrp   node_w_scoresimage_nodes_w_scoress	            rE   	_retrievez&LlamaCloudCompositeRetriever._retrieve   s~    'tTZZ'3'?|TEWEW*6MD<O<O 	
 #(<$(= ,< @ !. 2 27L:Q 2 R??\\,,55!!+",,	 6 F \\,,<<<<??+",,..22 = F EKLL
<@D11$7
 
  HLL&,,dnn.G.G 
 006GQU
 	

s   &Fc                 H  K   ||n| j                   }||n| j                  }||n| j                  }|5|t        k7  r,|	|t        k(  rt	        |      }n|j                  d|i      }| j                  rP| j                  j                  j                  | j                  j                  |||j                         d {   }nd| j                  j                  j                  | j                  j                  |||j                  | j                  j                         d {   }|j                   D cg c]  }| j#                  |       }}t%        | j                  |j&                  | j                  j(                        }t+        ||z   d d      S 7 7 uc c}w w)	Nru   rv   rL   rw   ry   c                     | j                   S rH   r{   r|   s    rE   r~   z9LlamaCloudCompositeRetriever._aretrieve.<locals>.<lambda>.  r   rF   Tr   )r=   r>   r?   r   r   rO   r7   r5   r9   r   r8   r;   r   r   r6   r0   r   rr   r   r   r    r   r   s	            rE   
_aretrievez'LlamaCloudCompositeRetriever._aretrieve  s     'tTZZ'3'?|TEWEW*6MD<O<O 	
 #(<$(= ,< @ !. 2 27L:Q 2 R??==33<<!!+",,	 =  F  ==33CC<<??+",,..22 D  F EKLL
<@D11$7
 
  HMM6--t~~/H/H 
 006GQU
 	
)
s8   B>F" FA$F"%F&F"8FA
F"F"F")NNN)#__name__
__module____qualname__r   r   strboolinthttpxClientAsyncClientr   r   r   rA   propertyr   r
   rI   r	   rQ   r   r   r^   re   rg   ri   rk   r   r   rr   r   r   r   __classcell__)rD   s   @rE   r   r      s    #&*&:$()-%*!%"&!%/3:>15&*04$(-?
 sm?
 sm	?
 sm?
 SM?
 "#?
 #?
 #?
 3-?
 #?
 ?
  u||,!?
" %U%6%67#?
& -.'?
( sm)?
*  -+?
, D>-?
. /?
0 
1?
B .T*;%< . .
/0
	
 #%)GK

 sm
 c]	

 &..C%D
 

6
 
 

/0
	
 #%)GK

 sm
 c]	

 &..C%D
 

6
 
 


(K

	

 26&*04-
!-
 -.-
 sm	-

  --
 
m	-
d 26&*04-
!-
 -.-
 sm	-

  --
 
m	-
rF   r   )!typingr   r   r   r   llama_cloudr   r   r   r	   r
   r   r   &llama_cloud.resources.pipelines.clientr   $llama_index.core.base.base_retrieverr   llama_index.core.constantsr   $llama_index.core.ingestion.api_utilsr   r   llama_index.core.schemar   r   r   baser   	api_utilsr   r   r   r    rF   rE   <module>r      sL    & &    8 > ; H H H ! T
= T
rF   