
    >'hȔ                    `   d dl Z d dlZd dlZd dlmZmZ d dlmZmZm	Z	m
Z
mZmZ d dlmZ d dlZd dlZd dlmZ d dlmZ d dlmZm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$ d dl%m&Z&m'Z'm(Z(m)Z) d dl*m+Z+m,Z, d dl-m.Z.m/Z/ d dl0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z< d dl=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZG d dlHmIZImJZJ d dlKmLZL d dlMmNZN d dlOmPZPmQZQ d dlRmSZS d dlTmUZU d dlVmWZWmXZXmYZY d dlZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZf dZgdZhdedefdZ G d d       Zid!e	ej                     d"ekej                     dej                  fd#Zmd!e	ej                     d$ekej                     dej                  fd%Znd&ej                  dejH                  fd'Zpd(ej                  d)erdej                  fd*Zsy)+    N)OrderedDictdefaultdict)AnyCallableOptionalSequenceUnionget_args)deepcopy)grpc)show_warning_once)	constructto_jsonable_python)common_types)get_args_subscribed)
GrpcToRest)models)ScoredPoint)DistanceExtendedPointIdSparseVector
OrderValue)evaluate_expressionraise_non_finite_error)reciprocal_rank_fusiondistribution_based_score_fusion)ContextPairContextQueryDenseQueryVectorDiscoveryQueryDistanceOrder	RecoQuerycalculate_context_scorescalculate_discovery_scorescalculate_distancecalculate_recommend_best_scoresdistance_to_ordercalculate_recommend_sum_scores)
MultiQueryVectorMultiRecoQueryMultiDiscoveryQueryMultiContextQueryMultiContextPaircalculate_multi_distance%calculate_multi_recommend_best_scores calculate_multi_discovery_scorescalculate_multi_context_scores$calculate_multi_recommend_sum_scores)JsonPathItemparse_json_path)to_order_value)calculate_payload_mask)value_by_key
parse_uuid)set_value_by_key)CollectionPersistence)empty_sparse_vectorsort_sparse_vectorvalidate_sparse_vector)SparseContextPairSparseContextQuerySparseDiscoveryQuerySparseQueryVectorSparseRecoQuerycalculate_distance_sparsecalculate_sparse_context_scores!calculate_sparse_discovery_scores&calculate_sparse_recommend_best_scoresmerge_positive_and_negative_avg
sparse_avg%calculate_sparse_recommend_sum_scores g  >xreturnc                     	 t        j                  t        j                  | d            S # t        $ r2 t        j                  t        j                  | dt                    cY S w xY w)NT)	allow_nan)rN   default)jsonloadsdumps	Exception_to_jsonable_pythonrK   s    k/home/kushmeetdev/Regenta/Chatbot/venv/lib/python3.12/site-packages/qdrant_client/local/local_collection.pyr   r   V   sP    Vzz$**Q$788 Vzz$**Q$@STUUVs   ), 8A'&A'c            !       F    e Zd ZdZdZ	 	 ddej                  dee   de	ddfdZ
ed	eeej                  f   deeeej                  f   eeej                  f   f   fd
       ZddZdededdfdZdededdfdZedededefd       ZdededefdZddZedeee   eeee   f   eee      eeeee      f   ej:                  ej<                  eeeef   eee f   e!eee!f   ejD                  f   deeeee e!ejD                  f   f   fd       Z#dedej                  fdZ$ededede	fd       Z%ededede	fd       Z&e	 dde'de(ege	f   dede'fd        Z)e	 dded!ee	e*e   ejV                  f   dee   fd"       Z,	 	 dd#ed!ee	e*e   ejV                  f   d$e	deejZ                     fd%Z.	 dd#ed&ee	e*e   df   deej^                     fd'Z0	 dd(eejb                     dee   de2jf                  fd)Z4d*edeee	f   fd+Z5	 	 	 	 	 	 ddeee   eeee   f   eee      eeeee      f   ej:                  ej<                  eeeef   e eee f   e!eee!f   ejD                  f   d,eejb                     d-ed.ee   d!ee	e*e   ejV                  f   d&ee	e*e   f   d/ee   deejl                     fd0Z7	 	 	 	 	 	 	 	 	 dd1eejp                     d2eeejr                        d,eejb                     d-ed.ed!ee	e*e   ejV                  f   d&ee	e*e   f   d/ee   d3ee   d4e'dejt                  fd5Z;d2ejr                  deejl                     fd6Z<	 	 	 	 	 dd7eeejl                        d1ejp                  d-ed.ed3ee   d,eejb                     d/ee   d!ee	e*e   ejV                  f   d&ee	e*e   f   deejl                     fd8Z=	 	 	 	 	 	 	 	 dd1eejp                     d3ee   d,eejb                     d-ee   d.ee   d!ee	e*e   ejV                  f   d&ee	e*e   f   d/ee   deejl                     fd9Z>	 	 	 	 	 	 	 	 	 	 	 dd:ed1eej~                  ee   eee      ej"                  ejp                  ejD                  ej                  ej                  ej                  df
   d3ee   d2eejr                  eejr                     df   d,eejb                     d-ed;ed!ee	e*e   ejV                  f   d&ee	e*e   f   d/ee   d<eej                     d=ed    dej                  fd>ZE	 	 	 	 	 	 	 	 ddee*e   eee      eeeej                  eGeHeIejD                  f   f   ej:                  ej<                  eGeHeIejD                  f	   d:ed,eejb                     d-ed;ed!ee	e*e   ejV                  f   d&ee	e*e   f   d/ee   d<eej                     d=ed    dej                  fd?ZJ	 	 dded@eejb                     d-edej                  fdAZL	 	 ddBe*ej~                     d!ee	e*e   ejV                  f   d&ee	e*e   f   deej                     fdCZN	 	 	 	 	 	 	 ddDee*ej                        dEee*ej                        dFeej                     d,eejb                     d3ee   dGed    dHee   deeee      eee      eej"                     eej"                     eeee         eeee         ejb                  f   fdIZQedJeee      dKeee      dejD                  fdL       ZRedJeej"                     dKeej"                     dej"                  fdM       ZSedJeeee         dKeeee         deee      fdN       ZT	 	 	 	 	 	 	 ddDee*ej                        dEee*ej                        d,eejb                     d3ee   dGed    dHee   dFeej                     deeeGeHeIej"                  ejD                  f   ejb                  f   fdOZU	 	 	 	 	 	 	 	 	 	 	 	 ddDee*ej                        dEee*ej                        d,eejb                     d-ed.ed!ee	e*e   ejV                  f   d&ee	e*e   f   d/ee   d3ee   dGed    dHee   dFeej                     deejl                     fdPZV	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd:edDee*ej                        dEee*ej                        d,eejb                     d-ed;ed/ee   d!ee	e*e   ejV                  f   d&ee	e*e   f   d3ee   dGed    dHee   d<eej                     d=ed    dFeej                     dej                  f dQZW	 	 	 	 dd,eejb                     d-edRed3ee   dej                  f
dSZY	 	 	 	 dd,eejb                     d-edRed3ee   dej                  f
dTZ[	 	 	 	 dd,eejb                     d-edRed3ee   deee\   eee6      f   f
dUZ]edVeej                     dWd dedeej                  eej~                     f   fdX       Z^dYeej                     dWd dedeee_   ee`   eea   eej~                     f   fdZZb	 	 	 	 	 	 ddVeej                     dYee*ej                        d,eejb                     d3ee   dGed    dHee   deeej                     ee_   ee`   eea   ejb                  f   fd[Zc	 	 	 	 	 	 	 	 	 	 	 ddVeej                     dYee*ej                        d,eejb                     d-ed.ed!ee	e*e   ejV                  f   d&ee	e*e   f   d3ee   dGed    dHee   d/ee   deejl                     fd\Zded]ej                  deeef   fd^       Ze	 	 	 	 	 	 dd_eejb                     d-ed`eej                     d.eej~                     d!ee	e*e   ejV                  f   d&ee	e*e   f   deeej                     eej~                     f   fdaZgddbeejb                     dej                  fdcZi	 	 	 	 	 dd_eejb                     d-ed.eej~                     d!ee	e*e   ejV                  f   d&ee	e*e   f   deeej                     eej~                     f   fddZj	 	 	 	 dd`ej                  d_eejb                     d-ed!ee	e*e   ejV                  f   d&ee	e*e   f   deeej                     eej~                     f   fdeZk	 	 dd-ed,eejb                     d!ee	e*e   ejV                  f   d&ee	e*e   f   deejl                     f
dfZld1ej                  dgeeejl                        d-ed!ee	e*e   ejV                  f   d&ee	e*e   f   deejl                     fdhZndiej                  ddfdjZpdiej                  ddfdkZqdiej                  ddfdlZrdmee*ej                     ej                  f   ddfdnZtd#ed	eeeee   ef   f   ddfdoZudme*ej                     ddfdpZwd	e*e   dqeejb                  eej                     ej                  ej                  f   ddfdrZzdBeej~                     ddfdsZ{dtejb                  deej                     fduZ|dqeejb                  eej                     ej                  ej                  f   deej                     fdvZ}dqeejb                  eej                     ej                  ej                  f   ddfdwZ~d]ej                  ddfdxZ	 ddejZ                  dqeejb                  eej                     ej                  ej                  f   dee   ddfdyZdejZ                  dqeejb                  eej                     ej                  ej                  f   ddfdzZd{e*e   dqeejb                  eej                     ej                  ej                  f   ddfd|Zdqeejb                  eej                     ej                  ej                  f   ddfd}Zd~e*ej                     ddfdZdedej                  ddfdZdej                  fdZy)LocalCollectionzb
    LocalCollection is a class that represents a collection of vectors in the local storage.
     N  Nconfiglocationforce_disable_check_same_threadrL   c           	      4   | j                  |j                        \  | _        | _        |j                  }| j                  j                         D ci c]7  \  }}|t        j                  d|j                  ft        j                        9 c}}| _        |$|j                         D ci c]  \  }}|g 
 c}}ni | _        i | _
        | j                  D ci c]  }|g  c}| _        g | _        t        j                  dt              | _        t        | j                  j!                               t        | j                  j!                               z   t        | j                  j!                               z   | _        | j"                  D ci c]  }|t        j                  dt                c}| _        i | _        g | _        |du| _        d| _        || _        |t1        ||      | _        | j3                          yc c}}w c c}}w c c}w c c}w )a2  
        Create or load a collection from the local storage.
        Args:
            location: path to the collection directory. If None, the collection will be created in memory.
            force_disable_check_same_thread: force disable check_same_thread for sqlite3 connection. default: False
        r   dtypeN)_resolve_vectors_configvectorsvectors_configmultivectors_configsparse_vectorsitemsnpzerossizefloat32sparse_vectors_idfmultivectorspayloadbooldeletedlistkeys_all_vectors_keysdeleted_per_vectoridsids_inv
persistentstoragerZ   r:   load_vectors)selfrZ   r[   r\   sparse_vectors_confignameparamss          rV   __init__zLocalCollection.__init__d   s    9=8T8TNN9
5T5 !' 5 5 !% 3 3 9 9 ;5
f "((Av{{+2::>>5
 %0 +@*E*E*GH,$T2XH 	  	 "&!9!9@
D"H@
 .0)+!4)@""$%4&&++-./4$$))+,- 	 7;6L6L@
.2D"((1D))@
 7957"$.0;Z[DLA5

 I@
@
s   <H,H

H#Hra   c                     i }i }t        | t        j                        r$| j                  t        | i}||fS t        | i}||fS | j                         D ]  \  }}|j                  |||<   |||<    ||fS N)
isinstancer   VectorParamsmultivector_configDEFAULT_VECTOR_NAMEre   )ra   rb   rc   rz   r{   s        rV   r`   z'LocalCollection._resolve_vectors_config   s      gv223))5':G&D# "#666 #6w!?!#666#MMO 	.LD&((4,2#D)'-t$		. 222    c                 R    | j                   | j                   j                          y y r~   )rv   closerx   s    rV   r   zLocalCollection.close   s!    <<#LL  $r   vectorvector_namec                     || j                   vrt        t              | j                   |<   |j                  D ]  }| j                   |   |xx   dz  cc<    y N   )rj   r   intindicesrx   r   r   idxs       rV   _update_idf_appendz"LocalCollection._update_idf_append   sS    d5553>s3CD##K0>> 	;C##K05:5	;r   c                 Z    |j                   D ]  }| j                  |   |xx   dz  cc<    y r   )r   rj   r   s       rV   _update_idf_removez"LocalCollection._update_idf_remove   s0    >> 	;C##K05:5	;r   dfnc                 J    t        j                  ||z
  dz   |dz   z  dz         S )Ng      ?r   )mathlog)clsr   r   s      rV   _compute_idfzLocalCollection._compute_idf   s)     xxR#"s(3a788r   c                 j   | j                  d       j                   }g }| j                  j                  |      }||S t        |j                  |j
                        D ]=  \  }}|j                  |d      }| j                  ||      }	|j                  ||	z         ? t        |j                  |      S )N)count_filterr   )r   values)	countrj   getzipr   r   r   appendr   )
rx   r   r   num_docs
new_values	idf_storer   valuedocument_frequencyidfs
             rV   _rescore_idfzLocalCollection._rescore_idf   s    ::4:066
++//<	Mfnnfmm< 	+JC!*sA!6##$6ACeck*	+
 FNN:FFr   c                 6	   | j                   t        t              }t        t              }t        t              }g }t        | j                   j	                               D ]n  \  }}|| j
                  |j                  <   | j                  j                  |j                         | j                  j                  t        |j                        xs i        |j                  }t        |j                  t              rt        |j                  i}t        | j                  j                               }|D ]  }	|j!                  |	      }
|
||	   j                  |
       +||	   j                  t#        j$                  | j&                  |	   j(                  t"        j*                               |j                  ||	f        t        | j,                  j                               }|D ]Y  }	|j!                  |	      }
|
||	   j                  |
       +||	   j                  t/                      |j                  ||	f       [ t        | j0                  j                               }|D ]d  }	|j!                  |	      }
|
||	   j                  |
       +||	   j                  t#        j2                  g              |j                  ||	f       f q |j5                         D ]b  \  }	}t#        j2                  |      | j                  |	<   t#        j6                  t9        | j                        t:              | j<                  |	<   d |j5                         D ]h  \  }	}|| j,                  |	<   t#        j6                  t9        | j                        t:              | j<                  |	<   |D ]  }| j?                  ||	        j |j5                         D ]p  \  }	}|D cg c]  }t#        j2                  |       c}| j0                  |	<   t#        j6                  t9        | j                        t:              | j<                  |	<   r |D ]  \  }}	d| j<                  |	   |<    t#        j6                  t9        | j                        t:              | _         y y c c}w )Nr^   r   )!rv   r   ro   	enumerateloadrs   idrt   r   rl   r   r   r   r   ra   rp   r   rf   onesrb   rh   ri   rd   r;   rk   arrayre   rg   lenrm   rr   r   rn   )rx   ra   rd   rk   deleted_idsr   pointloaded_vectorall_dense_vector_namesrz   vall_sparse_vector_namesall_multivector_namesnamed_vectorsr   s                  rV   rw   zLocalCollection.load_vectors   s   <<#!$'G(.N&t,LK'(9(9(;< .8
U%("##EHH- ##$6u}}$E$KL !& ellD1%8%,,$GM *.dll.?.?.A)B&2 8D%))$/A},,Q/,,GGD$7$7$=$B$B"**U $**C;78 +/t/B/B/G/G/I*J'3 8D%))$/A}&t,33A6&t,334G4IJ#**C;78 )-T->->-C-C-E(F%1 8D%))$/A}$T*11!4$T*11"((2,?#**C;78Q.8b (/}} X#m%'XXm%<T"02T\\9JRV0W''-X
 (6';';'= :#m,9##D)02T\\9JRV0W''-+ :F++FD9:: (4'9'9'; X#mJW*X288F+;*X!!$'02T\\9JRV0W''-X
 ) 7	T56''-c27 88C$5TBDLW $H +Ys   Rquery_vectorc                    t        |t              r4|\  }}t        |t              rt        j                  |      }||fS |}||fS t        |t        j
                        rt        }|}||fS t        |t        j                        r/|j                  }t        j                  |j                        }||fS t        |t        j                        r|j                  }|j                  }||fS t        |t              rt        }t        j                  |      }||fS t        |t        t                    rt        }|}||fS t        |t        t                    rt        }|}||fS t        dt!        |             )NzUnsupported vector type )r   tuplero   rf   r   ndarrayr   typesNamedVectorrz   r   NamedSparseVectorr
   r   r)   
ValueErrortype)r   r   rz   queryr   s        rV   _resolve_query_vector_namez*LocalCollection._resolve_query_vector_name  sz   . lE*&KD%%&%0 V|- , V|+ bjj1&D!F& V|% e&7&78$$DXXl112F  V| e&=&=>$$D!((F V| d+&DXXl+F V| h/?&@A&D!F V| h/?&@A&D!F V| 7\8J7KLMMr   rz   c                    t        | j                  j                  t              r@|| j                  j                  v r| j                  j                  |   S t	        d| d      t        | j                  j                  t
        j                        r.|t        k7  rt	        d| d      | j                  j                  S t	        d| j                  j                         )NVector  is not found in the collectionzMalformed config.vectors: )r   rZ   ra   dictr   r   r   r   )rx   rz   s     rV   get_vector_paramsz!LocalCollection.get_vector_paramsN  s    dkk))40t{{***{{**400 74&0O!PQQdkk))6+>+>?** 74&0O!PQQ;;&&&5dkk6I6I5JKLLr   patternkeyc                     |j                  dd      j                  d      }|j                  dd      j                  d      }t        d t        ||      D              S )a  
        >>> LocalCollection._check_include_pattern('a', 'a')
        True
        >>> LocalCollection._check_include_pattern('a.b', 'b')
        False
        >>> LocalCollection._check_include_pattern('a.b', 'a.b')
        True
        >>> LocalCollection._check_include_pattern('a.b', 'a.b.c')
        True
        >>> LocalCollection._check_include_pattern('a.b[]', 'a.b[].c')
        True
        >>> LocalCollection._check_include_pattern('a.b[]', 'a.b.c')
        False
        >>> LocalCollection._check_include_pattern('a', 'a.b')
        True
        >>> LocalCollection._check_include_pattern('a.b', 'a')
        True
        >>> LocalCollection._check_include_pattern('a', 'aa.b.c')
        False
        >>> LocalCollection._check_include_pattern('a_b', 'a')
        False
        .[.[c              3   ,   K   | ]  \  }}||k(    y wr~    .0pr   s      rV   	<genexpr>z9LocalCollection._check_include_pattern.<locals>.<genexpr>w       Dda16D   )replacesplitallr   r   r   r   pattern_parts	key_partss        rV   _check_include_patternz&LocalCollection._check_include_pattern]  sR    0  T288=KKT*005	Dc-&CDDDr   c                     t        |      t        |      kD  ry|j                  dd      j                  d      }|j                  dd      j                  d      }t        d t	        ||      D              S )NFr   r   r   c              3   ,   K   | ]  \  }}||k(    y wr~   r   r   s      rV   r   z9LocalCollection._check_exclude_pattern.<locals>.<genexpr>  r   r   )r   r   r   r   r   r   s        rV   _check_exclude_patternz&LocalCollection._check_exclude_patterny  sc    w<#c("T288=KKT*005	Dc-&CDDDr   rl   	predicatepathc                 p   t        |t              rNi }|dk7  r|dz   }n|}|j                         D ]*  \  }} |||z         s| j                  ||||z         ||<   , |S t        |t              rGg }|dz   }t        |      D ]0  \  }	} ||      s|j                  | j                  |||             2 |S |S )NrJ   r   z[])r   r   re   _filter_payloadro   r   r   )
r   rl   r   r   resnew_pathr   r   	res_arrayr   s
             rV   r   zLocalCollection._filter_payload  s     gt$Crz#:%mmo U
UX^,"225)XPS^TCHU J&I$;D'0 R
UT?$$S%8%8	4%PQR Nr   with_payloadc                 @    sy t        t              r|S t        t              r j                  | fd      S t        t        j
                        r j                  | fd      S t        t        j                        r j                  | fd      S |S )Nc                 8     t        t         fd            S )Nc                 (    j                  |       S r~   r   r   r   r   s    rV   <lambda>zDLocalCollection._process_payload.<locals>.<lambda>.<locals>.<lambda>      (B(B7C(P r   )anymapr   r   r   s   `rV   r   z2LocalCollection._process_payload.<locals>.<lambda>  s    CPR^_ r   c                 L     t        t         fdj                              S )Nc                 (    j                  |       S r~   r   r   s    rV   r   zDLocalCollection._process_payload.<locals>.<lambda>.<locals>.<lambda>  r   r   )r   r   includer   s   `rV   r   z2LocalCollection._process_payload.<locals>.<lambda>  s     CP$,, r   c                 L     t        t         fdj                              S )Nc                 *    j                  |        S r~   )r   r   s    rV   r   zDLocalCollection._process_payload.<locals>.<lambda>.<locals>.<lambda>  s    C,F,FwPS,T(T r   )r   r   excluder   s   `rV   r   z2LocalCollection._process_payload.<locals>.<lambda>  s     CT$,, r   )r   rm   ro   r   r   PayloadSelectorIncludePayloadSelectorExclude)r   rl   r   s   ` `rV   _process_payloadz LocalCollection._process_payload  s     lD)NlD)&&  lF$A$AB&&  lF$A$AB&&  r   r   return_copyc                 b    | j                   |   }| j                  ||      }|rt        |      S |S r~   )rl   r   r   )rx   r   r   r   rl   processed_payloads         rV   _get_payloadzLocalCollection._get_payload  s9     ,,s# 11'<H.9x)*P?PPr   with_vectorsc                 z   |du s|y | j                   D ci c]5  }| j                  |   |   s!|| j                   |   |   j                         7 }}| j                  D ci c]'  }| j                  |   |   s|| j                  |   |   ) }}| j                  D ci c]5  }| j                  |   |   s!|| j                  |   |   j                         7 }}i |||}t        |t              r|D ci c]  }||v s|||    }}t        |      dk(  rt        |v r	|t           S |S c c}w c c}w c c}w c c}w )NFr   )	ra   rr   tolistrd   rk   r   ro   r   r   )rx   r   r   rz   dense_vectorsrd   rk   all_vectorss           rV   _get_vectorszLocalCollection._get_vectors  s    5 L$8 
**405 $,,t$S)0022
 
 ++
**405 $%%d+C00
 
 ))
**405 $##D)#.5577
 
 JI.ILIlD)?KcttWbOb4T!22cKc{q %8K%G2337


 ds   :D) ,D.:D34	D8>D8payload_filterc                     t        | j                  || j                  | j                        }|| j                   z  }||| j                  |    z  }|S )zo
        Calculate mask for filtered payload and non-deleted points. True - accepted, False - rejected
        )payloadsr  rt   rr   )r6   rl   rt   rr   rn   )rx   r  r   payload_maskmasks        rV   _payload_and_non_deleted_maskz-LocalCollection._payload_and_non_deleted_mask  s]     .\\)LL#66	
 t||m+"422;???Dr   internal_idc                 d    i }| j                   j                         D ]  \  }}||   rd||<    |S )NT)rr   re   )rx   r
  
has_vectorr   rn   s        rV   _calculate_has_vectorz%LocalCollection._calculate_has_vector  sD    &(
$($;$;$A$A$C 	/ K;'*.
;'	/ r   query_filterlimitoffsetscore_thresholdc                      j                  |      \  }g }d}	d}
t        |t        t                    r j                  vrt        d d       j                     } j                  j                     j                  t        j                  j                  k(  rd}
t        j                  }d}	nt        |t        t                    s2t        |t        j                        r`t!        |j"                        dk(  rH j$                  vrt        d d       j$                     } j'                        j(                  }nG j*                  vrt        d d       j*                     } j'                        j(                  }|d t!         j,                         }t        |t        j                        r6t!        |j"                        dk(  rt/        |||      }nt1        |||      }nt        |t2              r|j4                  t        j6                  j8                  k(  rt;        |||      }n|j4                  t        j6                  j<                  k(  rt?        |||      }ntA        d	|j4                         t        |tB              r|
r|jE                   fd
      }|j4                  t        j6                  j8                  k(  rtG        ||      }n |j4                  t        j6                  j<                  k(  rtI        ||      }ntA        d	|j4                         t        |tJ              r|j4                  t        j6                  j8                  k(  rtM        |||      }n|j4                  t        j6                  j<                  k(  rtO        |||      }nWtA        d	|j4                         t        |tP              rtS        |||      }n t        |tT              r$|
r|jE                   fd      }tW        ||      }nt        |tX              rt[        |||      }nt        |t\              rt_        |||      }nt        |t`              r$|
r|jE                   fd      }tc        ||      }n|t        |td              rtg        |||      }n^t        |th              r7tk        |       |
r jm                  |      }to        |      }tq        ||      }nt        dts        |              ju                  |      }tw        |      }|tx        jz                  k(  s*t        |tP        t\        t2        tX        td        tJ        f      rt        j|                  |      d d d   }nt        j|                  |      }||nd}|D ]  }t!        |      ||z   k\  r n||   s||   }|	r|t        j~                   k(  r8 j                  |   }|!|tx        jz                  k(  r||k  r	 nb||kD  r n[t        t        j                  |t        |      d j                  ||       j                  ||            }|j                  |        ||d  S )NFzSparse vector r   T   zMultivector zDense vector r   zKRecommend strategy is expected to be either BEST_SCORE or SUM_SCORES, got: c                 (    j                  |       S r~   r   rK   rz   rx   s    rV   r   z(LocalCollection.search.<locals>.<lambda>[      tGXGXYZ\`Ga r   c                 (    j                  |       S r~   r  r  s    rV   r   z(LocalCollection.search.<locals>.<lambda>s  r  r   c                 (    j                  |       S r~   r  r  s    rV   r   z(LocalCollection.search.<locals>.<lambda>{  r  r   zUnsupported query vector type )r   r   r   scoreversionrl   r   )Gr   r   r
   rA   rd   r   rZ   modifierr   ModifierIDFr   DOTr)   rf   r   r   shaperk   r   distancera   rl   r%   r.   r"   strategyRecommendStrategy
BEST_SCOREr&   
SUM_SCORESr(   	TypeErrorrB   transform_sparserF   rI   r*   r/   r2   r    r$   r@   rE   r+   r0   r   r#   r?   rD   r,   r1   r   r=   r   r<   rC   r   r	  r'   r!   BIGGER_IS_BETTERargsortinfrt   r   r   floatr   r  r   )rx   r   r  r  r  r   r   r  resultsparse_scoringrescore_idfra   r#  scoresr  required_orderorderr   r  point_idscored_pointrz   s   `                    @rV   searchzLocalCollection.search  s   0 "<<\Jl+- lH->$?@4... >$7V!WXX))$/G{{))$/88FOO<O<OO"||H!Nh/?&@A|RZZ0S9K9K5LPQ5Q4,,, <v5T!UVV''-G--d3<<H4<<' =6U!VWWll4(G--d3<<H-C-.lBJJ/<%%&!++L'8L1,Ri0$$(@(@(K(KK8wPXY&&&*B*B*M*MM7gxX66B6K6K5LN  o6+<<=ab$$(@(@(K(KK?gV&&&*B*B*M*MM>|WU66B6K6K5LN  n5$$(@(@(K(KK>|WV^_&&&*B*B*M*MM=lGU]^66B6K6K5LN  n5/gxPF&:;+<<=ab6|WMF&9:5lGXVFl3-lGXNF&89+<<=ab4\7KF&783L'8TFl3"<0#00tD-l;L.|WEF >tL?Q>RSTU11,D1Q*84];;;z#!
@
 JJv&tt,EJJv&E!-1 	(C6{efn,93KE%BFF7"2||C(H*!]%C%CC..$""El))#|<((l;L MM,'=	(@ fgr   r   prefetchusingkwargsc
                 *   g }|t        |t              r|n|g}t        |      dkD  r9|D cg c]  }| j                  |       }}| j	                  |||||	||||	      }n| j                  ||	||||||      }t        j                  |      S c c}w )z
        Queries points in the local collection, resolving any prefetches first.

        Assumes all vectors have been homogenized so that there are no ids in the inputs
        r   	sourcesr   r  r  r8  r  r   r   r  r   r8  r  r  r  r   r   r  )points)r   ro   r   	_prefetch_merge_sources_query_collectionr   QueryResponse)rx   r   r7  r  r  r  r   r   r  r8  r9  
prefetchesr<  scored_pointss                 rV   query_pointszLocalCollection.query_points  s    & 
%/$%?hZJz?Q@JKHt~~h/KGK !//))) / 0 
M !22))) / 3 	M ""-887 Ls   Bc                    g }|j                   3t        |j                   t              r|j                   n|j                   g}t        |      dkD  rj|D cg c]  }| j	                  |       }}| j                  ||j                  |j                  d|j                  |j                  dd|j                  	      S | j                  |j                  |j                  |j                  |j                  ddd|j                        S c c}w )Nr   Fr;  r=  )r7  r   ro   r   r?  r@  r   r  r8  filterr  rA  )rx   r7  inner_prefetchesinner_prefetchr<  s        rV   r?  zLocalCollection._prefetch  s   (%/0A0A4%H!!xO`O`Na   1$L\].t~~n5]G] &&nnnnnn%__"" ( 8 8 ' 
 
 ))nnnn%__nn"" ( 8 8 * 	 	! ^s   Dr<  c
           
      t   t        |t        j                        r|j                  t        j                  j
                  k(  rt        |||z         }
nQ|j                  t        j                  j                  k(  rt        |||z         }
nt        d|j                   d      |
D cg c]  }|j                   }}| j                  |||	      }t        ||
      D ]'  \  }}|j                  |_        |j                  |_        ) |
|d  S t        |t        j                        r| j!                  ||||z   ||	      }||d  S t#               }|D ]$  }|D ]  }|j%                  |j                          & t'        |      dk(  rg S t)        |t+        |            }| j-                  |||||||	|      S c c}w )N)	responsesr  zFusion method z does not exist)r   r   )r   prefetches_resultsr  r   r   r   r=  )r   r   FusionQueryfusionFusionRRFr   DBSFr   r   r   retriever   rl   r   FormulaQuery_rescore_with_formulasetaddr   _include_ids_in_filterro   rA  )rx   r<  r   r  r  r8  r  r  r   r   fusedr   rs   fetched_pointsfetchedscoredrescoredsources_idssourcefilter_with_sourcess                       rV   r@  zLocalCollection._merge_sources  s    eV//0||v}}000.PVW!3!337'QVY_Q_` >%,,!OPP *//588/C/!]],\ + N $'~u#= /!( '/ >!v22311#*fn)) 2 H FG$$ %K! .# .EOOEHH-.. ;1$	&<\4P[K\&]#--!4!!-!-$3 . 	 	C 0s   (F5c	                    |xs t         }|xs d}|xs d}|7| j                  |||z   ||      \  }	}
|	|d D cg c]  }t        |       c}S t        |t        j
                        r$| j                  ||j                  f||||||      S t        |t        j                        rW| j                  |j                  j                  |j                  j                  |j                  j                  |||||||
      S t        |t        j                        rB| j                  |j                  j                  |j                  j                   |||||||	      S t        |t        j"                        r#| j                  |j                   |||||||      S t        |t        j$                        rB| j                  ||j&                  ||z   ||	      \  }	}
|	|d D cg c]  }t        |       c}S t        |t        j(                        rT|j*                  t        j,                  j.                  k(  r| j1                  ||||
      S t3        d|j*                         t        |t        j4                        rt7        d      t        |t        j8                        rt7        d      | j                  ||f||||||      S c c}w c c}w )z_
        Performs the query on the collection, assuming it didn't have any prefetches.
        
   r   N)scroll_filterr  r   r   r   r  r  r  r   r   r  )
positivenegativer$  r8  r  r  r  r   r   r  )	targetcontextr8  r  r  r  r   r   r  )rg  r8  r  r  r  r   r   r  )rb  order_byr  r   r   )r  r  r   r   zUnknown Sample variant: z(Cannot perform fusion without prefetchesz)Cannot perform formula without prefetches)r   scrollrecord_to_scored_pointr   r   NearestQueryr6  nearestRecommendQuery	recommendrd  re  r$  DiscoverQuerydiscoverrf  rg  r   OrderByQueryrh  SampleQuerysampleSampleRANDOM_sample_randomlyr   rM  AssertionErrorrS  )rx   r   r8  r  r  r  r   r   r  records_records               rV   rA  z!LocalCollection._query_collection\  s    ,,1=*fn))	 % JGQ BIAQRv*62RRv223;;#U]]3))) /    v445>>111111))) / "   v334==~~,,..))) / ! 
 
 v223==))) / ! 	 	 v223*fn)) % JGQ BIAQRv*62RRv112||v}}333,,!-!-!-	 -   !#;ELL>!JKKv112 !KLLv223 !LMM ;;#U^))) /   Q Sn Ss   KKgroup_by
group_sizewith_lookupwith_lookup_collectionc           
      F   t        | j                        }|Ct        |t              r'g }|D ]  }|j	                  t        ||             |}! nt        ||      }| j                  ||||t        | j                        d|	|
      }t               }|j                  D ]  }t        |j                  t              st        |j                  |      }|7t        t        d |D                    }| j                  |j                  |      |_	        |D ]Z  }||vrt        j                  |g       ||<   t        ||   j                         |k\  r=||   j                   j	                  |       \  t        |j#                               d | }t        |t$              rt        j&                  |d d       }|V|T|D ]O  }|j)                  |j*                  g|j,                  |j.                        }t1        t3        |      d       |_        Q t        j6                  |      S )NT)r   r  r7  r8  r  r   r   r  c              3   N   K   | ]  }t        |t        t        f      s|  y wr~   r   strr   r   r   s     rV   r   z/LocalCollection.query_groups.<locals>.<genexpr>       #Y!z!cSVZ?XA#Y   %%r   hits
collectionr   r   rs   r   r   groups)r   rt   r   ro   r   set_prefetch_limit_recursivelyrE  r   r>  rl   r   r7   rU  r   r   
PointGroupr  r   r  
WithLookuprR  r   r   r   nextiterlookupGroupsResult)rx   r{  r   r8  r7  r  r  r|  r   r   r  r}  r~  	max_limittmpr   r>  r  r   group_valuesgroup_valuegroups_resultgroupr  s                           rV   query_groupszLocalCollection.query_groups  s   4 %	(D)! #AJJ=aKL"H# :(IN""%dll#%+ # 	
 ]] 	7EemmT2'x@L##Y|#Y YZL 11%--NEM+ 7f,*0*;*;{QS*TF;'vk*//0J>{#((//67	7* 26fmmo1Fv1Nk3' ++&!!K "'='I& 8/88
!,!9!9!,!9!9 9 
  $DL$78 ""-88r   c                 z   | j                  ||t        | j                        d||      }t               }|D ]  }t	        |j
                  t              st        |j
                  |      }|7t        t        d |D                    }| j                  |j
                  |      |_        |D ]Z  }||vrt        j                  |g       ||<   t        ||   j                        |k\  r=||   j                  j                  |       \  t        |j                               d | }t	        |	t               rt        j"                  |	d d       }	|	V|
T|D ]O  }|
j%                  |j&                  g|	j(                  |	j*                        }t-        t/        |      d       |_        Q t        j2                  |      S )NT)r   r  r  r   r   r  c              3   N   K   | ]  }t        |t        t        f      s|  y wr~   r  r  s     rV   r   z0LocalCollection.search_groups.<locals>.<genexpr>V  r  r  r  r  r  r  )r6  r   rt   r   r   rl   r   r7   ro   rU  r   r   r  r  r   r   r  r  rR  r   r   r   r  r  r  r  )rx   r   r{  r  r  r|  r   r   r  r}  r~  r>  r  r   r  r  r  r  r  s                      rV   search_groupszLocalCollection.search_groups#  s   @ %%dll#%+  
  	7EemmT2'x@L##Y|#Y YZL 11%--NEM+ 7f,*0*;*;{QS*TF;'vk*//0J>{#((//67	7* 26fmmo1Fv1Nk3' ++&!!K "'='I& 8/88
!,!9!9!,!9!9 9 
  $DL$78 ""-88r   facet_filterc                 r   t        t              }| j                  |      }t        | j                        D ]  \  }}||   st        |t              st        ||      }|,t               }	|D ]P  }
t        |
      t        t        j                        vr(t        |
      }|rt        |      }
|	j                  |
       R |	D ]  }
||
xx   dz  cc<     t!        |j#                         d       d | D cg c]  \  }}t%        j&                  ||       }}}t        j(                  |      S c c}}w )Nr   c                     | d    | d   fS )Nr   r   r   rU   s    rV   r   z'LocalCollection.facet.<locals>.<lambda>  s    !uadm r   r   )r   r   )r  )r   r   r	  r   rl   r   r   r7   rU  r   r   r   
FacetValuer8   r  rV  sortedre   r   FacetValueHitFacetResponse)rx   r   r  r  
facet_hitsr  r   rl   r   
values_setr   as_uuidr   r   r  s                  rV   facetzLocalCollection.facetw  sE    3>c2B
11,?%dll3 	#LC9gt,!'3/F~ 14J  	"7"5e6F6F"GG %Q-GAq!	"   #1"#7	#@ !'  "+! u	!
u   uE:
 
 ""--
s   9!D3rs   c                    g }|D ]z  }|| j                   vr| j                   |   }| j                  |   dk(  r4|j                  t        j                  || j                  ||      | j                  ||                   | |S )Nr   r   rl   r   )rs   rn   r   r   Recordr   r  )rx   rs   r   r   r.  r4  r   s          rV   rR  zLocalCollection.retrieve  s      	Htxx'((8$C||C A%MM --c<@,,S,?	  r   rd  re  r$  lookup_from_collectionlookup_from_vector_namec           
          dt         t        j                     dt        t        t        t
              t        t        j                     t        t        t        t
                 f   dd f fd}||n ||nt        }	||n|	||ng }||ng }|t        j                  j                  k(  rt        |      dk(  rlt        d      |t        j                  j                  k(  s|t        j                  j                  k(  r't        |      dk(  rt        |      dk(  rt        d      g }
g }g }g }g }g }g j                  v }j                   v }|rj                   |||        |||       n?|rj                    |||        |||       nj"                   |||
        |||       t%        |      }|
||||||fS )NexamplesaccrL   c                    | D ]  }t        |t        t        j                              r|j                  vrt        d| d      j                  |   }	   |   }t        |t        j                        r|j                         }|j                  |       k(  sj                  |       |j                  |        y NPoint r   )
r   r
   r   PointIdrs   r   rf   r   r   r   )
r  r  exampler   vecr  collection_vectorsmentioned_idsrx   r   s
        rV   examples_into_vectorszJLocalCollection._preprocess_recommend_input.<locals>.examples_into_vectors  s     $ (gx'>?jnn4(6':Y)Z[[$..1C,[9#>C!#rzz2!jjlJJsO!T)%,,W5JJw'(r   r   zPositive list is emptyz&No positive or negative examples given)r   r   VectorInputr	   ro   r-  r   r   r   r%  AVERAGE_VECTORr   r   r&  r'  rd   rk   ra   ignore_mentioned_ids_filter)rx   rd  re  r$  r  r8  r  r  r  search_in_vector_namepositive_vectorsnegative_vectorssparse_positive_vectorssparse_negative_vectorspositive_multivectorsnegative_multivectorssparsemultir  r  r  r   s   `                 @@@@rV   _preprocess_recommend_inputz+LocalCollection._preprocess_recommend_input  s   $	(v112	(tDK($v/B/B*CT$tTY{J[E\\]	( 	( 	(( 0F/Q+W[
).):@S '2 $& 	  (38'38 u..===8}! !9:://:::522===8}!c(mq&8 !IJJ /1.0=?=?9;9;/1
 9 99z666!+!:!:!(,CD!(,CD!+!8!8!(,AB!(,AB!+!3!3!(,<=!(,<= 3<O ##!!
 	
r   r  r  c                     t        j                  |       }t        |      dkD  rt        j                  |      nd }t        j                  |d      }|||z   t        j                  |d      z
  }|S |}|S )Nr   axis)rf   stackr   mean)r  r  positive_vectors_npnegative_vectors_npmean_positive_vectorr   s         rV   _recommend_average_densez(LocalCollection._recommend_average_dense%  s     !hh'78<?@P<QTU<Ubhh'78[_!ww':C*$';;bggFY`a>bb 
  *Fr   c                    t        |       D ]  \  }}t        |       t        |      | |<     t        |      D ]  \  }}t        |       t        |      ||<     t        |       }|rt        |      }t	        ||      }|S |}|S r~   )r   r=   r<   rH   rG   )r  r  ir   r  mean_negative_vectors         rV   _recommend_average_sparsez)LocalCollection._recommend_average_sparse6  s    
 ##34 	=IAv"6*"4V"<Q	= ##34 	=IAv"6*"4V"<Q	=  **:;#-.>#? 45IK_`F  *Fr   c                     | D cg c]  }|D ]  }|  }}}t        |      dkD  r.|D ])  }|D ]"  }|j                  |D cg c]  }|  c}       $ + |S c c}}w c c}w Nr   )r   r   )r  r  multi_vectorr   recommend_vectorr   s         rV   _recommend_average_multiz(LocalCollection._recommend_average_multiL  s     8Hc|VbcFFcFcc 1$ 0 J* JF$++,HeV,HIJJ   d -Is   A 
Ac           	         ||nt         j                  j                  }| j                  |||||||      \  }}	}
}}}}|t         j                  j                  k(  rS|r| j	                  ||	      }||fS |
r| j                  |
|      }||fS |r| j                  ||      }||fS t        d      |t         j                  j                  k(  s|t         j                  j                  k(  rQ|s|	rt        ||	|      }||fS |
s|rt        |
||      }||fS |s|rt        |||      }||fS t        d| d      t        d| dt         j                         )Nz9No positive examples given with 'average_vector' strategy)rd  re  r$  z-No positive or negative examples given with 'z
' strategyz
strategy `z+` is not a valid strategy, choose one from )r   r%  r  r  r  r  r  r   r&  r'  r"   rB   r*   )rx   rd  re  r  r8  r  r  r$  r  r  r  r  multi_positive_vectorsmulti_negative_vectorsedited_query_filterr   s                   rV   _construct_recommend_queryz*LocalCollection._construct_recommend_queryX  s     (389P9P9_9_ ,,"#
	
##"" u..===#<<$$ \ 000U )#==++ R 000K (#<<*,B H 000A !!\]] //:::522===#3(--% 2 000) ),C.44% & 000 (+A-33%  000 !CH:ZX  XJ&QRWRiRiQjk r   c           	      ~    | j                  ||||	|
||      \  }}|	|	nt        }| j                  ||f||||||      S )Nrc  )r  r   r6  )rx   rd  re  r  r  r  r   r   r  r8  r  r  r$  r   r  r  s                   rV   rn  zLocalCollection.recommend  so     -1,K,K"#-
)) */):@S{{/>,%%+  
 	
r   c                     ||nt         j                  j                  }| j                  ||||
|||      \  }}|
|
nt        }| j                  ||f||||||	|||
      S )N)
r   r  r{  r|  r  r   r   r  r}  r~  )r   r%  r  r  r   r  )rx   r{  rd  re  r  r  r|  r  r   r   r8  r  r  r}  r~  r$  r   r  r  s                      rV   recommend_groupsz LocalCollection.recommend_groups  s    $  (389P9P9_9_,0,K,K"#-
)) */):@S!!/>,!%%+##9 " 
 	
r   rs  c                    | j                  ||||      \  }}g }g }t        |      D 	
ci c]  \  }	}
|
|	
 }}	}
t        |      D ];  \  }}|D ]1  }|j                  |       |j                  ||j                            3 = g }|D ]$  }|D ]  }|j                  |j                          & t        j                  ||||      S c c}
}	w )Nr  r  rs  r8  )offsets_rowoffsets_colr1  rs   )_search_distance_matrixr   r   r   r  r   SearchMatrixOffsetsResponse)rx   r  r  rs  r8  rs   
all_scoresr  r  r   r4  offset_by_id
row_offsetrD  r5  r1  sample_scoresr  s                     rV   search_matrix_offsetsz%LocalCollection.search_matrix_offsets  s     66%U6 7 
Z ;DS>J-#x#JJ)2:)> 	B%J - B"":.""<#@AB	B ' 	+M& +ekk*+	+ 00##	
 	
 Ks   Cc           	          | j                  ||||      \  }}g }t        t        ||            D ]G  \  }}	|	D ]=  }
|j                  t	        j
                  ||
j                  |
j                               ? I t	        j                  |      S )Nr  )abr  )pairs)	r  ro   r   r   r   SearchMatrixPairr   r  SearchMatrixPairsResponse)rx   r  r  rs  r8  rs   r  r  	sample_idr  sample_scores              rV   search_matrix_pairsz#LocalCollection.search_matrix_pairs  s     66%U6 7 
Z (,Sj-A(B 	$I} - **#|l>P>P	 ..
 	
r   c                    g }||nt         }| j                  t        | j                        |d|      }|D ]0  }t        |      |k(  r n |j                   |j                  |       2 t        |      dk  rg g fS t        |d       }|D cg c]  }|j                   }	}g }
t        |      D ]  \  }}t        |	      D cg c]  \  }}||k7  s| }}}t        ||      }|j                  }t        |t              r||   n|}| j                  ||f||dd      }|
j                  |        |	|
fS c c}w c c}}w )NFr  c                     | j                   S r~   )r   rU   s    rV   r   z9LocalCollection._search_distance_matrix.<locals>.<lambda>Q  s
     r   r  )r   r  r  r   r   )r   rv  r   rs   r   r   r  r   r   rW  r   r   r6  )rx   r  r  rs  r8  samplesr  
candidates	candidaters   r1  sampled_id_indexsampledr  rK   ids_to_includessampling_filtersampled_vectorsearch_vectorsamples_scoress                       rV   r  z'LocalCollection._search_distance_matrix6  su    &().):@S **M<0E

 $ 	*I7|v%+y)	* w<!r6M n5'./Vvyy//*, *37); 	*%g/8~WVaFVAVqWOW4\?SO$^^N nd3 45# 
 "[[3]C,"" ) N MM.)!	*$ F{- 0
 Xs   D6D;D;rf  r  c                    | /t        | t        j                        rt        j                  |       n| } t        | t        t        j                              r| |j                  vrt        d|  d      |j                  |    }||j                  v r$|j                  |   |   j                         }|| fS ||j                  v r|j                  |   |   }|| fS |j                  |   |   j                         }|| fS | d fS r  )r   r   TargetVectorr   convert_target_vectorr
   r   r  rs   r   ra   r   rd   rk   )rf  r  r   r   target_vectors        rV   _preprocess_targetz"LocalCollection._preprocess_targetk  s    !j9J9J&K ,,V4 	
 fhu}}56Z^^+ 6&1P!QRR..(Cj000 * 2 2; ? D K K M !&(( 
 9 99 * 9 9+ Fs K !&(( !+ 7 7 DS I P P R &((t|r   rg  c                    |D cg c]3  }t        |t        j                        rt        j                  |      n|5 }}g }g }g }g }|D ]?  }g }	|j
                  |j                  fD ]  }
t        |
t        t        j                              r|
|j                  vrt        d|
 d      |j                  |
   }||j                  v r!|j                  |   |   j                         }nA||j                  v r|j                  |   |   }n |j                  |   |   j                         }|	j!                  |       || k(  s|j!                  |
       |	j!                  |
        t        |	d   t"              r7t        |	d   t"              r$|j!                  t%        |	d   |	d                ft        |	d   t&              rt        |	d   t&              rt        |	d   d   t(              r:t        |	d   d   t(              r$|j!                  t+        |	d   |	d                t        |	d   d   t&              r:t        |	d   d   t&              r$|j!                  t-        |	d   |	d                ,t        d      t        d       t/        t1        |      t1        |      t1        |      g      dkD  rt        d      ||||fS c c}w )Nr  r   r   r   )rd  re  zMContext example pair must be of the same type: dense, sparse or multi vectorszIAll context example pairs must be either dense or sparse or multi vectors)r   r   ContextExamplePairr   convert_context_example_pairrd  re  r
   r   r  rs   r   ra   r   rd   rk   r   r   r>   ro   r-  r   r-   sumrm   )rx   rg  r  r   pairr  dense_context_vectorssparse_context_vectorsmulti_context_vectorspair_vectorsr  r   r   s                rV   _preprocess_contextz#LocalCollection._preprocess_context  s     
  dD$;$;< 77=
 
  "!# " +	DL MM4==9 1gx'>?jnn4(6':Y)Z[[$..1C"j&8&88!+!3!3K!@!E!L!L!N$
(A(AA!+!:!:;!G!L!+!8!8!Ec!J!Q!Q!S ''/!T)%,,W5 ''0#1& ,q/<8ZQ> '--%|AVWY LOT2z,q/SW7Xl1oa0%8ZUVXYHZ\a=b)00#\!_|TUW  Q 2D9jVWYZI[]a>b)00(,q/LYZO\ %g  !c S+	\ /0././  [  %&<>SUbbbO
s   8K	c                    ||st        d      ||n| }||nt        }||n|}	| j                  |||	      \  }
}|t        |      ng }| j	                  |||	      \  }}}}||| k(  r|j                  |       t        ||      }|
||||fS )NNo target or context given)r   r   r  ro   r  r   r  )rx   rf  rg  r  r8  r  r  r  r  r   r  	target_idr  r  r  r  s                   rV   _preprocess_discoverz$LocalCollection._preprocess_discover  s     >'9::/E/Q+W[
).):@S '2 $& 	 $(#:#:6:{#[ y#*#6$w-B $$Wj+F 	\57Lm  Z4%7  + 3<O !"!
 	
r   c           	         | j                  |||||	|
      \  }}}}}|et        |t              r-t        |d   t              rt	        ||      }npt        ||      }nct        |t              rt        ||      }nFt        d      ||rt        |      }n+||rt        |      }n||rt        |      }nt        d      ||nt        }| j                  ||f||||||      S )Nr   zUnsupported target vector typer  rc  )r  r   ro   r-  r    r+   r   r@   r   r   r?   r,   r   r6  )rx   rf  rg  r  r  r  r   r   r8  r  r  r  r  r  r  r  r  r   r  s                      rV   rp  zLocalCollection.discover  s   ( %%"#
	
!"! $-.mA.6#1-AV#WL#6}F[#\LM<83MCYZ !ABB "'<'(=>L"'=-.DEL"'<,-BCL9::).):@S{{/>,%%+  
 	
r   r4  c                     t        |t              r|dfS t        |t              rd|fS t        dt	        |             )Nr   rJ   zIncompatible point id type: )r   r  r   r(  r   )r   r4  s     rV   _universal_idzLocalCollection._universal_idC  sB    h$Q;#&x<6tH~6FGHHr   rb  rh  c                     t        | j                        dk(  rg d fS || j                  |||||      S |t        d      | j	                  |||||      S )Nr   )rb  r  r  r   r   zGOffset is not supported in conjunction with `order_by` scroll parameter)rh  rb  r  r   r   )r   rs   _scroll_by_idr   _scroll_by_value)rx   rb  r  rh  r  r   r   s          rV   ri  zLocalCollection.scrollK  s     txx=At8O%%+)) &   Y  $$'%% % 
 	
r   r   c                 v    | j                  |      }t        j                  t        j                  |            S )N)r   )r	  r   CountResultrf   count_nonzero)rx   r   r  s      rV   r   zLocalCollection.counto  s.    11,?!!(8(8(>??r   c                     t         j                  j                          fd      }g } j                  |      }|D ]  \  }	}
|$ j	                  |	       j	                  |      k  r,t        |      |dz   k\  r nO||
   sE|j                  t        j                  |	 j                  |
|       j                  |
|                    t        |      |kD  r|d | ||   j                  fS |d fS )Nc                 ,    j                  | d         S r  )r  )rK   rx   s    rV   r   z/LocalCollection._scroll_by_id.<locals>.<lambda>|  s    D<N<NqQRt<T r   r  r   r  )r  rs   re   r	  r  r   r   r   r  r   r  r   )rx   rb  r  r  r   r   
sorted_idsr.  r  r4  r   s   `          rV   r  zLocalCollection._scroll_by_idt  s     DHHNN,2TU
%'11-@' 	MHc!d&8&8&BTEWEWX^E_&_6{eai'9MM --c<@,,S,?	$ v;&5>6%=#3#3334<r   c                 `   t        |t        j                        rt        j                  |      }t        |t
              rt        j                  |      }g }| j                  j                         D ]T  \  }}t        | j                  |   |j                        }	|	,|	D ]$  }
t        |
      }||j                  |||f       & V |j                  |j                  nt        j                  j                   }|t        j                  j"                  k(  }|j%                  d |       | j'                  |      }g }t        |j(                        }t+               }|D ]  \  }
}}|F|t        j                  j                   k(  r|
|k  r$,|t        j                  j"                  k(  r|
|kD  rOt-        |      |k\  r |d fS ||   sh|
|f|v ro|j/                  |
|f       |j                  t        j0                  || j3                  ||      | j5                  ||      |
              |d fS )Nr  c                     | d   S r  r   rU   s    rV   r   z2LocalCollection._scroll_by_value.<locals>.<lambda>  s
    1 r   r   reverse)r   rl   r   order_value)r   r   OrderByr   convert_order_byr  r   rs   re   r7   rl   r   r5   r   	direction	DirectionASCDESCsortr	  
start_fromrU  r   rV  r  r   r  )rx   rh  rb  r  r   r   value_and_idsexternal_idr
  payload_valuesr   ordering_valuer(  should_reverser  r.  r-  seen_tupless                     rV   r  z LocalCollection._scroll_by_value  s(    h-!228<Hh$~~(3HGI(,(8 
	U$K)$,,{*CX\\RN% ( U!/!6!-!((.+{)STU
	U +3*<*<*HH&&fN^N^NbNb	"f&6&6&;&;; 	~~F11-@%'#H$7$78
 @Cu/< 	+E;% 0 0 4 44z) &"2"2"7"77z) 6{e#& t|# ${#{2OOUK01MM" --k<H,,[,G %	)	: t|r   c                    | j                  |      }t        j                  j                  t	        | j
                              }t        j                  |      }g }|D ]  }	t	        |      |k\  r |S ||	   s| j                  |	   }
t        t        j                  |
t        d      d| j                  |	|      | j                  |	|            }|j                  |        |S )Nr   r  )r	  rf   randomrandr   rs   r+  rt   r   r   r   r-  r   r  r   )rx   r  r  r   r   r  random_scoresrandom_orderr.  r   r4  r5  s               rV   rv  z LocalCollection._sample_randomly  s     11,?		s488}5zz-0*, 	(C6{e#$ ! 9||C(H$""Ah))#|<((l;L MM,'%	(( r   rL  c                 \   |D cg c]  }t        d |D               }}|j                  xs i }t               }	|D ]$  }|D ]  }
|	j                  |
j                          & g }|	D ]  }| j
                  |   }| j                  |d      xs i }| j                  |      }t        |j                  |||||      }t        j                         5  t        j                  d       t        j                  |      }t        j                  |      st!        | d|        d d d        t#        t$        j&                  |t)              d| j                  ||      | j+                  ||            }
|j-                  |
        |j/                  d d	       |d | S c c}w # 1 sw Y   xY w)
Nc              3   L   K   | ]  }|j                   |j                  f  y wr~   )r   r  )r   r   s     rV   r   z8LocalCollection._rescore_with_formula.<locals>.<genexpr>  s     ?U%((EKK(?s   "$T)
expressionr4  r1  rl   r  defaultsignorez
 as f32 = r   r  c                     | j                   S r~   )r  rU   s    rV   r   z7LocalCollection._rescore_with_formula.<locals>.<lambda>8  s
    AGG r   r#  )r   r<  rU  rV  r   rs   r   r  r   formulawarningscatch_warningssimplefilterrf   ri   isfiniter   r   r   r   r-  r  r   r,  )rx   r   rL  r  r   r   r7  prefetches_scoresr<  points_to_rescorer   r\  r4  r
  rl   r  r  	score_f32s                     rV   rT  z%LocalCollection._rescore_with_formula  s    Qc
DLD?h??
 
 >>'R9<* 	0H! 0!%%ehh/0	0
 .0) 	#H((8,K''T:@bG33K@J' ==!(%!E ((* L%%h/JJu-	{{9-*eWJyk+JK	L
 ""I&))+|D((lCE OOE"5	#8 	+T:W
4L Ls   FAF""F+	r   c                 :   | j                   |j                     }t        |j                  t	        |j                        ni       | j                  |<   t        |j                  t              rt        |j                  i}n|j                  }| j                  j                         D ]  \  }}|j                  |      }|| j                  |      }t        j                  |      j                         rJ d       |j                   t"        j$                  j&                  k(  rBt        j(                  j+                  |      }|t,        kD  rt        j.                  |      |z  n|}|| j                  |   |<   d| j0                  |   |<   d| j0                  |   |<    | j2                  j                         D ]  \  }}|j                  |      }| j0                  |   |   }	|	s$| j2                  |   |   }
| j5                  |
|       |7|| j2                  |   |<   d| j0                  |   |<   | j7                  ||       d| j0                  |   |<    | j8                  j                         D ]  \  }}|j                  |      }|| j                  |      }t        j                  |      j                         rJ d       |j                   t"        j$                  j&                  k(  rWt        j(                  j+                  |d      d d t        j:                  f   }|t        j<                  |dk7  |t,              z  }t        j.                  |      | j8                  |   |<   d| j0                  |   |<   d| j0                  |   |<     d| j>                  |<   y )NVector contains NaN valuesr   r   r  r          ) rs   r   r   rl   r   r   r   ro   r   ra   re   r   r   rf   isnanr   r#  r   r   COSINElinalgnormEPSILONr   rr   rd   r   r   rk   newaxiswherern   )rx   r   r   ra   r   _named_vectorsr   r{   rM  was_deletedprevious_vector_named_vectorvector_norms                rV   _update_pointzLocalCollection._update_point<  s+   hhuxx $161Ju}}-PR
S ellD)*ELL9GllG ,0<<+=+=+? 	>'K[[-F!//<88F+//1O3OO1??foo&<&<<99>>&1D8<wRXXf-4FF17[)#.<=''4S9<=''4S9	> ,0+>+>+D+D+F 	>'K[[-F11+>sCK"&"5"5k"B3"G''E!8>##K05<=''4S9''<<=''4S9	> +/*;*;*A*A*C 	>&K[[-F!//<88F+//1O3OO1??foo&<&<<"$))..b."A!RZZ-"PKbhh{c'9;PPF68hhv6F!!+.s3<=''4S9<=''4S9	> Sr   c                    t        | j                        }|| j                  |j                  <   | j                  j	                  |j                         | j
                  j	                  t        |j
                  t        |j
                        ni              t        | j
                        t        | j                        k(  sJ d       t        j                  | j                  d      | _	        t        |j                  t              rt        |j                  i}n|j                  }| j                  j                         D ]  \  }}|j!                  |      }|j"                  d   |k  r+t        j$                  ||dz  dz   |j"                  d   f      }|Xt        j&                  |j"                  d         }|||<   t        j                  | j(                  |   d      | j(                  |<   t        j*                  |      }t        j,                  |      j/                         rJ d       | j1                  |      }	|	j2                  t4        j6                  j8                  k(  r/t        j:                  j=                  |      }
|
t>        kD  r||
z  n|}|||<   || j                  |<   t        j                  | j(                  |   d      | j(                  |<    | j@                  j                         D ]  \  }}|j!                  |      }t        |      |k  r:|t        |      z
  dz   }tC        |      D ]  }|j	                  tE                       |@tE               }|||<   t        j                  | j(                  |   d      | j(                  |<   |||<   | jG                  ||       || j@                  |<   t        j                  | j(                  |   d      | j(                  |<    | jH                  j                         D ]  \  }}|j!                  |      }t        |      |k  rE|t        |      z
  dz   }tC        |      D ]&  }|j	                  t        j*                  g              ( |It        j*                  g       ||<   t        j                  | j(                  |   d      | j(                  |<   t        j*                  |      }t        j,                  |      j/                         rJ d       | j1                  |      }	|	j2                  t4        j6                  j8                  k(  rWt        j:                  j=                  |d      d d t        jJ                  f   }|t        jL                  |dk7  |t>              z  }|||<   || jH                  |<   t        j                  | j(                  |   d      | j(                  |<    y )	Nz)Payload and ids_inv must be the same sizer   r  r   rH  r  r  rI  )'r   rs   r   rt   r   rl   r   r   rf   rn   r   r   ro   r   ra   re   r   r"  resizer   rr   r   rJ  r   r   r#  r   r   rK  rL  rM  rN  rd   ranger;   r   rk   rO  rP  )rx   r   r   ra   r   r   r   fake_vector	vector_npr{   rM  diffry  rU  s                 rV   
_add_pointzLocalCollection._add_pointu  s   $((m EHH%%--:S'6Y[\	
 4<< C$55b7bb5yyq1ellD)*ELL9GllG +/,,*<*<*> 	&K[[-F""1%, "		-#'A+}GZGZ[\G]9^ _~ ggm&9&9!&<=%0c"79yy++K8!8''4 HHV,	88I.224R6RR4//<??foo&<&<<99>>)4D487N	D 0	I%.c",9[)79yy++K8!8''4+	4 +/*=*=*C*C*E 	&K[[-F=!S(S//!3t @A!(()<)>?@ ~13%0c"79yy++K8!8''4 &,c"''<3@##K079yy++K8!8''4%	. +/*;*;*A*A*C 	&K[[-F=!S(S//!3t 7A!(("67 ~%'XXb\c"79yy++K8!8''4 HHV,	88I.224R6RR4//<??foo&<&<<"$))..."DQ

]"SK+*<k7!SSI%.c"1>!!+.79yy++K8!8''4-	r   c                    t        |j                  t              r 	 t        j                  |j                        }t        |j                  t              ri }|j                  j                         D ]K  \  }}|| j                  vrt        d|       t        |t              s3t        |       t        |      ||<   M |j                  j                  |       nt        | j                  j!                               }t        | j"                  j!                               }|r|dgk7  s|r|dgk7  rt        d| d|       | j                  s| j"                  st        d      |j                  | j$                  v r| j'                  |       n| j)                  |       | j*                  | j*                  j-                  |       y y # t
        $ r}t        d|j                   d      |d }~ww xY w)Nz	Point id z is not a valid UUIDz-Wrong input: Not existing vector name error: rJ   zbWrong input: Unnamed vectors are not allowed when a collection has named vectors or multivectors: z, z+Wrong input: Not existing vector name error)r   r   r  uuidUUIDr   r   r   re   rq   r   r=   r<   updatero   ra   rp   rk   rs   rV  r]  rv   persist)	rx   r   _uuideupdated_sparse_vectorsr   r   vector_namesmultivector_namess	            rV   _upsert_pointzLocalCollection._upsert_point  s   ehh$T		%((+ ellD)%'"',||'9'9'; U#Vd&<&<<$'TU`Ta%bccfl3*62:LV:T*;7U LL 67 1 1 34L $T%6%6%;%;%= >"!5!&7B4&? x#nB'8&9;  <<(9(9 !NOO88txxu%OOE"<<#LL  ' $C  T 9UXXJ6J!KLRSSTs   G	 		G1G,,G1r>  c                     t        |t              r|D ]  }| j                  |        nt        |t        j                        r|}t        |j
                  t              rt        |j
                  i}n|j
                  }t        |j                        D ]o  \  }}d }|j                  |j                  |   }|j                         D 	ci c]  \  }}	||	|    }
}}	| j                  t        j                  |||
             q nt        dt        |             t        | j                        | j                  kD  r9t!        d| j                  ddt        | j                         dt"        dd	       y y c c}	}w )
Nr  zUnsupported type: z=Local mode is not recommended for collections with more than ,z% points. Current collection contains zd points. Consider using Qdrant in Docker or Qdrant Cloud for better performance with large datasets.zlarge-local-collection   )categoryr   
stacklevel)r   ro   rh  r   Batchra   r   r   rs   r  re   PointStructr   r   r   LARGE_DATA_THRESHOLDr   UserWarning)rx   r>  r   batchra   r   r4  rl   rz   r   r   s              rV   upsertzLocalCollection.upsert  sc   fd# *""5)*-E%--..>--!*599!5 X>>-#nnS1G6=mmoF74$#,FF""&&# '% 1$v,@AAtxx=4444OPTPiPijkOl m77:488}o Fnn %, 5 Gs   
E:c                    |j                         D ]  \  }}t        |t              r_t        |       | j                  |   |   }| j                  ||       t        |      }|| j                  |   |<   | j                  ||       nY|| j                  v r&t        j                  |      | j                  |   |<   n%t        j                  |      | j                  |   |<   d| j                  |   |<    y r  )re   r   r   r=   rd   r   r<   r   ra   rf   r   rk   rr   )rx   r   ra   r   r   
old_vector
new_vectors          rV   _update_named_vectorsz%LocalCollection._update_named_vectors 	  s     $+==? 	:K&,/&v.!00=cB
''
K@/7
8B##K05''
K@,13&1A[)#.68hhv6F!!+.s389D##K05	:r   c                     |D ]g  }|j                   }| j                  |   }|j                  }t        |t              r	t
        |i}n|}| j                  ||       | j                  |       i y r~   )r   rs   r   r   ro   r   rw  _persist_by_id)rx   r>  r   r4  r   vector_structfixed_vectorss          rV   update_vectorszLocalCollection.update_vectors1	  sh     		*ExxH((8$C!LLM-.!4m D -&&sM:)		*r   selectorc                     | j                  |      }|D ];  }| j                  |   }|D ]  }d| j                  |   |<    | j                  |       = y r   )_selector_to_idsrs   rr   ry  )rx   ra   r}  rs   r4  r   r   s          rV   delete_vectorszLocalCollection.delete_vectors=	  sc     ##H- 	*H((8$C& ><=''4S9>)		*r   c                     |D ]/  }|| j                   v s| j                   |   }d| j                  |<   1 | j                  2|D ],  }|| j                   v s| j                  j                  |       . y y r   )rs   rn   rv   delete)rx   rs   r4  r   s       rV   _delete_idszLocalCollection._delete_idsN	  sw     	&H488#hhx($%S!	&
 <<# 2txx'LL''12 $r   delete_filterc                     | j                  |      }| j                  j                         D cg c]  \  }}||   s| }}}|S c c}}w r~   )r	  rs   re   )rx   r  r  r4  r   rs   s         rV   _filter_to_idszLocalCollection._filter_to_idsY	  sE    11-@-1XX^^-=KMHccxKK
 Ls
   AAc                 `   t        |t              r|S t        |t        j                        r| j	                  |      S t        |t        j
                        r|j                  S t        |t        j                        r| j	                  |j                        S t        dt        |             )NzUnsupported selector type: )r   ro   r   Filterr  PointIdsListr>  FilterSelectorrG  r   r   )rx   r}  s     rV   r  z LocalCollection._selector_to_ids^	  s     h%O&--0&&x00&"5"56??"&"7"78&&x77:4>:JKLLr   c                 H    | j                  |      }| j                  |       y r~   )r  r  )rx   r}  rs   s      rV   r  zLocalCollection.deleter	  s"     ##H-r   c                     | j                   f| j                  |   }t        j                  || j	                  |dd      | j                  |d            }| j                   j                  |       y y )NTF)r   r   )r   r  )rv   rs   r   ro  r   r  rb  )rx   r4  r   r   s       rV   ry  zLocalCollection._persist_by_id~	  sn    <<#((8$C&&))#De)T((4(@E
 LL  ' $r   c                 T   | j                  |      }t        t        |            }|t        |      nd }|D ]o  }| j                  |   }|!i | j
                  |   || j
                  |<   n*| j
                  |   t        | j
                  |   ||       | j                  |       q y )N)rl   r   rp   )r  r   r   r4   rs   rl   r9   ry  )	rx   rl   r}  r   rs   jsonable_payloadrp   r4  r   s	            rV   set_payloadzLocalCollection.set_payload	  s     ##H-#$6w$?@EH__S-AZ^ 	*H((8$C|$Mt||C'8$M<L$MS!<<$0$T\\#->FV]ab)	*r   c                     | j                  |      }|D ]G  }| j                  |   }t        t        |            xs i | j                  |<   | j                  |       I y r~   )r  rs   r   r   rl   ry  )rx   rl   r}  rs   r4  r   s         rV   overwrite_payloadz!LocalCollection.overwrite_payload	  s]     ##H- 	*H((8$C ();G)D E KDLL)	*r   rp   c                     | j                  |      }|D ]Y  }| j                  |   }|D ]2  }|| j                  |   v s| j                  |   j                  |       4 | j	                  |       [ y r~   )r  rs   rl   popry  )rx   rp   r}  rs   r4  r   r   s          rV   delete_payloadzLocalCollection.delete_payload	  sx     ##H- 	*H((8$C /$,,s++LL%))#./ )	*r   c                     | j                  |      }|D ]1  }| j                  |   }i | j                  |<   | j                  |       3 y r~   )r  rs   rl   ry  )rx   r}  rs   r4  r   s        rV   clear_payloadzLocalCollection.clear_payload	  sM     ##H- 	*H((8$C "DLL)	*r   update_operationsc                    |D ]V  }t        |t        j                        rt        |j                  t        j                        r&| j                  |j                  j
                         ht        |j                  t        j                        r&| j                  |j                  j                         t        dt        |j                               t        |t        j                        r| j                  |j                         
t        |t        j                        rV|j                  j                  xs |j                  j                  }| j                  |j                  j                  |       zt        |t        j                         rV|j"                  j                  xs |j"                  j                  }| j#                  |j"                  j                  |       t        |t        j$                        rV|j&                  j                  xs |j&                  j                  }| j'                  |j&                  j(                  |       Zt        |t        j*                        r| j-                  |j,                         t        |t        j.                        r'| j1                  |j0                  j                         t        |t        j2                        rV|j4                  j                  xs |j4                  j                  }| j5                  |j4                  j6                  |       Bt        dt        |              y )NzUnsupported upsert type: zUnsupported update operation: )r   r   UpsertOperationrs  PointsBatchrr  
PointsListr>  r   r   DeleteOperationr  SetPayloadOperationr  rG  rl   OverwritePayloadOperationr  DeletePayloadOperationr  rp   ClearPayloadOperationr  UpdateVectorsOperationr|  DeleteVectorsOperationr  r   )rx   r  	update_oppoints_selectors       rV   batch_update_pointsz#LocalCollection.batch_update_points	  sp    + !	UI)V%;%;<i..0B0BCKK	 0 0 6 67	 0 0&2C2CDKK	 0 0 7 78$'@iFVFVAW@X%YZZIv'='=>I,,-Iv'A'AB"+"7"7">">"^)BWBWB^B^  !6!6!>!>PIv'G'GH//66\):U:U:\:\   &&y'B'B'J'JO\Iv'D'DE,,33Vy7O7O7V7V   ##I$<$<$A$A?SIv'C'CD""9#:#:;Iv'D'DE##I$<$<$C$CDIv'D'DE,,33Vy7O7O7V7V   ##I$<$<$C$C_U #A$y/AR!STTC!	Ur   
new_configc                 p    || j                   vrt        d| d      || j                  j                   |<   y )Nr   z! does not exist in the collection)rd   r   rZ   )rx   r   r  s      rV   update_sparse_vectors_configz,LocalCollection.update_sparse_vectors_config	  s;     d111w{m3TUVV2<"";/r   c                    t        j                  t         j                  j                  t         j                  j
                  d d| j                         j                  di t        j                  t        j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                        t        j                   ddd      t        j"                  dd	      t        j$                  d
ddddd      d             S )Nr   r   )ra   shard_numberreplication_factorwrite_consistency_factoron_disk_payloadrd      d   i'  )mef_constructfull_scan_threshold    )wal_capacity_mbwal_segments_aheadg?i  rY      )deleted_thresholdvacuum_min_vector_numberdefault_segment_numberindexing_thresholdflush_interval_secmax_optimization_threads)r{   hnsw_config
wal_configoptimizer_configquantization_config)statusoptimizer_statusvectors_countindexed_vectors_countpoints_countsegments_countpayload_schemarZ   )r   CollectionInfoCollectionStatusGREENOptimizersStatusOneOfOKr   CollectionConfigCollectionParamsrZ   ra   r  r  r  r  rd   
HnswConfig	WalConfigOptimizersConfigr   s    rV   infozLocalCollection.info
  s   $$**00#99<<"#++**.. KK//!%!9!9'+{{'E'E-1[[-Q-Q$(KK$?$?#';;#=#= #--!$(-
 "++$&'( "(!8!8&)-1+,','(-." %)5$
 $	
r   )NF)rL   N)rJ   )T)TT)Fr~   )Nra  NTFN)	NNNra  r   TFNN)NNNTF)NNNNNFFN)NNNNra     TFNNN)Nra  r   TFNNN)Nra  )TF)NNNNNNN)NNNra  r   TFNNNNN)NNNra  r   NTFNNNNNN)Nr  ra  N)NNNNNN)NNNra  r   TFNNNN)Nra  NNTF)Nra  NTF)Nra  TF)__name__
__module____qualname____doc__rp  r   CreateCollectionr   r  rm   r|   staticmethodr   r   r   r`   r   r   r   r   classmethodr   r-  r   r   rw   r	   ro   r   r   r   r   rA   r)   
NumpyArrayr   r   r   r   r   r   r   r   PayloadSelectorr   Payloadr   VectorStructr  r  rf   r   r	  r  r   r6  QueryPrefetchrB  rE  r?  r@  rA  r  DocumentImageInferenceObjectWithLookupInterfacer  r  Vectorr"   rB   r*   r  r  r  r  rR  r  r%  r  r  r  r  r  rn  r  r  r  r  r  r   r  r  r   r>   r-   r  r  rp  r  r&  ri  r  r   r  r  rv  rS  rT  ro  rV  r]  rh  rn  rs  rw  PointVectorsr|  r  r  r  r  r  r  r  ry  r  r  r  r  UpdateOperationr  SparseVectorParamsr  r  r  r   r   rV   rX   rX   ]   s    "
 #'05	0''0 3-0 *.	0
 
0d 3c6.../3	tC,,,-tC9L9L4L/MM	N3 3(!; ;C ;D ;; ;C ;D ; 9c 9c 9e 9 9G< Gc Gl GLC\ 1K#tE{"#e#tDK(()###''(#(()#''(
1  
U#%68H%JZJZZ[[
!1 1fMc Mf.A.A M ES Es Et E E6 ES Es Et E E IK&.ud{&;CF	 0  KO)) D(3-1F1FFG) 
$	) )\ KO 	QQ D(3-1F1FFGQ 	Q
 
&..	!Q JO!!&+D(3-,E&F!	&%%	&!L &* / c] 
	4 c4i 2 04 $JN38+/-hK#tE{"#e#tDK(()###''(#(()#''(
h" u||,#h$ %h& 'h( D(3-1F1FFG)h* D(3-/0+h, "%-h. 
f  	!/hX (,37/3JN38+/#49$49 4/049 u||,	49
 49 49 D(3-1F1FFG49 D(3-/049 "%49 }49 49 
		49l!%.. !T%:K:K5L !R  $/3+/JN38Bd5,,-.B {{B 	B
 B }B u||,B "%B D(3-1F1FFGB D(3-/0B 
e	 BL (,#/3# $JO38+/j$j }j u||,	j
 }j j D(3-1F1FFGj D(3-/0j "%j 
e	 jt #FJ/3JN38+/;?>B1Y9Y9 MMKeKKNNKK!!	
Y9 }Y9  U^^(<dBC!Y9" u||,#Y9$ %Y9& 'Y9( D(3-1F1FFG)Y9* D(3-/0+Y9, "%-Y9. e778/Y90 !)): ;1Y92 
		3Y9d 15KO38+/;?>B=R9UOeMM#"$$	&	 ###
R9, -R9. v}}-/R90 1R92 3R94 D(3-1G1GGH5R96 D(3-/07R98 "%9R9: e778;R9< !)): ;=R9> 
		?R9n 04	1.1. u||,1. 	1.
 
		1.l KO38	emm$ D(3-1F1FFG D(3-/0	
 
fmm	8 <@;?6:/3#>B15_
8F$6$678_
 8F$6$678_
 5223	_

 u||,_
 }_
 !)): ;_
 "*#_
 
T%[T%[V  !V  !T$u+T$u+	
_
B tE{+?CDK?P			   v223v223 
		 * 	 tDK01	 EI$tTY{J[E\	 	d5k		  	  <@;?/3#>B156:R18F$6$678R1 8F$6$678R1 u||,	R1
 }R1 !)): ;R1 "*#R1 5223R1 
i.&:M:MuO_O__`	
R1l <@;?/3JN38+/#>B156:"
8F$6$678"
 8F$6$678"
 u||,	"

 "
 "
 D(3-1F1FFG"
 D(3-/0"
 "%"
 }"
 !)): ;"
 "*#"
 5223"
 
f  	!"
N <@;?04+/KO38#>B15;?>B6:!+
+
 8F$6$678+
 8F$6$678	+

 v}}-+
 +
 +
 "%+
 D(3-1G1GGH+
 D(3-/0+
 }+
 !)): ;+
 "*#+
 e778+
 !)): ;+
  5223!+
" 
		#+
^ 04# 
u||, 
  
 	 

 } 
 
	*	* 
H 04#
u||,
 
 	

 }
 
	(	(
2 04#3u||,3 3 	3
 }3 
tO$d4+<&==	>3j ++,:KZ]	v}}hu}}55	6 2McF../Mc=NMc]`Mc	[4 12D9I4JDQVQ^Q^L__
Mcb 04:>/3#>B15-
++,-
 (6#5#567-
 u||,	-

 }-
 !)): ;-
 "*#-
 
[		
-
b 04:>/3JN38#>B15+/>
++,>
 (6#5#567>
 u||,	>

 >
 >
 D(3-1F1FFG>
 D(3-/0>
 }>
 !)): ;>
 "*#>
 "%>
 
f  	!>
@ IV%;%; Ic3h I I 15,0*.JN38"
-"
 "
 5==)	"

 '"
 D(3-1F1FFG"
 D(3-/0"
 
tELL!8EMM#::	;"
H@(5<<"8 @FDVDV @ 15*.JN38# -#  #  '	# 
 D(3-1F1FFG#  D(3-/0#  
tELL!8EMM#::	;# P 15JN38H--H  -H 	H
 D(3-1F1FFGH D(3-/0H 
tELL!8EMM#::	;H\ KO38!! u||,! D(3-1F1FFG	!
 D(3-/0! 
e	 !F4 ""4  !f&8&8!9:4  	4 
 D(3-1F1FFG4  D(3-/04  
f  	!4 l76#5#5 7$ 7rZ 2 2 Zt Zx'(6#5#5 '($ '(R$U8F,>,>#?#MN $SW $L::!%c5el1J+K&K!L:	:"
*Xe.@.@%A 
*d 
**#* MM''(!!!
* 
*"	2tEMM2 	2t 	2ELL T&BXBX=Y 
MMM''(!!!
M 
f$$	%M(
MM''(!!!

 

(v'='= ($ (& "** MM''(!!!
* c]* 
*4** MM''(!!!
* 
* *sm* MM''(!!!
* 
*$*MM''(!!!
* 
*%U#E$9$9:%U 
%UN==,2,E,E=	=%
f++ %
r   rX   r  r  c                 f   t        |      dk(  r| S t        j                  |      }| t        j                  |g      } | S t	        |       } | J | j
                  
|g| _        | S t        | j
                  t              r| j
                  j                  |       | S | j
                  |g| _        | S )Nr   has_id)must_not)	r   r   HasIdConditionr  r   r  r   ro   r   )r  r  ignore_mentioned_idss      rV   r  r  *
  s     =Q!00F}}/C.DE   -'''  (%9$:L!  --t4!!(()=>  &2%:%:<P$QL!r   rs   c                 f   t        |      dk(  r| S t        j                  |      }| t        j                  |g      } | S t	        |       } | J | j
                  
|g| _        | S t        | j
                  t              r| j
                  j                  |       | S | j
                  |g| _        | S )Nr   r  )must)	r   r   r  r  r   r  r   ro   r   )r  rs   include_idss      rV   rW  rW  B
  s     3x1}''s3K}};-8   -'''$!,L  ))40$$[1  ".!2!2K @Lr   rz  c                     t        j                  | j                  dd| j                  | j                  | j
                        S )Nr   )r   r  r  rl   r   r%  )r   r   r   rl   r   r%  )rz  s    rV   rj  rj  Z
  s9    99}}&& r   r7  r  c           
          | rt        | j                  t              r9t        j                  || j                  D cg c]  }t        ||       c}      S t        j                  |t                     S y c c}w )N)r  r7  )r   r7  ro   r   r  r  )r7  r  r   s      rV   r  r  e
  sh    h''.>>LTL]L]^q8EB^ 
 >>??  _s   A6
)trP   r   r_  collectionsr   r   typingr   r   r   r   r	   r
   copyr   r@  numpyrf   qdrant_clientr   $qdrant_client.common.client_warningsr   qdrant_client._pydantic_compatr   r   rT   qdrant_client.conversionsr   r   &qdrant_client.conversions.common_typesr   $qdrant_client.conversions.conversionr   qdrant_client.httpr   qdrant_client.http.modelsr    qdrant_client.http.models.modelsr   r   r   r   qdrant_client.hybrid.formular   r   qdrant_client.hybrid.fusionr   r   qdrant_client.local.distancesr   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   #qdrant_client.local.multi_distancesr)   r*   r+   r,   r-   r.   r/   r0   r1   r2   $qdrant_client.local.json_path_parserr3   r4   qdrant_client.local.order_byr5   #qdrant_client.local.payload_filtersr6   +qdrant_client.local.payload_value_extractorr7   r8   (qdrant_client.local.payload_value_setterr9   qdrant_client.local.persistencer:   qdrant_client.local.sparser;   r<   r=   $qdrant_client.local.sparse_distancesr>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   r   rN  rX   r  ro   r  r  rW  r  rj  r  r   r  r   r   rV   <module>r     sz      0     & B _ ; F ; % 1 ` ` T _      O 7 F P E A 
     
V# V# VJ'
 J'
ZN5<<(9=emm9L
\\05<<(/3EMM/B
\\05<< E4E4E @U^^ @C @ENN @r   