
    +#hl                     H   d dl 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
  G d d      Zej                  deded	efd
       Ze j                  ej                  d               ZeZej                  deded	efd       Ze j                  ej                  d               ZeZy)    N)AnyOptionalUnion)CacheMemoryNotebookCacheMemory)dotdictc                   n    e Zd ZdZ	 	 	 ddedeeeef      defdZ		 ddeded	ed
ee
e   e
e   f   fdZy)	ColBERTv2z$Wrapper for the ColBERTv2 Retrieval.Nurlportpost_requestsc                 >    || _         |r| d| | _        y || _        y )N:)r   r   )selfr   r   r   s       R/var/www/html/sandstorm/venv/lib/python3.12/site-packages/dsp/modules/colbertv2.py__init__zColBERTv2.__init__   s%     +&*cU!D6?    queryksimplifyreturnc                     | j                   rt        | j                  ||      }nt        | j                  ||      }|r|D cg c]  }|d   	 c}S |D cg c]  }t	        |       c}S c c}w c c}w )N	long_text)r   colbertv2_post_requestr   colbertv2_get_requestr   )r   r   r   r   topkpsgs         r   __call__zColBERTv2.__call__   si     )?%QR)SD)>txxPQ)RD045C$55(,--- 6-s   A*A/)zhttp://0.0.0.0NF)
   F)__name__
__module____qualname____doc__strr   r   intboolr   listr   r    r   r   r
   r
      sz    . $*.#	44 uS#X'4 	4 9>.. .15.	tCy$w-'	(.r   r
   r   r   r   c                     |dk  sJ d       ||d}t        j                  | |d      }|j                         d   d | }|D cg c]  }i |d|d   i }}|d | S c c}w )	Nd   zIOnly k <= 100 is supported for the hosted ColBERTv2 server at the moment.r   r   r   )paramstimeoutr   r   text)requestsgetjson)r   r   r   payloadresr   ds          r   colbertv2_get_request_v2r5   &   s     	
SSRS A&G
,,s7B
7C88:fbq!D378a)q)+qy)8D88O 9s   Ac                      t        | i |S N)r5   argskwargss     r    colbertv2_get_request_v2_wrappedr;   4   s     $T4V44r   c                 r    ddi}||d}t        j                  | ||d      }|j                         d   d | S )NzContent-Typezapplication/json; charset=utf-8r+   r   )r1   headersr-   r   )r/   postr1   )r   r   r   r=   r2   r3   s         r   colbertv2_post_request_v2r?   =   sC    @AGA&G
--'7B
GC88:fbq!!r   c                      t        | i |S r7   )r?   r8   s     r   !colbertv2_post_request_v2_wrappedrA   F   s     %d5f55r   )	functoolstypingr   r   r   r/   dsp.modules.cache_utilsr   r   	dsp.utilsr   r
   cacher$   r%   r5   r;   r   r?   rA   r   r(   r   r   <module>rG      s     ' '  D 
. .4 
# 
c 
c 
 
 5  5 9  "3 "s "s " " 6  6 ; r   