
    <iǷ                    z   S SK r S SKrS SKrS SKJrJr  S SKJrJrJ	r	J
r
  S SKJr  S SKrS SKrS SKJr  S SKJr  S SKJrJr  S SKJr  S S	KJr  S S
KJr  S SKJ r   S SK!J"r"  S SK#J$r$J%r%J&r&J'r'  S SK(J)r)J*r*  S SK+J,r,J-r-  S SK.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:J;r;  S SK<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrDJErEJFrFJGrG  S SKHJIrIJJrJ  S SKKJLrL  S SKMJNrNJOrO  S SKPJQrQJRrR  S SKSJTrT  S SKUJVrV  S SKWJXrXJYrYJZrZ  S SK[J\r\J]r]J^r^J_r_J`r`JaraJbrbJcrcJdrdJereJfrfJgrg  SrhSriS\S\4S jr " S S 5      rjS!\R                  S-  S"\l\R                     S\R                  4S# jrnS!\R                  S-  S$\l\R                     S\R                  4S% jroS&\R                  S\RD                  4S' jrqS(\R                  \l\R                     -  S)\sSS4S* jrtg)+    N)OrderedDictdefaultdict)AnyCallableSequence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calculate_distance_core)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calculate_multi_distance_core)JsonPathItemparse_json_path)to_order_value)calculate_payload_maskcheck_filter)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           	           [         R                  " [         R                  " U SS95      $ ! [         a1    [         R                  " [         R                  " U S[        S95      s $ f = f)NT)	allow_nan)rO   default)jsonloadsdumps	Exception_to_jsonable_pythonrL   s    ^/home/james-whalen/.local/lib/python3.13/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            !       #   \ rS rSrSrSr  SS\R                  S\S-  S\	SS4S	 jjr
\S
\\\R                  4   S\\\\R                  4   \\\R                  4   4   4S j5       rSS jrS\S\SS4S jrS\S\SS4S jr\S\S\S\4S j5       rS\S\S\4S jrSS jr\S\\   \\\\   4   -  \\\      -  \\\\\      4   -  \R8                  -  \R:                  -  \-  \\\4   -  \\\4   -  \ -  \\\ 4   -  \RB                  -  S\\\\-  \ -  \RB                  -  4   4S j5       r"S\S\R                  4S jr#\S\S\S\	4S j5       r$\S\S\S\	4S j5       r%\ SS\&S\'\/\	4   S \S\&4S! jj5       r(\ SS\S"\	\)\   -  \RT                  -  S\S-  4S# jj5       r+  SS$\S"\	\)\   -  \RT                  -  S%\	S\RX                  4S& jjr- SS$\S'\	\)\   -  S-  S\R\                  S-  4S( jjr/ SS)\R`                  S-  S\S-  S\1Rd                  4S* jjr3S+\S\\\	4   4S, jr4      SS\\   \\\\   4   -  \\\      -  \\\\\      4   -  \R8                  -  \R:                  -  \-  \\\4   -  \-  \\\4   -  \ -  \\\ 4   -  \RB                  -  S-\R`                  S-  S.\S/\S-  S"\	\)\   -  \RT                  -  S'\	\)\   -  S0\S-  S\\Rj                     4S1 jjr6         SS2\Rn                  S-  S3\\Rp                     S-  S-\R`                  S-  S.\S/\S"\	\)\   -  \RT                  -  S'\	\)\   -  S0\S-  S4\S-  S5\&S\Rr                  4S6 jjr:S3\Rp                  S\\Rj                     4S7 jr;     SS8\\\Rj                        S2\Rn                  S.\S/\S4\S-  S-\R`                  S-  S0\S-  S"\	\)\   -  \RT                  -  S'\	\)\   -  S\\Rj                     4S9 jjr<        SS2\Rn                  S-  S4\S-  S-\R`                  S-  S.\S-  S/\S-  S"\	\)\   -  \RT                  -  S'\	\)\   -  S0\S-  S\\Rj                     4S: jjr=           SS;\S2\R|                  \\   -  \\\      -  \R"                  -  \Rn                  -  \RB                  -  \R~                  -  \R                  -  \R                  -  S-  S4\S-  S3\Rp                  \\Rp                     -  S-  S-\R`                  S-  S.\S<\S"\	\)\   -  \RT                  -  S'\	\)\   -  S0\S-  S=\R                  S-  S>S?S\R                  4S@ jjrD        SS\)\   \\\      -  \\\R                  \F-  \G-  \H-  \RB                  -  4   -  \R8                  -  \R:                  -  \F-  \G-  \H-  \RB                  -  S;\S-\R`                  S-  S.\S<\S"\	\)\   -  \RT                  -  S'\	\)\   -  S0\S-  S=\R                  S-  S>S?S\R                  4SA jjrI  SS\SB\R`                  S-  S.\S\R                  4SC jjrK  SSD\)\R|                     S"\	\)\   -  \RT                  -  S'\	\)\   -  S\\R                     4SE jjrM       SSF\)\R                     S-  SG\)\R                     S-  SH\R                  S-  S-\R`                  S-  S4\S-  SIS?SJ\S-  S\\\\      \\\      \\R"                     \\R"                     \\\\         \\\\         \R`                  4   4SK jjrP\SL\\\      SM\\\      S\RB                  4SN j5       rQ\SL\\R"                     SM\\R"                     S\R"                  4SO j5       rR\SL\\\\         SM\\\\         S\\\      4SP j5       rS       SSF\)\R                     S-  SG\)\R                     S-  S-\R`                  S-  S4\S-  SIS?SJ\S-  SH\R                  S-  S\\F\G-  \H-  \R"                  -  \RB                  -  \R`                  4   4SQ jjrT            SSF\)\R                     S-  SG\)\R                     S-  S-\R`                  S-  S.\S/\S"\	\)\   -  \RT                  -  S'\	\)\   -  S0\S-  S4\S-  SIS?SJ\S-  SH\R                  S-  S\\Rj                     4SR jjrU              SS;\SF\)\R                     S-  SG\)\R                     S-  S-\R`                  S-  S.\S<\S0\S-  S"\	\)\   -  \RT                  -  S'\	\)\   -  S4\S-  SIS?SJ\S-  S=\R                  S-  S>S?SH\R                  S-  S\R                  4 SS jjrV    SS-\R`                  S-  S.\ST\S4\S-  S\R                  4
SU jjrX    SS-\R`                  S-  S.\ST\S4\S-  S\R                  4
SV jjrZ    SS-\R`                  S-  S.\ST\S4\S-  S\\\[   \\\5      4   4
SW jjr\\SX\R                  S-  SYS S\S\\R                  \R|                  S-  4   4SZ j5       r]S[\\R                     SYS S\S\\\^   \\_   \\`   \\R|                     4   4S\ jra      SSX\R                  S-  S[\)\R                     S-  S-\R`                  S-  S4\S-  SIS?SJ\S-  S\\R                  S-  \\^   \\_   \\`   \R`                  4   4S] jjrb           SSX\R                  S-  S[\)\R                     S-  S-\R`                  S-  S.\S/\S"\	\)\   -  \RT                  -  S'\	\)\   -  S4\S-  SIS?SJ\S-  S0\S-  S\\Rj                     4S^ jjrc\S_\R                  S\\\4   4S` j5       rd      SSa\R`                  S-  S.\Sb\R                  S-  S/\R|                  S-  S"\	\)\   -  \RT                  -  S'\	\)\   -  S\\\R                     \R|                  S-  4   4Sc jjrfSSd\R`                  S-  S\R                  4Se jjrh     SSa\R`                  S-  S.\S/\R|                  S-  S"\	\)\   -  \RT                  -  S'\	\)\   -  S\\\R                     \R|                  S-  4   4Sf jjri    SSb\R                  Sa\R`                  S-  S.\S"\	\)\   -  \RT                  -  S'\	\)\   -  S\\\R                     \R|                  S-  4   4Sg jjrj  SS.\S-\R`                  S-  S"\	\)\   -  \RT                  -  S'\	\)\   -  S\\Rj                     4
Sh jjrk      SS\\   \-  \\\      -  Si\R                  S4\S-  S-\R`                  S-  S.\S/\S-  S"\	\)\   -  \RT                  -  S'\	\)\   -  S0\S-  S\\Rj                     4Sj jjrmSk\\Rj                     S\\   \-  \\\      -  S4\Sl\S.\S\\Rj                     4Sm jrnS2\R                  Sn\\\Rj                        S.\S"\	\)\   -  \RT                  -  S'\	\)\   -  S\\Rj                     4So jrpSp\R                  SS4Sq jrrSp\R                  SS4Sr jrs SSp\R                  Ss\R`                  S-  SS4St jjrt SSu\)\R                     \R                  -  Ss\R`                  S-  SS4Sv jjrvS$\S
\\\\   \-  \\\      -  4   SS4Sw jrw SSu\)\R                     Ss\R`                  S-  SS4Sx jjryS
\)\   Sy\R`                  \\R                     -  \R                  -  \R                  -  SS4Sz jr|SD\\R|                     SS4S{ jr}S|\R`                  S\\R                     4S} jr~Sy\R`                  \\R                     -  \R                  -  \R                  -  S\\R                     4S~ jrSy\R`                  \\R                     -  \R                  -  \R                  -  SS4S jrS_\R                  SS4S jr SS\RX                  Sy\R`                  \\R                     -  \R                  -  \R                  -  S\S-  SS4S jjrS\RX                  Sy\R`                  \\R                     -  \R                  -  \R                  -  SS4S jrS\)\   Sy\R`                  \\R                     -  \R                  -  \R                  -  SS4S jrSy\R`                  \\R                     -  \R                  -  \R                  -  SS4S jrS\)\GR                     SS4S jrS\S\GR                  SS4S jrS\GR                  4S jrSrg)LocalCollection]   zZ
LocalCollection is a class that represents a collection of vectors in the local storage.
 N  Nconfiglocationforce_disable_check_same_threadrM   c           
      8   U R                  UR                  5      u  U l        U l        UR                  nU R                  R                  5        VVs0 s H5  u  pVU[        R                  " SUR                  4[        R                  S9_M7     snnU l        Ub&  UR                  5        VVs0 s H  u  pVU/ _M
     snnO0 U l        0 U l
        U R                   Vs0 s H  oU/ _M     snU l        / U l        [        R                  " S[        S9U l        [        U R                  R!                  5       5      [        U R                  R!                  5       5      -   [        U R                  R!                  5       5      -   U l        U R"                   Vs0 s H  oU[        R                  " S[        S9_M     snU l        0 U l        / U l        USLU l        SU l        Xl        Ub  [1        X#5      U l        U R3                  5         gs  snnf s  snnf s  snf s  snf )a
  
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storager\   r;   load_vectors)selfr\   r]   r^   sparse_vectors_confignameparamss          rW   __init__LocalCollection.__init__d   s    9=8T8TNN9
5T5 !' 5 5 !% 3 3 9 9 ;5
 ; "((Av{{+2::>> ;5
 %0 +@*E*E*GH*G,$T2X*GH 	  	 "&!9!9@
!9"H!9@
 .0)+!4)@""$%4&&++-./4$$))+,- 	 7;6L6L@
6Ld"((1D))6L@
 7957"$.0[DLA5

 I@
@
s   <H-HH#Hrc   c                     0 n0 n[        U [        R                  5      (       a#  U R                  b  [        U 0nX4$ [        U 0nX4$ U R                  5        H  u  p4UR                  b  XBU'   M  XAU'   M     X4$ N)
isinstancer   VectorParamsmultivector_configDEFAULT_VECTOR_NAMErg   )rc   rd   re   r|   r}   s        rW   rb   'LocalCollection._resolve_vectors_config   s      gv2233))5':G&D# "66 #6w!?!66#MMOLD((4,2D)'-t$	 , 22    c                 T    U R                   b  U R                   R                  5         g g r   )rx   closerz   s    rW   r   LocalCollection.close   s!    <<#LL  $r   vectorvector_namec                     X R                   ;  a  [        [        5      U R                   U'   UR                   H  nU R                   U   U==   S-  ss'   M     g N   )rl   r   intindicesrz   r   r   idxs       rW   _update_idf_append"LocalCollection._update_idf_append   sL    5553>s3CD##K0>>C##K05:5 "r   c                 ^    UR                    H  nU R                  U   U==   S-  ss'   M     g r   )r   rl   r   s       rW   _update_idf_remove"LocalCollection._update_idf_remove   s+    >>C##K05:5 "r   dfnc                 J    [         R                  " X!-
  S-   US-   -  S-   5      $ )N      ?r   )mathlog)clsr   r   s      rW   _compute_idfLocalCollection._compute_idf   s'     xx#"s(3a788r   c                 ^   U R                  S S9R                   n/ nU R                  R                  U5      nUc  U$ [        UR                  UR
                  5       H;  u  pgUR                  US5      nU R                  X5      n	UR                  Xy-  5        M=     [        UR                  US9$ )N)count_filterr   )r   values)	countrl   getzipr   r   r   appendr   )
rz   r   r   num_docs
new_values	idf_storer   valuedocument_frequencyidfs
             rW   _rescore_idfLocalCollection._rescore_idf   s    ::4:066
++//<	Mfnnfmm<JC!*sA!6##$6ACek* =
 FNN:FFr   c           	      R	   U R                   Gb  [        [        5      n[        [        5      n[        [        5      n/ n[        U R                   R	                  5       5       GHy  u  pVXPR
                  UR                  '   U R                  R                  UR                  5        U R                  R                  [        UR                  5      =(       d    0 5        UR                  n[        UR                  [        5      (       a  [        UR                  0n[        U R                  R                  5       5      nU H  n	UR!                  U	5      n
U
b  X   R                  U
5        M,  X   R                  ["        R$                  " U R&                  U	   R(                  ["        R*                  S95        UR                  XY45        M     [        U R,                  R                  5       5      nU HY  n	UR!                  U	5      n
U
b  X)   R                  U
5        M,  X)   R                  [/        5       5        UR                  XY45        M[     [        U R0                  R                  5       5      nU He  n	UR!                  U	5      n
U
b  X9   R                  U
5        M,  X9   R                  ["        R2                  " / 5      5        UR                  XY45        Mg     GM|     UR5                  5        Ha  u  p["        R2                  " U5      U R                  U	'   ["        R6                  " [9        U R                  5      [:        S9U R<                  U	'   Mc     UR5                  5        Hf  u  pXR,                  U	'   ["        R6                  " [9        U R                  5      [:        S9U R<                  U	'   U H  nU R?                  X5        M     Mh     UR5                  5        Hr  u  pU Vs/ s H  n["        R2                  " U5      PM     snU R0                  U	'   ["        R6                  " [9        U R                  5      [:        S9U R<                  U	'   Mt     U H  u  pYSU R<                  U	   U'   M     ["        R6                  " [9        U R                  5      [:        S9U l         g g s  snf )Nr`   r   )!rx   r   rq   	enumerateloadru   idrv   r   rn   r   r   r   r   rc   rr   r   rh   onesrd   rj   rk   rf   r<   rm   arrayrg   ri   lenro   rt   r   rp   )rz   rc   rf   rm   deleted_idsr   pointloaded_vectorall_dense_vector_namesr|   vall_sparse_vector_namesall_multivector_namesnamed_vectorsr   s                  rW   ry   LocalCollection.load_vectors   s   <<#!$'G(.N&t,LK'(9(9(;<
%("##EHH- ##$6u}}$E$KL !& ellD11%8%,,$GM *.dll.?.?.A)B&2D%))$/A},,Q/,,GGD$7$7$=$B$B"**U $**C;7 3 +/t/B/B/G/G/I*J'3D%))$/A}&,33A6&,334G4IJ#**C;7 4 )-T->->-C-C-E(F%1D%))$/A}$*11!4$*11"((2,?#**C;7 2Q =b (/}}#%'XXm%<T"02T\\9JRV0W''- (7
 (6';';'=#,9##D)02T\\9JRV0W''-+F++F9 , (> (4'9'9';#JW*X-288F+;-*X!!$'02T\\9JRV0W''- (<
 )	56''-c2 ) 88C$5TBDLW $H +Ys   ' R$query_vectorc                 :   [        U[        5      (       a8  Uu  p#[        U[        5      (       a  [        R                  " U5      nX$4$ Un X$4$ [        U[        R
                  5      (       a  [        nUnX$4$ [        U[        R                  5      (       a/  UR                  n[        R                  " UR                  5      nX$4$ [        U[        R                  5      (       a  UR                  nUR                  nX$4$ [        U[        5      (       a  [        n[        R                  " U5      nX$4$ [        U[        [        5      5      (       a  [        nUnX$4$ [        U[        [        5      5      (       a  [        nUnX$4$ [        S[!        U5       35      e)NzUnsupported vector type )r   tuplerq   rh   r   ndarrayr   typesNamedVectorr|   r   NamedSparseVectorr   r   r(   
ValueErrortype)r   r   r|   queryr   s        rW   _resolve_query_vector_name*LocalCollection._resolve_query_vector_name  s   * lE**&KD%&&%0 |- , |+ bjj11&D!F& |% e&7&788$$DXXl112F  | e&=&=>>$$D!((F | d++&DXXl+F | h/?&@AA&D!F | h/?&@AA&D!F | 7\8J7KLMMr   r|   c                    [        U R                  R                  [        5      (       aA  XR                  R                  ;   a  U R                  R                  U   $ [	        SU S35      e[        U R                  R                  [
        R                  5      (       a/  U[        :w  a  [	        SU S35      eU R                  R                  $ [	        SU R                  R                   35      e)NVector  is not found in the collectionzMalformed config.vectors: )r   r\   rc   dictr   r   r   r   )rz   r|   s     rW   get_vector_params!LocalCollection.get_vector_paramsL  s    dkk))400{{***{{**400 74&0O!PQQdkk))6+>+>??** 74&0O!PQQ;;&&&5dkk6I6I5JKLLr   patternkeyc                     UR                  SS5      R                  S5      nUR                  SS5      R                  S5      n[        S [        X45       5       5      $ )ar  
>>> 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   .   #    U  H  u  pX:H  v   M     g 7fr    .0pr   s      rW   	<genexpr>9LocalCollection._check_include_pattern.<locals>.<genexpr>u       D&Cda16&C   )replacesplitallr   r   r   r   pattern_parts	key_partss        rW   _check_include_pattern&LocalCollection._check_include_pattern[  sP    0  T288=KKT*005	Dc-&CDDDr   c                     [        U5      [        U5      :  a  gUR                  SS5      R                  S5      nUR                  SS5      R                  S5      n[        S [	        X45       5       5      $ )NFr   r   r   c              3   .   #    U  H  u  pX:H  v   M     g 7fr   r   r   s      rW   r   9LocalCollection._check_exclude_pattern.<locals>.<genexpr>}  r   r   )r   r   r   r   r   r   s        rW   _check_exclude_pattern&LocalCollection._check_exclude_patternw  sa    w<#c("T288=KKT*005	Dc-&CDDDr   rn   	predicatepathc                    [        U[        5      (       aR  0 nUS:w  a  US-   nOUnUR                  5        H,  u  pgU" XV-   5      (       d  M  U R                  XrXV-   5      XF'   M.     U$ [        U[        5      (       aM  / nUS-   n[        U5       H5  u  pU" U5      (       d  M  UR                  U R                  XrU5      5        M7     U$ U$ )NrK   r   z[])r   r   rg   _filter_payloadrq   r   r   )
r   rn   r   r   resnew_pathr   r   	res_arrayr   s
             rW   r   LocalCollection._filter_payload  s     gt$$Crz#:%mmo
X^,,"225X^TCH . J&&I$;D'0
T??$$S%8%84%PQ 1 Nr   with_payloadc                 x  ^ ^ T(       d  g [        T[        5      (       a  U$ [        T[        5      (       a  T R                  UU U4S j5      $ [        T[        R
                  5      (       a  T R                  UU U4S j5      $ [        T[        R                  5      (       a  T R                  UU U4S j5      $ U$ )Nc                 :   >^  [        [        UU 4S jT5      5      $ )Nc                 (   > TR                  U T5      $ r   r   r   r   r   s    rW   <lambda>DLocalCollection._process_payload.<locals>.<lambda>.<locals>.<lambda>      (B(B7C(Pr   )anymapr   r   r   s   `rW   r   2LocalCollection._process_payload.<locals>.<lambda>  s    CPR^_r   c                 N   >^  [        [        UU 4S jTR                  5      5      $ )Nc                 (   > TR                  U T5      $ r   r   r   s    rW   r   r     r   r   )r  r  includer  s   `rW   r   r    s    CP$,,r   c                 N   >^  [        [        UU 4S jTR                  5      5      $ )Nc                 2   > TR                  U T5      (       + $ r   )r   r   s    rW   r   r     s    C,F,FwPS,T(Tr   )r   r  excluder  s   `rW   r   r    s    CT$,,r   )r   ro   rq   r   r   PayloadSelectorIncludePayloadSelectorExclude)r   rn   r   s   ` `rW   _process_payload LocalCollection._process_payload  s     lD))NlD))&&  lF$A$ABB&&  lF$A$ABB&&  r   r   return_copyc                 j    U R                   U   nU R                  XB5      nU(       a  [        U5      $ U$ r   )rn   r  r	   )rz   r   r   r  rn   processed_payloads         rW   _get_payloadLocalCollection._get_payload  s7     ,,s# 11'H.9x)*P?PPr   with_vectorsc                    USL d  Uc  g U R                    Vs0 s H<  nU R                  U   U   (       a  M  X0R                   U   U   R                  5       _M>     nnU R                   Vs0 s H.  nU R                  U   U   (       a  M  X0R                  U   U   _M0     nnU R                   Vs0 s H<  nU R                  U   U   (       a  M  X0R                  U   U   R                  5       _M>     nn0 UEUEUEn[        U[        5      (       a  U Vs0 s H  o3U;   d  M
  X7U   _M     nn[        U5      S:X  a  [        U;   a	  U[           $ U$ s  snf s  snf s  snf s  snf )NFr   )	rc   rt   tolistrf   rm   r   rq   r   r   )rz   r   r  r|   dense_vectorsrf   rm   all_vectorss           rW   _get_vectorsLocalCollection._get_vectors  s    5 L$8 
$**405 3D,,t$S)0022$ 	 
 ++
+**405 1D%%d+C00+ 	 
 ))
)**405 8D##D)#.5577) 	 
 JI.ILIlD))?Kc|tWbOb24T!22|Kc{q %8K%G2337


 ds.   E$E+E
E0E$E	E!#	E!payload_filterc                     [        U R                  UU R                  U R                  S9nX0R                  ) -  nUb  X@R                  U   ) -  nU$ )z_
Calculate mask for filtered payload and non-deleted points. True - accepted, False - rejected
)payloadsr  rv   rt   )r6   rn   rv   rt   rp   )rz   r  r   payload_maskmasks        rW   _payload_and_non_deleted_mask-LocalCollection._payload_and_non_deleted_mask  sY     .\\)LL#66	
 ||m+"22;???Dr   internal_idc                 n    0 nU R                   R                  5        H  u  p4XA   (       a  M  SX#'   M     U$ NT)rt   rg   )rz   r"  
has_vectorr   rp   s        rW   _calculate_has_vector%LocalCollection._calculate_has_vector  s=    &(
$($;$;$A$A$C K''*.
' %D r   query_filterlimitoffsetscore_thresholdc                   ^ ^ T R                  U5      u  mn/ nSn	Sn
[        U[        [        5      5      (       a  TT R                  ;  a  [        ST S35      eT R                  T   nT R                  R                  T   R                  [        R                  R                  :X  a  Sn
[        R                  nSn	O[        U[        [        5      5      (       d8  [        U[        R                  5      (       ac  [!        UR"                  5      S:X  aJ  TT R$                  ;  a  [        ST S35      eT R$                  T   nT R'                  T5      R(                  nOITT R*                  ;  a  [        ST S35      eT R*                  T   nT R'                  T5      R(                  nUS [!        T R,                  5       n[        U[        R                  5      (       a5  [!        UR"                  5      S:X  a  [/        XU5      nGOa[1        XU5      nGOS[        U[2        5      (       a  UR4                  [        R6                  R8                  :X  a  [;        XU5      nGOUR4                  [        R6                  R<                  :X  a  [?        XU5      nGO[A        S	UR4                   35      e[        U[B        5      (       a  U
(       a  URE                  UU 4S
 j5      nUR4                  [        R6                  R8                  :X  a  [G        X5      nGOSUR4                  [        R6                  R<                  :X  a  [I        X5      nGO[A        S	UR4                   35      e[        U[J        5      (       a  UR4                  [        R6                  R8                  :X  a  [M        XU5      nGOUR4                  [        R6                  R<                  :X  a  [O        XU5      nGO[A        S	UR4                   35      e[        U[P        5      (       a  [S        XU5      nGOJ[        U[T        5      (       a*  U
(       a  URE                  UU 4S j5      n[W        X5      nGO[        U[X        5      (       a  [[        XU5      nO[        U[\        5      (       a  [_        XU5      nO[        U[`        5      (       a)  U
(       a  URE                  UU 4S j5      n[c        X5      nO[        U[d        5      (       a  [g        XU5      nOg[        U[h        5      (       a;  [k        U5        U
(       a  T Rm                  UT5      n[o        U5      n[q        X5      nO[        S[s        U5       35      eT Ru                  UTS9n[w        U5      nU[x        Rz                  :X  d/  [        U[P        [\        [2        [X        [d        [J        45      (       a  [        R|                  " U5      S S S2   nO[        R|                  " U5      nUb  UOSnU H  n[!        U5      X4-   :  a    OUU   (       d  M"  UU   nU	(       a  U[        R~                  * :X  a  ME  T R                  U   nUb%  U[x        Rz                  :X  a	  UU:  a    OcOUU:  a    OZ[        [        R                  U[        U5      ST R                  UU5      T R                  UU5      S9nUR                  U5        M     XS  $ )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                 (   > TR                  U T5      $ r   r   rL   r|   rz   s    rW   r   (LocalCollection.search.<locals>.<lambda>Y      tGXGXYZ\`Gar   c                 (   > TR                  U T5      $ r   r/  r0  s    rW   r   r1  q  r2  r   c                 (   > TR                  U T5      $ r   r/  r0  s    rW   r   r1  y  r2  r   zUnsupported query vector type )r   r   r   scoreversionrn   r   )Gr   r   r   rB   rf   r   r\   modifierr   ModifierIDFr   DOTr(   rh   r   r   shaperm   r   distancerc   rn   r#   r-   r    strategyRecommendStrategy
BEST_SCOREr$   
SUM_SCORESr&   	TypeErrorrC   transform_sparserG   rJ   r)   r.   r1   r   r"   rA   rF   r*   r/   r   r!   r@   rE   r+   r0   r   r>   r   r=   rD   r   r   r%   r   BIGGER_IS_BETTERargsortinfrv   r   r   floatr  r  r   )rz   r   r(  r)  r*  r   r  r+  resultsparse_scoringrescore_idfrc   r>  scoresr  required_orderorderr   r7  point_idscored_pointr|   s   `                    @rW   searchLocalCollection.search  s   0 "<<\Jl+- lH->$?@@4... >$7V!WXX))$/G{{))$/88FOO<O<OO"||H!Nh/?&@AA|RZZ00S9K9K5LPQ5Q4,,, <v5T!UVV''-G--d3<<H4<<' =6U!VWWll4(G--d3<<H-C-.lBJJ//<%%&!++L8L1,Ri00$$(@(@(K(KK8PXY&&&*B*B*M*MM7xX66B6K6K5LN  o66+<<=ab$$(@(@(K(KK?V&&&*B*B*M*MM>|U66B6K6K5LN  n55$$(@(@(K(KK>|V^_&&&*B*B*M*MM=lU]^66B6K6K5LN  n55/xPF&:;;+<<=ab6|MF&9::5lXVFl33-lXNF&899+<<=ab4\KF&7883L8TFl33"<0#00tD-l;L.|EF >tL?Q>RSTU11,D1Q*84];;;z#!
@
 
@
 JJv&tt,EJJv&E!-1C6{en,93KE%BFF7"2||C(H*!]%C%CC. / .$""El))#|<((l;L MM,'= @ gr   r   prefetchusingkwargsc
                 H   / nUb  [        U[        5      (       a  UOU/n[        U5      S:  aF  U Vs/ s H  o R                  U5      PM     nnUc  [	        S5      eU R                  UUUUU	UUUUS9	nOU R                  UU	UUUUUUS9n[        R                  " US9$ s  snf )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   (Query is required for merging prefetches	sourcesr   r)  r*  rT  r(  r   r  r+  r   rT  r(  r)  r*  r   r  r+  )points)	r   rq   r   	_prefetchr   _merge_sources_query_collectionr   QueryResponse)rz   r   rS  r(  r)  r*  r   r  r+  rT  rU  
prefetchesrY  scored_pointss                 rW   query_pointsLocalCollection.query_points  s    & 
%/$%?%?hZJz?Q@JK
H~~h/
GK} !KLL !//))) / 0 
M !22))) / 3 	M ""-88= Ls   Bc                 h   / nUR                   b8  [        UR                   [        5      (       a  UR                   OUR                   /n[        U5      S:  a  U Vs/ s H  o0R	                  U5      PM     nnUR
                  c  [        S5      eU R                  UUR
                  UR                  b  UR                  OSSUR                  UR                  SSUR                  S9	$ U R                  UR
                  UR                  UR                  UR                  SSSUR                  S9$ s  snf )Nr   rW  
   FrX  rZ  )rS  r   rq   r   r\  r   r   r]  r)  rT  filterr+  r^  )rz   rS  inner_prefetchesinner_prefetchrY  s        rW   r\  LocalCollection._prefetch  s&   (%/0A0A4%H%H!!xO`O`Na   1$L\]L\.~~n5L\G]~~% !KLL &&nn(0(Bhnnnn%__"" ( 8 8 ' 
 
 ))nnnn%__nn"" ( 8 8 * 	 	' ^s   D/rY  c
                    [        U[        R                  [        R                  45      (       Ga)  [        U[        R                  5      (       a"  [	        XU-   UR
                  R                  S9n
OUR                  [        R                  R                  :X  a  [	        XU-   S9n
ONUR                  [        R                  R                  :X  a  [        XU-   S9n
O[        SUR                   S35      eU
 Vs/ s H  oR                  PM     nnU R                  XU	S9n[        X5       H'  u  pUR                   Ul        UR"                  Ul        M)     XS  $ [        U[        R$                  5      (       a  U R'                  UUX4-   UU	S9nUUS  $ [)        5       nU H'  nU H  nUR+                  UR                  5        M      M)     [-        U5      S:X  a  / $ [/        U[1        U5      5      nU R3                  UUUUUUU	US9$ s  snf )	N)	responsesr)  ranking_constant_k)rk  r)  zFusion method z does not exist)r   r  )r   prefetches_resultsr)  r   r  r   rZ  )r   r   FusionQueryRrfQueryr   rrfkfusionFusionRRFDBSFr   r   r   retriever   rn   r   FormulaQuery_rescore_with_formulasetaddr   _include_ids_in_filterrq   r^  )rz   rY  r   r)  r*  rT  r(  r+  r   r  fusedr   ru   fetched_pointsfetchedscoredrescoredsources_idssourcefilter_with_sourcess                       rW   r]  LocalCollection._merge_sources  s    ef00&//BCC%11.%V^PUPYPYP[P[ <<6==#4#442WTZN[E\\V]]%7%77;")E %~ell^?%STT *//88C/!]]\ + N $'~#=!( ' $> >!v223311#*n)) 2 H FG$$ %K!#EOOEHH- $ " ;1$	&<\4P[K\&]#--!4!!-!-$3 . 	 	C 0s   9Hc	                    U=(       d    [         nU=(       d    SnU=(       d    SnUc4  U R                  UXE-   UUS9u  pXS  Vs/ s H  n[        U5      PM     sn$ [        U[        R
                  5      (       aX  UR                  b+  U R                  UR                  UR                  UUUUUUUS9	$ U R                  X!R                  4UUUUUUS9$ [        U[        R                  5      (       aT  U R                  UR                  R                  UR                  R                  UR                  R                  UUUUUUUS9
$ [        U[        R                  5      (       a?  U R!                  UR                   R"                  UR                   R$                  UUUUUUUS9	$ [        U[        R&                  5      (       a   U R!                  UR$                  UUUUUUUS	9$ [        U[        R(                  5      (       a?  U R                  UUR*                  XE-   UUS
9u  pXS  Vs/ s H  n[        U5      PM     sn$ [        U[        R,                  5      (       aR  UR.                  [        R0                  R2                  :X  a  U R5                  UUUUS9$ [7        SUR.                   35      e[        U[        R8                  5      (       a  [7        S5      e[        U[        R:                  5      (       a  [7        S5      e[        U[        R<                  5      (       a  [7        S5      eU R                  X!4UUUUUUS9$ s  snf s  snf )zO
Performs the query on the collection, assuming it didn't have any prefetches.
re  r   N)scroll_filterr)  r   r  )	r   mmrr(  r)  r*  rT  r   r  r+  r   r(  r)  r*  r   r  r+  )
positivenegativer?  rT  r(  r)  r*  r   r  r+  )	targetcontextrT  r(  r)  r*  r   r  r+  )r  rT  r(  r)  r*  r   r  r+  )r  order_byr)  r   r  )r)  r(  r   r  zUnknown Sample variant: z(Cannot perform fusion without prefetchesz)Cannot perform formula without prefetchesz+Cannot perform RRF query without prefetches)r   scrollrecord_to_scored_pointr   r   NearestQueryr  _search_with_mmrnearestrQ  RecommendQuery	recommendr  r  r?  DiscoverQuerydiscoverr  r  r   OrderByQueryr  SampleQuerysampleSampleRANDOM_sample_randomlyr   rn  rw  ro  )rz   r   rT  r(  r)  r*  r   r  r+  records_records               rW   r^  !LocalCollection._query_collectiong  sf    ,,1=*n))	 % JG BIAQRAQv*62AQRRv2233yy$,,!&		!-!!-!-$3 - 
 
 ;;#]]3))) /    v4455>>111111))) / "   v3344==~~,,..))) / ! 
 
 v2233==))) / ! 	 	 v2233*n)) % JG BIAQRAQv*62AQRRv1122||v}}333,,!-!-!-	 -   !#;ELL>!JKKv1122GHHv2233HIIv//JKK ;;#^))) /   o SH Ss   M*Mgroup_by
group_sizewith_lookupwith_lookup_collectionzLocalCollection | Nonec                    [        U R                  5      nUb  [        U5      n[        XM5        U R	                  UUUU[        U R                  5      SU	U
S9n[        5       nUR                   H  n[        UR                  [        5      (       d  M$  [        UR                  U5      nUc  M?  [        [        S U 5       5      5      nU R                  UR                  U5      Ul        U H]  nUU;  a  [        R                  " U/ S9UU'   [        UU   R                   5      U:  a  M?  UU   R                   R#                  U5        M_     M     [        UR%                  5       5      S U n[        U[&        5      (       a  [        R(                  " US S S9nUbV  UbS  U HM  nUR+                  UR,                  /UR.                  UR0                  S9n[3        [5        U5      S 5      Ul        MO     [        R8                  " US9$ )NT)r   r(  rS  rT  r)  r   r  r+  c              3   `   #    U  H$  n[        U[        [        45      (       d  M   Uv   M&     g 7fr   r   strr   r   r   s     rW   r   /LocalCollection.query_groups.<locals>.<genexpr>        #Y|!z!cSVZ?XAA|   .	.r   hits
collectionr   r  ru   r   r  groups)r   rv   r	   set_prefetch_limit_iterativelyrb  r   r[  r   rn   r   r8   rq   ry  r  r   
PointGroupr  r   r   r  
WithLookuprv  r   r   r  nextiterlookupGroupsResult)rz   r  r   rT  rS  r(  r)  r  r   r  r+  r  r  	max_limitr[  r  r   group_valuesgroup_valuegroups_resultgroupr  s                         rW   query_groupsLocalCollection.query_groups  s   4 %	H +8?""%dll#%+ # 	
 ]]EemmT22'x@L##Y|#Y YZL 11%--NEM+f,*0*;*;{QS*TF;'vk*//0J>{#((//6  , #* 26fmmo1Fv1Nk3'' ++&!!K "'='I&/88
!,!9!9!,!9!9 9 
  $DL$7 ' ""-88r   c           	         U R                  UU[        U R                  5      SUUS9n[        5       nU H  n[	        UR
                  [        5      (       d  M$  [        UR
                  U5      nUc  M?  [        [        S U 5       5      5      nU R                  UR
                  U5      Ul        U HY  nX;  a  [        R                  " U/ S9X'   [        X   R                  5      U:  a  M<  X   R                  R                  U5        M[     M     [        UR                  5       5      S U n[	        U	[         5      (       a  [        R"                  " U	S S S9n	U	bV  U
bS  U HM  nU
R%                  UR&                  /U	R(                  U	R*                  S9n[-        [/        U5      S 5      Ul        MO     [        R2                  " US9$ )NT)r   r(  r)  r   r  r+  c              3   `   #    U  H$  n[        U[        [        45      (       d  M   Uv   M&     g 7fr   r  r  s     rW   r   0LocalCollection.search_groups.<locals>.<genexpr>e  r  r  r  r  r  r  )rQ  r   rv   r   r   rn   r   r8   rq   ry  r  r   r  r  r   r   r  r  rv  r   r   r  r  r  r  r  )rz   r   r  r(  r)  r  r   r  r+  r  r  r[  r  r   r  r  r  r  r  s                      rW   search_groupsLocalCollection.search_groups;  s   . %%dll#%+  
 EemmT22'x@L##Y|#Y YZL 11%--NEM+,*0*;*;{QS*TF'v*//0J>#((//6  , * 26fmmo1Fv1Nk3'' ++&!!K "'='I&/88
!,!9!9!,!9!9 9 
  $DL$7 ' ""-88r   facet_filterc           	         [        [        5      nU R                  U5      n[        U R                  5       H  u  pgXV   (       d  M  [        U[        5      (       d  M'  [        Xq5      nUc  M7  [        5       n	U HY  n
[        U
5      [        [        R                  5      ;  a  M+  [        U
5      nU(       a  [        U5      n
U	R                  U
5        M[     U	 H  n
XJ==   S-  ss'   M     M     [!        UR#                  5       S S9S U  VVs/ s H  u  p[$        R&                  " XS9PM     nnn[        R(                  " US9$ s  snnf )Nr   c                     U S   * U S   4$ )Nr   r   r   rV   s    rW   r   'LocalCollection.facet.<locals>.<lambda>  s    !uadmr   r   )r   r   )r  )r   r   r   r   rn   r   r   r8   ry  r   r   r   
FacetValuer9   r  rz  sortedrg   r   FacetValueHitFacetResponse)rz   r   r  r)  
facet_hitsr  r   rn   r   
values_setr   as_uuidr   r   r  s                  rW   facetLocalCollection.facet  s4    3>c2B
11,?%dll3LC9gt,,!'/F~ 14J 7"5e6F6F"GG %Q-GAq!   "  7 4@ !'  "+! u	!
!   u:! 	 
 ""--
s    Eru   c                    / nU Vs/ s H/  n[        U[        R                  5      (       a  [        U5      OUPM1     nnU H{  nX`R                  ;  a  M  U R                  U   nU R
                  U   S:X  a  M8  UR                  [        R                  " UU R                  Xr5      U R                  Xs5      S95        M}     U$ s  snf )Nr   r   rn   r   )r   uuidUUIDr  ru   rp   r   r   Recordr  r  )rz   ru   r   r  rI  id_rO  r   s           rW   rv  LocalCollection.retrieve  s     JMN#3:c49955s3x3>#NHxx'((8$C||C A%MM --c@,,S?   # Os   6Cr  r  r?  lookup_from_collectionlookup_from_vector_namec                   ^ ^^^^ S[         [        R                     S[        [        [              [        [        R
                     -  [        [        [        [                 -  SS 4UUUU U4S jjnUb  UOT mUb  UO[        n	Ub  UOU	mUb  UO/ nUb  UO/ nU[        R                  R                  :X  a  [        U5      S:X  a  [        S5      eOeU[        R                  R                  :X  d  U[        R                  R                  :X  a)  [        U5      S:X  a  [        U5      S:X  a  [        S5      e/ n
/ n/ n/ n/ n/ n/ mTTR                  ;   nTTR                  ;   nU(       a  TR                  mU" X5        U" X-5        O@U(       a  TR                  mU" X5        U" X/5        OTR                   mU" X5        U" X+5        [#        UT5      nU
UUUUUU4$ )NexamplesaccrM   c                   > U  H  n[        U[        [        R                  5      5      (       a  UTR                  ;  a  [        SU S35      eTR                  U   nTT	   U   n[        U[        R                  5      (       a  UR                  5       nUR                  U5        TT:X  a  TR                  U5        M  M  UR                  U5        M     g NPoint r   )
r   r   r   PointIdru   r   rh   r   r  r   )
r  r  exampler   vecr  collection_vectorsmentioned_idsrz   r   s
        rW   examples_into_vectorsJLocalCollection._preprocess_recommend_input.<locals>.examples_into_vectors  s     $gx'>??jnn4(6':Y)Z[[$..1C,[9#>C!#rzz22!jjlJJsO!T)%,,W5 * JJw' $r   r   zPositive list is emptyz&No positive or negative examples given)r   r   VectorInputrq   rH  r   r   r   r@  AVERAGE_VECTORr   r   rA  rB  rf   rm   rc   ignore_mentioned_ids_filter)rz   r  r  r?  r(  rT  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   `                 @@@@rW   _preprocess_recommend_input+LocalCollection._preprocess_recommend_input  s   $	(v112	(d5k"T&*=*=%>>d4PU;FWAXX	( 	( 	(( 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!+!:!:!(D!(D!+!8!8!(B!(B!+!3!3!(=!(= 3<O ##!!
 	
r   r  r  c                     [         R                  " U 5      n[        U5      S:  a  [         R                  " U5      OS n[         R                  " USS9nUb  XD-   [         R                  " USS9-
  nU$ UnU$ )Nr   axis)rh   stackr   mean)r  r  positive_vectors_npnegative_vectors_npmean_positive_vectorr   s         rW   _recommend_average_dense(LocalCollection._recommend_average_dense4  s}     !hh'78<?@P<QTU<Ubhh'78[_!ww':C*$;bggFY`a>bb 
  *Fr   c                    [        U 5       H  u  p#[        U5        [        U5      X'   M     [        U5       H  u  p#[        U5        [        U5      X'   M     [        U 5      nU(       a  [        U5      n[	        XE5      nU$ UnU$ r   )r   r>   r=   rI   rH   )r  r  ir   r   mean_negative_vectors         rW   _recommend_average_sparse)LocalCollection._recommend_average_sparseE  s    
 ##34IA"6*"4V"< 5 ##34IA"6*"4V"< 5  **:;#-.>#? 45I`F  *Fr   c                     U  VVs/ s H  o"  H  o3PM     M     nnn[        U5      S:  a4  U H.  nU H%  nUR                  U Vs/ s H  oU* PM     sn5        M'     M0     U$ s  snnf s  snf Nr   )r   r   )r  r  multi_vectorr   recommend_vectorr   s         rW   _recommend_average_multi(LocalCollection._recommend_average_multi[  sy     8Hc7G|VbFFVbF7Gc 1$ 0*F$++,HV,HI + !1   d -Is   A"A(c           	         Ub  UO[         R                  R                  nU R                  UUUUUUU5      u  nn	n
nnnnU[         R                  R                  :X  a^  U(       a  U R	                  UU	5      nX4$ U
(       a  U R                  U
U5      nX4$ U(       a  U R                  X5      nX4$ [        S5      eU[         R                  R                  :X  d  U[         R                  R                  :X  ac  U(       d  U	(       a  [        UU	US9nX4$ U
(       d  U(       a  [        U
UUS9nX4$ U(       d  U(       a  [        UUUS9nX4$ [        SU S35      e[        SU S[         R                   35      e)Nz9No positive examples given with 'average_vector' strategy)r  r  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   rA  rB  r    rC   r)   )rz   r  r  r(  rT  r  r  r?  r  r  r  r  multi_positive_vectorsmulti_negative_vectorsedited_query_filterr   s                   rW   _construct_recommend_query*LocalCollection._construct_recommend_queryg  s     (389P9P9_9_ ,,"#
	
##"" u..===#<<$$ \ 00U )#==++ R 00K (#<<* H 00A !!\]] //:::522===#3(--% 2 00) ),C.44% & 00 (+A-33%  00 !CH:ZX  XJ&QRWRiRiQjk r   c           
      v    U R                  UUUU	U
UU5      u  pU	b  U	O[        nU R                  X4UUUUUUS9$ )Nr  )r  r   rQ  )rz   r  r  r(  r)  r*  r   r  r+  rT  r  r  r?  r   r  r  s                   rW   r  LocalCollection.recommend  sj     -1,K,K"#-
) */):@S{{/>,%%+  
 	
r   c                     Ub  UO[         R                  R                  nU R                  UUUU
UUU5      u  nnU
b  U
O[        nU R                  UU4UUUUUU	UUUS9
$ )N)
r   r(  r  r  r)  r   r  r+  r  r  )r   r@  r  r  r   r  )rz   r  r  r  r(  r)  r  r+  r   r  rT  r  r  r  r  r?  r   r  r  s                      rW   recommend_groups LocalCollection.recommend_groups  s    $  (389P9P9_9_,0,K,K"#-
)) */):@S!!/>,!%%+##9 " 
 	
r   r  c                    U R                  XX4S9u  pV/ n/ n[        U5       V	V
s0 s H  u  pX_M	     nn	n
[        U5       H<  u  pU H1  nUR                  U5        UR                  XR                     5        M3     M>     / nU H'  nU H  nUR                  UR                  5        M      M)     [
        R                  " UUUUS9$ s  sn
n	f )Nr(  r)  r  rT  )offsets_rowoffsets_colrL  ru   )_search_distance_matrixr   r   r   r7  r   SearchMatrixOffsetsResponse)rz   r(  r)  r  rT  ru   
all_scoresr  r  r   rO  offset_by_id
row_offsetra  rP  rL  sample_scoresr7  s                     rW   search_matrix_offsets%LocalCollection.search_matrix_offsets  s     66%6 7 
 ;DS>J>-#>J)2:)>%J -"":.""<#@A !. *? 'M&ekk* ' ( 00##	
 	
 Ks   Cc           
         U R                  XX4S9u  pV/ n[        [        XV5      5       HF  u  pU	 H;  n
UR                  [        R
                  " XR                  U
R                  S95        M=     MH     [        R                  " US9$ )Nr  )abr7  )pairs)	r  rq   r   r   r   SearchMatrixPairr   r7  SearchMatrixPairsResponse)rz   r(  r)  r  rT  ru   r  r(  	sample_idr"  sample_scores              rW   search_matrix_pairs#LocalCollection.search_matrix_pairs.  s     66%6 7 
 (,S-A(B$I -**#l>P>P !. )C ..
 	
r   c           	         / nUb  UO[         nU R                  [        U R                  5      USU5      nU H4  n[        U5      U:X  a    O$UR                  c  M#  UR                  U5        M6     [        U5      S:  a  / / 4$ [        US S9nU Vs/ s H  o3R                  PM     n	n/ n
[        U5       H  u  p[        U	5       VVs/ s H  u  pX:w  d  M  UPM     nnn[        X5      nUR                  n[        U[        5      (       a  UU   OUnU R                  UU4UUSSS9nU
R                  U5        M     X4$ s  snf s  snnf )NFr-  c                     U R                   $ r   )r   rV   s    rW   r   9LocalCollection._search_distance_matrix.<locals>.<lambda>`  s    r   r  )r   r(  r)  r   r  )r   r  r   ru   r   r   r  r   r   r{  r   r   rQ  )rz   r(  r)  r  rT  samplesr  
candidates	candidateru   rL  sampled_id_indexsampledr  rL   ids_to_includessampling_filtersampled_vectorsearch_vectorsamples_scoress                       rW   r  'LocalCollection._search_distance_matrixE  sc    &().):@S **M<0E

 $I7|v%+y) $ w<!r6M n5'./wVyyw/*, *37);%/8~W~VaAVq~OW4\SO$^^N nd33 45# 
 "[[3]C,"" ) N MM.)! *<$ {- 0
 Xs   E EEr  r  c                    [        U [        [        R                  5      5      (       a  XR                  ;  a  [        SU  S35      eUR                  U    nX!R                  ;   a#  UR                  U   U   R                  5       nX@4$ X!R                  ;   a  UR                  U   U   nX@4$ UR                  U   U   R                  5       nX@4$ U S 4$ r  )
r   r   r   r  ru   r   rc   r  rf   rm   )r  r  r   r   target_vectors        rW   _preprocess_target"LocalCollection._preprocess_targetz  s     fhu}}566^^+ 6&1P!QRR..(C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   r  c                 v   / n/ n/ n/ nU GHo  n/ n	UR                   UR                  4 GH  n
[        U
[        [        R
                  5      5      (       a  XR                  ;  a  [        SU
 S35      eUR                  U
   nX2R                  ;   a!  UR                  U   U   R                  5       nOBX2R                  ;   a  UR                  U   U   nO UR                  U   U   R                  5       nU	R                  U5        X :X  a  UR                  U
5        M  M  U	R                  U
5        GM
     [        U	S   [        5      (       a:  [        U	S   [        5      (       a"  UR                  [        U	S   U	S   S95        GM|  [        U	S   [        5      (       a  [        U	S   [        5      (       a  [        U	S   S   [         5      (       a=  [        U	S   S   [         5      (       a"  UR                  [#        U	S   U	S   S95        GM  [        U	S   S   [        5      (       a=  [        U	S   S   [        5      (       a"  UR                  [%        U	S   U	S   S95        GM\  [        S5      e[        S5      e   ['        [)        U5      [)        U5      [)        U5      /5      S:  a  [        S5      eXVXt4$ )Nr  r   r   r   )r  r  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  r   r   r   r  ru   r   rc   r  rf   rm   r   r   r?   rq   rH  r   r,   sumro   )rz   r  r  r   r  dense_context_vectorssparse_context_vectorsmulti_context_vectorspairpair_vectorsr  r   r   s                rW   _preprocess_context#LocalCollection._preprocess_context  s   
  "!# "DL MM4==9gx'>??nn4(6':Y)Z[[$..1C"&8&88!+!3!3K!@!E!L!L!N$(A(AA!+!:!:;!G!L!+!8!8!Ec!J!Q!Q!S ''/!)%,,W5 * !''0# :& ,q/<88ZQ> > '--%|AVWY LOT22z,q/SW7X7Xl1oa0%88ZUVXYHZ\a=b=b)00#\!_|TUW  Q 2D99jVWYZI[]a>b>b)00(,q/LYZO\ %g  !c S \ /0././  [  %>Sbbr   c                 &   Uc  U(       d  [        S5      eUb  UOU nUb  UO[        nUb  UOUn	U R                  XU	5      u  pUb  [        U5      O/ nU R	                  X'U	5      u  ppUb  Xp:X  a  UR                  U5        [        X?5      nU
UUUU4$ )NNo target or context given)r   r   r?  rq   rH  r   r  )rz   r  r  r(  rT  r  r  r  r  r   r>  	target_idrC  rD  rE  r  s                   rW   _preprocess_discover$LocalCollection._preprocess_discover  s     >'9::/E/Q+W[
).):@S '2 $& 	 $(#:#:6{#[ #*#6$w-B $$W+F 	\7L  Z%7  + 3<O !"!
 	
r   c           
          U R                  UUUUU	U
5      u  nnnnnUbq  [        U[        5      (       a0  [        US   [        5      (       a  [	        X5      nO[        X5      nOy[        U[        5      (       a  [        X5      nOX[        S5      eUc  U(       a  [        U5      nO7Uc  U(       a  [        U5      nO!Uc  U(       a  [        U5      nO[        S5      eUb  UO[        nU R                  UU4UUUUUUS9$ )Nr   zUnsupported target vector typerK  r  )rM  r   rq   rH  r   r*   r   rA   r   r   r@   r+   r   rQ  )rz   r  r  r(  r)  r*  r   r  rT  r  r  r+  r>  rC  rD  rE  r  r   r  s                      rW   r  LocalCollection.discover  s   ( %%"#
	
!"! $-..mA.66#1-#WL#6}#\LM<883MZ !ABB "'<'(=>L"'=-.DEL"'<,-BCL9::).):@S{{/>,%%+  
 	
r   rO  c                     [        U[        5      (       a  US4$ [        U[        5      (       a  SU4$ [        S[	        U5       35      e)Nr   rK   zIncompatible point id type: )r   r  r   rC  r   )r   rO  s     rW   _universal_idLocalCollection._universal_idC  sH    h$$Q;#&&x<6tH~6FGHHr   r  r  c                     [        U R                  5      S:X  a  / S 4$ Uc  U R                  UUUUUS9$ Ub  [        S5      eU R	                  UUUUUS9$ )Nr   )r  r)  r*  r   r  zGOffset is not supported in conjunction with `order_by` scroll parameter)r  r  r)  r   r  )r   ru   _scroll_by_idr   _scroll_by_value)rz   r  r)  r  r*  r   r  s          rW   r  LocalCollection.scrollK  s     txx=At8O%%+)) &   Y  $$'%% % 
 	
r   r   c                 t    U R                  U5      n[        R                  " [        R                  " U5      S9$ )N)r   )r   r   CountResultrh   count_nonzero)rz   r   r  s      rW   r   LocalCollection.counto  s.    11,?!!(8(8(>??r   c                   ^  [        T R                  R                  5       U 4S jS9n/ nT R                  U5      nU H  u  pUb&  T R	                  U	5      T R	                  U5      :  a  M.  [        U5      US-   :  a    ORX   (       d  MM  UR                  [        R                  " U	T R                  X5      T R                  X5      S95        M     [        U5      U:  a  US U Xr   R                  4$ US 4$ )Nc                 ,   > TR                  U S   5      $ r	  )rR  )rL   rz   s    rW   r   /LocalCollection._scroll_by_id.<locals>.<lambda>|  s    D<N<NqQRt<Tr   r  r   r  )r  ru   rg   r   rR  r   r   r   r  r  r  r   )rz   r  r)  r*  r   r  
sorted_idsrI  r  rO  r   s   `          rW   rU  LocalCollection._scroll_by_idt  s     DHHNN,2TU
%'11-@'MH!d&8&8&BTEWEWX^E_&_6{eai'9MM --c@,,S? ($ v;&5>6=#3#3334<r   c                    [        U[        R                  5      (       a  [        R                  " U5      n[        U[
        5      (       a  [        R                  " US9n/ nU R                  R                  5        HY  u  px[        U R                  U   UR                  5      n	U	c  M-  U	 H&  n
[        U
5      nUc  M  UR                  XU45        M(     M[     UR                  b  UR                  O[        R                  R                   nU[        R                  R"                  :H  nUR%                  S US9  U R'                  U5      n/ n[        UR(                  5      n[+        5       nU H  u  pnUbM  U[        R                  R                   :X  a	  U
U:  a  M/  O&U[        R                  R"                  :X  a  U
U:  a  MV  [-        U5      U:  a    US 4$ X   (       d  Mu  X4U;   a  M~  UR/                  X45        UR                  [        R0                  " UU R3                  X5      U R5                  X5      U
S95        M     US 4$ )Nr  c                     U S   $ r	  r   rV   s    rW   r   2LocalCollection._scroll_by_value.<locals>.<lambda>  s    1r   r   reverse)r   rn   r   order_value)r   r
   OrderByr   convert_order_byr  r   ru   rg   r8   rn   r   r5   r   	direction	DirectionASCDESCsortr   
start_fromry  r   rz  r  r  r  )rz   r  r  r)  r   r  value_and_idsexternal_idr"  payload_valuesr   ordering_valueri  should_reverser  rI  rn  seen_tupless                     rW   rV   LocalCollection._scroll_by_value  s    h--!228<Hh$$~~(3HGI(,(8$K)$,,{*CX\\RN% (!/!6!-!((.{)ST ( )9 +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OOU01MM" --kH,,[G %	) 0=: t|r   c                    U R                  U5      n[        R                  R                  [	        U R
                  5      5      n[        R                  " U5      n/ nU H  n	[	        U5      U:  a    U$ XY   (       d  M   U R                  U	   n
[        [        R                  U
[        S5      SU R                  X5      U R                  X5      S9nUR                  U5        M     U$ )N      ?r   r6  )r   rh   randomrandr   ru   rF  rv   r   r   r   rH  r  r  r   )rz   r)  r(  r   r  r  random_scoresrandom_orderrI  r   rO  rP  s               rW   r   LocalCollection._sample_randomly  s     11,?		s488}5zz-0*,C6{e#$ ! 9||C(H$""Cj))#<((;L MM,'%  ( r   r  c
           
          UR                   b  UR                   OUn
U=(       d    [        nU R                  X14UU
UUUU	S9nUR                  b  UR                  OSnSU-
  nU R	                  XX=U5      $ )Nr  r   rw  )candidates_limitr   rQ  	diversity_mmr)rz   r   r  rT  r(  r)  r*  r   r  r+  search_limitsearch_resultsr  lambda_s                 rW   r   LocalCollection._search_with_mmr  s     03/C/C/Os++UZ,,.%%%+ % 
 &)]]%>CMMC		/yyuuMMr   r  r  c                    US:  d  US:  a  [        S5      eU(       d  / $ 0 n/ n/ n/ n	U H  n
U R                  U
R                     nU R                  X/5      n[	        U[
        5      (       a  UR                  U5      nUR                  U5        UR                  U
R                  5        U	R                  U
5        M     0 nU V
s0 s H  oR                  U
_M     nn
X0R                  ;  a  U R                  U5      R                  OS n[	        U[        5      (       d  [        R                  " U5      O
[        U5      n[        X5       GH  u  nn[	        U[         5      (       a  [	        US   ["        5      (       a  [        R                  " U5      n[	        U[        R$                  5      (       d  [        R                  " U5      n['        UX5      R)                  5       n['        UU[        R*                  S S 24   U5      R)                  5       S   UU'   O[	        U[        5      (       a:  [-        UUSS9R)                  5       n[-        UU/SS9R)                  5       S   UU'   O[        R                  " U5      n[	        US   [        R$                  5      (       d&  U Vs/ s H  n[        R                  " U5      PM     nn[/        UUU5      R)                  5       n[/        UU/U5      R)                  5       S   UU'   [1        [3        U5      5       H  nUU   UUUU   4'   M     GM     US   /nUSS  n[3        U5      U:  Ga  [3        U5      S:  a  / nU HS  nUU   n/ nU H  nUR                  UUU4   5        M     [5        U5      nUU-  SU-
  U-  -
  nUR                  U5        MU     [7        U Vs/ s H  n[        R8                  " U5      PM     sn5      (       a  Od[        R:                  " U5      R=                  5       nUR                  UR?                  U5      5        [3        U5      U:  a  [3        U5      S:  a  M  U Vs/ s H  nUU   PM
     sn$ s  sn
f s  snf s  snf s  snf )N        rw  z&MMR lambda must be between 0.0 and 1.0r   T)empty_is_zeror   ) r   ru   r   r  r   r   r   r   rf   r   r>  r   rh   r   r=   r   rq   rH  r   r'   r  newaxisrD   r2   ranger   maxr   isneginfargmaxitempop) rz   r  r   rT  r  r)  candidate_distance_matrixcandidate_vectorscandidate_idsr3  r   r   candidate_vectorquery_raw_similaritiesid_to_pointr>  candidate_idcandidate_vector_npnearest_candidatesmultivecr  selectedpending
mmr_scores
pending_idrelevance_scoresimilarities_to_selectedselected_idmax_similarity_to_selected	mmr_scoresimbest_candidate_indexs                                    rW   r  LocalCollection._mmr#  su    S=GcMEFFI
  	" /1
 $E((588$C#00g>*D11#3#7#7#> $$%56  *e$ $ GI4BCN5xxNC 7<CVCV6VD""5)22\` 	
 lL99 HH\"#L1 	 /2-.S*L**D11jAQRSATV[6\6\&(hh/?&@#!"3RZZ@@(*1B(C%%<'):&&( # 8O "5bjj!m"Dh8&(18&|4 ,l;;%>$%"&& &(	 #
 8Q %&"&8 &(1	8&|4 ')hh/?&@#!"3A"6

CCL](^L]();L]%(^%B'%& &(	 #
 8U #6"78&(18&|4 3}-.N`abNc)<q9I*JK /G /TL "!$%#(me#Gq(8J%
"8"D+-(#+K,331:{2KL $, .11I-J*o-wB\0\\  !!), & -78ZcS!Z8  #%99Z#8#=#=#? OOGKK(<=>+ (me#Gq(8. ?GGhlL)hGGU DH )_@ 9 Hs   Q'& Q,  Q1Q6rm  c                    U Vs/ s H  n[        S U 5       5      PM     nnUR                  =(       d    0 n[        5       n	U H'  nU H  n
U	R                  U
R                  5        M      M)     / nU	 GH   nU R
                  U   nU R                  US5      =(       d    0 nU R                  U5      n[        UR                  UUUUUS9n[        R                  " 5          [        R                  " S5        [        R                  " U5      n[        R                  " U5      (       d  [!        U SU 35        S S S 5        [#        [$        R&                  U[)        W5      SU R                  X5      U R+                  X5      S9n
UR-                  U
5        GM#     UR/                  S SS	9  US U $ s  snf ! , (       d  f       N= f)
Nc              3   P   #    U  H  oR                   UR                  4v   M     g 7fr   )r   r7  )r   r   s     rW   r   8LocalCollection._rescore_with_formula.<locals>.<genexpr>  s     ?hU((EKK(hs   $&T)
expressionrO  rL  rn   r%  defaultsignorez
 as f32 = r   r6  c                     U R                   $ r   )r7  rV   s    rW   r   7LocalCollection._rescore_with_formula.<locals>.<lambda>  s    AGGr   rd  )r   r  ry  rz  r   ru   r  r&  r   formulawarningscatch_warningssimplefilterrh   rk   isfiniter   r   r   r   rH  r  r   rm  )rz   r   rm  r)  r   r  rS  prefetches_scoresr  points_to_rescorer   r  rO  r"  rn   r%  r7  	score_f32s                     rW   rx  %LocalCollection._rescore_with_formula  s    Qc
PbHD?h??Pb 	 
 >>'R9<*H!!%%ehh/ " +
 .0)H((8,K''T:@bG33K@J' ==!(%!E ((*%%h/JJu-	{{9--*eWJyk+JK	 +
 ""I&))+D((CE OOE"5 *8 	+T:W
4 +*s   F.AF33
G	r   c                    [        UR                  [        R                  5      (       a  [	        UR                  5      Ul        U R
                  UR                     n[        UR                  b  [        UR                  5      O0 5      U R                  U'   [        UR                  [        5      (       a  [        UR                  0nOUR                  nU R                  R                  5        H  u  pEUR                  U5      nUb  U R                  U5      n[         R"                  " U5      R%                  5       (       a   S5       eUR&                  [(        R*                  R,                  :X  aD  [         R.                  R1                  U5      nU[2        :  a  [         R4                  " U5      U-  OUnX`R                  U   U'   SU R6                  U   U'   M  SU R6                  U   U'   M     U R8                  R                  5        H  u  pEUR                  U5      nU R6                  U   U   n	U	(       d#  U R8                  U   U   n
U R;                  X5        Ub6  X`R8                  U   U'   SU R6                  U   U'   U R=                  Xd5        M  SU R6                  U   U'   M     U R>                  R                  5        GH%  u  pKUR                  U5      nUb  U R                  U5      n[         R"                  " U5      R%                  5       (       a   S5       eUR&                  [(        R*                  R,                  :X  aU  [         R.                  R1                  USS9S S 2[         R@                  4   nU[         RB                  " US:g  U[2        5      -  n[         R4                  " U5      U R>                  U   U'   SU R6                  U   U'   GM  SU R6                  U   U'   GM(     SU RD                  U'   g )NVector contains NaN valuesr   r   r5  r  r  )#r   r   r  r  r  ru   r	   rn   r   r   rq   r   rc   rg   r   r   rh   isnanr  r>  r   r   COSINElinalgnormEPSILONr   rt   rf   r   r   rm   r  whererp   )rz   r   r   rc   r   _named_vectorsr   r}   r  was_deletedprevious_vector_named_vectorvector_norms                rW   _update_pointLocalCollection._update_point  s>   ehh		**588}EHhhuxx $161Ju}}-PR
S ellD))*ELL9GllG ,0<<+=+=+?'K[[-F!//<88F+//1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 ,G +/*;*;*A*A*C&K[[-F!//<88F+//11O3OO1??foo&<&<<"$))..b."A!RZZ-"PKbhh{c'9;PPF68hhv6F!!+.s3<=''4S9<=''4S9 +D Sr   c                    [        U R                  5      n[        UR                  [        R
                  5      (       a  [        UR                  5      Ul        X R                  UR                  '   U R                  R                  UR                  5        U R                  R                  [        UR                  b  [        UR                  5      O0 5      5        [        U R                  5      [        U R                  5      :X  d   S5       e[        R                  " U R                  S5      U l        [        UR                  [        5      (       a  [         UR                  0nOUR                  nU R"                  R%                  5        GH  u  pEUR'                  U5      nUR(                  S   U::  a+  [        R*                  " XRS-  S-   UR(                  S   45      nUcY  [        R,                  " UR(                  S   5      nXuU'   [        R                  " U R.                  U   S5      U R.                  U'   O[        R0                  " U[        R2                  S9n[        R4                  " U5      R7                  5       (       a   S5       eU R9                  U5      n	U	R:                  [<        R>                  R@                  :X  a/  [        RB                  RE                  U5      n
U
[F        :  a  X-  OUnXU'   [        R                  " U R.                  U   S5      U R.                  U'   XPR"                  U'   GM     U RH                  R%                  5        H  u  pEUR'                  U5      n[        U5      U::  a<  U[        U5      -
  S-   n[K        U5       H  nUR                  [M        5       5        M     Uc@  [M        5       nXuU'   [        R                  " U R.                  U   S5      U R.                  U'   OFXeU'   U RO                  Xd5        [        R                  " U R.                  U   S5      U R.                  U'   XPRH                  U'   M     U RP                  R%                  5        GH  u  pEUR'                  U5      n[        U5      U::  aH  U[        U5      -
  S-   n[K        U5       H(  nUR                  [        R0                  " / 5      5        M*     UcK  [        R0                  " / 5      XR'   [        R                  " U R.                  U   S5      U R.                  U'   GO[        R0                  " U[        R2                  S9n[        R4                  " U5      R7                  5       (       a   S5       eU R9                  U5      n	U	R:                  [<        R>                  R@                  :X  aU  [        RB                  RE                  USS9S S 2[        RR                  4   nU[        RT                  " US	:g  U[F        5      -  nXU'   [        R                  " U R.                  U   S5      U R.                  U'   XPRP                  U'   GM     g )
Nz)Payload and ids_inv must be the same sizer   r-  r   r`   r  r5  r  r  )+r   ru   r   r   r  r  r  rv   r   rn   r	   r   rh   rp   r   rq   r   rc   rg   r   r=  resizer   rt   r   rk   r  r  r   r>  r   r   r  r  r  r  rf   r  r<   r   rm   r  r  )rz   r   r   rc   r   r   r   fake_vector	vector_npr}   r  diffr  r  s                 rW   
_add_pointLocalCollection._add_point	  s   $((mehh		**588}EH 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!&<=%0c"79yy++K8!8''4 HHV2::>	88I.2244R6RR4//<??foo&<&<<99>>)4D487N	 0	I%.c"79yy++K8!8''4 )6LL%3 +?8 +/*=*=*C*C*E&K[[-F=!S(S//!3tA!(()<)>? % ~13%0c"79yy++K8!8''4 &,c"''<79yy++K8!8''4 0=,+ +F0 +/*;*;*A*A*C&K[[-F=!S(S//!3tA!(("6 % ~%'XXb\"79yy++K8!8''4 HHV2::>	88I.2244R6RR4//<??foo&<&<<"$))..."DQ

]"SK+*<k7!SSI%.c"79yy++K8!8''4 .;k*3 +Dr   update_filterc                    [        UR                  [        5      (       a!   [        R                  " UR                  5      n[        UR                  [        5      (       a  0 nUR                  R                  5        HQ  u  pgX`R                  ;  a  [        SU 35      e[        U[        5      (       d  M9  [        U5        [        U5      XV'   MS     UR                  R                  U5        O[        U R                  R!                  5       5      n[        U R"                  R!                  5       5      n	U(       a  US/:w  d  U	(       a  U	S/:w  a  [        SU SU	 35      eU R                  (       d  U R"                  (       d  [        S5      e[        UR                  [        R                  5      (       a  [        UR                  5      Ul        UR                  U R$                  ;   a  U R$                  UR                     n
U R&                  U
   (       dd  Uba  0 nU R(                  R                  5        H  u  plX   (       a  M  SX'   M     [+        X R,                  U
   U R.                  U
   U5      (       d  g U R1                  U5        OU R3                  U5        U R4                  b  U R4                  R7                  U5        g g ! [
         a  n[        SUR                   S35      UeS nAff = f)	Nz	Point id z is not a valid UUID-Wrong input: Not existing vector name error: rK   zbWrong input: Unnamed vectors are not allowed when a collection has named vectors or multivectors: z, z+Wrong input: Not existing vector name errorT)r   r   r  r  r  r   r   r   rg   rs   r   r>   r=   updaterq   rc   rr   rm   ru   rp   rt   r7   rn   rv   r  r  rx   persist)rz   r   r  _uuideupdated_sparse_vectorsr   r   vector_namesmultivector_namesr   r%  rp   s                rW   _upsert_pointLocalCollection._upsert_pointf	  sc   
 ehh$$T		%((+ ellD))%'"',||'9'9';#&<&<<$'TU`Ta%bccfl33*62:LV:T*7 (< LL 67 1 1 34L $T%6%6%;%;%= >"!5!&7B4&? x#nB'8&9;  <<(9(9 !NOOehh		**588}EH88txx((588$C<<$)B
,0,C,C,I,I,K(K"<<26
/ -L $!<<#4dll36G   u%OOE"<<#LL  ' $]  T 9UXXJ6J!KLRSSTs    K 
K1K,,K1r[  c           	         [        U[        5      (       a  U H  nU R                  X2S9  M     O[        U[        R                  5      (       a  Un[        UR
                  [        5      (       a  [        UR
                  0nOUR
                  n[        UR                  5       Hn  u  pgS nUR                  b  UR                  U   nUR                  5        V	V
s0 s H
  u  pXU   _M     nn	n
U R                  [        R                  " UUUS9US9  Mp     O[        S[        U5       35      e[        U R                  5      U R                  :  a6  [!        SU R                  S S[        U R                  5       S3["        SS	S
9  g g s  sn
n	f )Nr  r  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   rq   r  r   Batchrc   r   r   ru   r  rg   PointStructr   r   r   LARGE_DATA_THRESHOLDr   UserWarning)rz   r[  r  r   batchrc   r   rO  rn   r|   r   r   s               rW   upsertLocalCollection.upsert	  sl   
 fd##""5"F  --E%--...>--!*599!5>>-#nnS1G6=mmoFo74$#,oF""&&# '%
 #0 #  "6  1$v,@AAtxx=4444OPTPiPijkOl m77:488}o Fnn %, 5 Gs   Fc                 T   UR                  5        GH  u  p4X0R                  ;  a  [        SU 35      eSU R                  U   U'   [	        U[
        5      (       a]  [        U5        U R                  U   U   nU R                  XS5        [        U5      nX`R                  U   U'   U R                  Xc5        M  [        R                  " U[        R                  S9n[        R                  " U5      R                  5       (       a   S5       eU R!                  U5      nX0R"                  ;   ak  UR$                  [&        R(                  R*                  :X  a/  [        R,                  R/                  U5      n	U	[0        :  a  Xy-  OUnXpR"                  U   U'   GM  UR$                  [&        R(                  R*                  :X  aU  [        R,                  R/                  USS9S S 2[        R2                  4   n
U[        R4                  " U
S:g  U
[0        5      -  nXpR6                  U   U'   GM     g )Nr  r   r`   r  r5  r  r  )rg   rs   r   rt   r   r   r>   rf   r   r=   r   rh   r   rk   r  r  r   rc   r>  r   r   r  r  r  r  r  r  rm   )rz   r   rc   r   r   
old_vector
new_vectorr  r}   r  r  s              rW   _update_named_vectors%LocalCollection._update_named_vectors	  s    $+==?K"8"88 #PQ\P]!^__89D##K05&,//&v.!00=cB
''
@/7
8B##K05''
@rzz:Ixx	*..00N2NN0++K8Fll*??foo&<&<<99>>)4D487N	 0	I1:[)#.??foo&<&<<"$))..."DQ

]"SK+*<k7!SSI6?!!+.s37 $3r   c                 Z   U GH$  n[        UR                  [        R                  5      (       a  [	        UR                  5      OUR                  nU R
                  U   nUR                  n[        U[        5      (       a	  [        U0nOUnU R                  U   (       de  Ubb  0 nU R                  R                  5        H  u  pX   (       a  M  SX'   M     [        X R                  U   U R                  U   U5      (       d    g U R                  XW5        U R!                  U5        GM'     g r$  )r   r   r  r  r  ru   r   rq   r   rp   rt   rg   r7   rn   rv   r  _persist_by_id)rz   r[  r  r   rO  r   vector_structfixed_vectorsr%  r   rp   s              rW   update_vectorsLocalCollection.update_vectors	  s     E(2588TYY(G(Gs588}UXXH((8$C!LLM-..!4m D -<<$)B
,0,C,C,I,I,K(K"<<26
/ -L $!<<#4dll36G   &&s:)' r   selectorc                     U R                  U5      nU H>  nU R                  U   nU H  nSU R                  U   U'   M     U R                  U5        M@     g r   )_selector_to_idsru   rt   r  )rz   rc   r  ru   rO  r   r   s          rW   delete_vectorsLocalCollection.delete_vectors
  sY     ##H-H((8$C&<=''4S9  ')	 r   c                     U H2  nX R                   ;   d  M  U R                   U   nSU R                  U'   M4     U R                  b6  U H/  nX R                   ;   d  M  U R                  R                  U5        M1     g g r   )ru   rp   rx   delete)rz   ru   rO  r   s       rW   _delete_idsLocalCollection._delete_ids
  si    H88#hhx($%S! 
 <<#xx'LL''1   $r   delete_filterc                     U R                  U5      nU R                  R                  5        VVs/ s H  u  p4X$   (       d  M  UPM     nnnU$ s  snnf r   )r   ru   rg   )rz   r  r  rO  r   ru   s         rW   _filter_to_idsLocalCollection._filter_to_ids
  sD    11-@-1XX^^-=K-=MHx-=K
 Ls   AAc                    [        U[        5      (       a=  U Vs/ s H/  n[        U[        R                  5      (       a  [	        U5      OUPM1     sn$ [        U[
        R                  5      (       a  U R                  U5      $ [        U[
        R                  5      (       aG  UR                   Vs/ s H/  n[        U[        R                  5      (       a  [	        U5      OUPM1     sn$ [        U[
        R                  5      (       a  U R                  UR                  5      $ [        S[        U5       35      es  snf s  snf )NzUnsupported selector type: )r   rq   r  r  r  r   Filterr  PointIdsListr[  FilterSelectorrf  r   r   )rz   r  r  s      rW   r   LocalCollection._selector_to_ids$
  s     h%%OWXx
3		 : :CHCxXX&--00&&x00&"5"566OW_
3		 : :CHC__&"7"788&&x77:4>:JKLL Y `s   6D:06D?c                 H    U R                  U5      nU R                  U5        g r   )r  r  )rz   r  ru   s      rW   r  LocalCollection.delete8
  s"     ##H-r   c           	          U R                   b^  U R                  U   n[        R                  " UU R	                  USSS9U R                  USS9S9nU R                   R                  U5        g g )NTF)r   r  )r  r  )rx   ru   r   r  r  r  r  )rz   rO  r   r   s       rW   r  LocalCollection._persist_by_idD
  sn    <<#((8$C&&))#De)T((4(@E
 LL  ' $r   c                 V   U R                  U5      n[        [        U5      5      nUb  [        U5      OS nU Hn  nU R                  U   nUc!  0 U R
                  U   EUEU R
                  U'   O'U R
                  U   b  [        U R
                  U   XVS9  U R                  U5        Mp     g )N)rn   r   rr   )r  r	   r   r4   ru   rn   r:   r  )	rz   rn   r  r   ru   jsonable_payloadrr   rO  r   s	            rW   set_payloadLocalCollection.set_payloadN
  s     ##H-#$6w$?@BE//#*>W[H((8$C|$Mt||C'8$M<L$MS!<<$0$T\\#->FVb) r   c                     U R                  U5      nU HM  nU R                  U   n[        [        U5      5      =(       d    0 U R                  U'   U R                  U5        MO     g r   )r  ru   r	   r   rn   r  )rz   rn   r  ru   rO  r   s         rW   overwrite_payload!LocalCollection.overwrite_payloadh
  sX     ##H-H((8$C ();G)D E KDLL) r   rr   c                     U R                  U5      nU H^  nU R                  U   nU H5  nX`R                  U   ;   d  M  U R                  U   R                  U5        M7     U R	                  U5        M`     g r   )r  ru   rn   r  r  )rz   rr   r  ru   rO  r   r   s          rW   delete_payloadLocalCollection.delete_payloadx
  sl     ##H-H((8$C,,s++LL%))#.  ) r   c                     U R                  U5      nU H2  nU R                  U   n0 U R                  U'   U R                  U5        M4     g r   )r  ru   rn   r  )rz   r  ru   rO  r   s        rW   clear_payloadLocalCollection.clear_payload
  sH     ##H-H((8$C "DLL) r   update_operationsc                    U GH  n[        U[        R                  5      (       a  UR                  n[        U[        R                  5      (       a&  U R                  UR
                  UR                  S9  Mt  [        U[        R                  5      (       a&  U R                  UR                  UR                  S9  M  [        S[        UR                  5       35      e[        U[        R                  5      (       a  U R                  UR                  5        GM  [        U[        R                  5      (       ap  UR                  R                  =(       d    UR                  R                  nU R                  UR                  R                   XBR                  R"                  5        GM  [        U[        R$                  5      (       a\  UR&                  R                  =(       d    UR&                  R                  nU R'                  UR&                  R                   U5        GM!  [        U[        R(                  5      (       a\  UR*                  R                  =(       d    UR*                  R                  nU R+                  UR*                  R,                  U5        GM  [        U[        R.                  5      (       a  U R1                  UR0                  5        GM  [        U[        R2                  5      (       a3  UR4                  nU R5                  UR                  UR                  S9  GM+  [        U[        R6                  5      (       a\  UR8                  R                  =(       d    UR8                  R                  nU R9                  UR8                  R:                  U5        GM  [        S[        U5       35      e   g )Nr  zUnsupported upsert type: zUnsupported update operation: )r   r   UpsertOperationr  PointsBatchr  r  
PointsListr[  r   r   DeleteOperationr  SetPayloadOperationr  rf  rn   r   OverwritePayloadOperationr  DeletePayloadOperationr  rr   ClearPayloadOperationr  UpdateVectorsOperationr  DeleteVectorsOperationr  r   )rz   r  	update_opupsert_structpoints_selectorr  s         rW   batch_update_points#LocalCollection.batch_update_points
  s    +I)V%;%;<< ) 0 0mV-?-?@@KK 3 3=C^C^K_v/@/@AAKK 4 4MD_D_K`$'@iFVFVAW@X%YZZIv'='=>>I,,-Iv'A'ABB"+"7"7">">"^)BWBWB^B^  ))11?DYDYD]D] Iv'G'GHH//66\):U:U:\:\   &&y'B'B'J'JO\Iv'D'DEE,,33Vy7O7O7V7V   ##I$<$<$A$A?SIv'C'CDD""9#:#:;Iv'D'DEE!*!9!9##"))9U9U $  Iv'D'DEE,,33Vy7O7O7V7V   ##I$<$<$C$C_U #A$y/AR!STTO +r   
new_configc                 p    XR                   ;  a  [        SU S35      eX R                  R                   U'   g )Nr   z! does not exist in the collection)rf   r   r\   )rz   r   r$  s      rW   update_sparse_vectors_config,LocalCollection.update_sparse_vectors_config
  s7     111w{m3TUVV2<"";/r   c                    [         R                  " [         R                  R                  [         R                  R
                  SU R                  5       R                  S0 [         R                  " [         R                  " U R                  R                  U R                  R                  U R                  R                  U R                  R                  U R                  R                  U R                  R                  S9[         R                   " SSSS9[         R"                  " SSS	9[         R$                  " S
SSSSSS9S U R                  R&                  S9S9$ )Nr   r   )rc   shard_numberreplication_factorwrite_consistency_factoron_disk_payloadrf      d   i'  )mef_constructfull_scan_threshold    )wal_capacity_mbwal_segments_aheadg?i  r[      )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metadata)statusoptimizer_statusindexed_vectors_countpoints_countsegments_countpayload_schemar\   )r   CollectionInfoCollectionStatusGREENOptimizersStatusOneOfOKr   CollectionConfigCollectionParamsr\   rc   r)  r*  r+  r,  rf   
HnswConfig	WalConfigOptimizersConfigr@  r   s    rW   infoLocalCollection.info
  s   $$**00#99<<"#++**.. KK//!%!9!9'+{{'E'E-1[[-Q-Q$(KK$?$?#';;#=#= #--!$(-
 "++$&'( "(!8!8&)-1+,','(-." %)--7$
 $	
r   )rs   r\   rp   rt   ru   rv   rm   re   rn   rw   rf   rl   rx   rc   rd   )NF)rM   N)rK   )T)TT)Fr   )Nre  NTFN)	NNNre  r   TFNN)NNNTF)NNNNNFFN)NNNNre     TFNNN)Nre  r   TFNNN)Nre  )TF)NNNNNNN)NNNre  r   TFNNNNN)NNNre  r   NTFNNNNNN)NrS  re  N)NNNNNN)NNNre  r   TFNNNN)Nre  NNTF)Nre  NTF)Nre  TF)__name__
__module____qualname____firstlineno____doc__r  r   CreateCollectionr  ro   r~   staticmethodr   r   r   rb   r   r   r   r   classmethodr   rH  r   r   ry   rq   r   r   r   r   rB   r(   
NumpyArrayr   r   r   r   r   r   r   r   PayloadSelectorr  Payloadr  VectorStructr  r  rh   r   r   r&  r   rQ  QueryPrefetchr_  rb  r\  r]  r^  r  DocumentImageInferenceObjectWithLookupInterfacer  r  Vectorr    rC   r)   r  r  r  r  rv  r  r@  r  r  r  r  r  r  r  r  r#  r*  r-  r   r  r?  r   r?   r,   rH  rM  r  rR  rg  r  rY  r   rU  rV  r  Mmrr  r  rw  rx  r  r  r  r  r  r  r  PointVectorsr  r   r  r  r  r  r  r  r  r  r  r  r  UpdateOperationr"  SparseVectorParamsr&  rG  rQ  __static_attributes__r   r   rW   rY   rY   ]   s    "
  $05	0''0 *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\ / KCe$%&4;  Cd5k**+, 	 
 %%&  C))*+ C**+, 	 C))*
+ /  
s$'88;KKeN^N^^^	_!/ /b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  FJ)) Xc]*U-B-BB) 
	) )\ FJ 	QQ Xc]*U-B-BBQ 	Q
 
Q EJ!!&*Xc]&:T&A!			t	#!L #', 4Z 
	4 c4i 2 -1!EI-2(,-h KCe$%&4;  Cd5k**+, 	 
 %%&  C))*+    C**+	, 
 C))*+ h" llT)#h$ %h& d
'h( Xc]*U-B-BB)h* Xc]*+h, -h. 
f  	!/hX %)04,0EI-2(, 79{{T!79 u~~&-79 llT)	79
 79 79 Xc]*U-B-BB79 Xc]*79 79 Tz79 79 
		79r$%.. $T%:K:K5L $X !,0(,EI-2Id5,,-.I {{I 	I
 I TzI llT)I I Xc]*U-B-BBI Xc]*I 
e	 IZ %) ,0 !EJ-2(,y{{T!y Tzy llT)	y
 Tzy d
y Xc]*U-B-BBy Xc]*y y 
e	 yR  AE,0EI-2(,8<;?1W9W9 MM5k4;    ! kk	
  nn kk ##$ 		W9 TzW9  ..4#77$>!W9" llT)#W9$ %W9& 'W9( Xc]*U-B-BB)W9* Xc]*+W9, -W9. ..5/W90 !91W92 
		3W9N .2FJ-2(,8<;?+I9uo
tE{

*_<~MPUP`P```


 

 
!
!"   	 


I9 I9 mmd*I9 I9  !I9" Xc]*V-C-CC#I9$ Xc]*%I9& 'I9( ..5)I9* !9+I9, 
		-I9\ -1	1.1. llT)1. 	1.
 
		1.l FJ-2	emm$ Xc]*U-B-BB Xc]*	
 
fmm	8 9=8<37,0 ;?.2_
6--.5_
 6--.5_
 ))D0	_

 llT)_
 Tz_
 !9_
 "%t_
 
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		  	  9=8<,0 ;?.237R16--.5R1 6--.5R1 llT)	R1
 TzR1 !9R1 "%tR1 ))D0R1 
O#n4v7J7JJUM]M]]	
R1l 9=8<,0EI-2(, ;?.237"
6--.5"
 6--.5"
 llT)	"

 "
 "
 Xc]*U-B-BB"
 Xc]*"
 "
 Tz"
 !9"
 "%t"
 ))D0"
 
f  	!"
N 9=8<-1(,FJ-2 ;?.28<;?37!+
+
 6--.5+
 6--.5	+

 mmd*+
 +
 +
 +
 Xc]*V-C-CC+
 Xc]*+
 Tz+
 !9+
 "%t+
 ..5+
 !9+
  ))D0!+
" 
		#+
^ -1  
llT) 
  
 	 

 Tz 
 
	*	* 
H -1 
llT)
 
 	

 Tz
 
	(	(
2 -1 3llT)3 3 	3
 Tz3 
tO$d4+<&==	>3j ""T)7HWZ	v}}emmd22	3 &DcF../Dc=NDc]`Dc	[4 12D9I4JDQVQ^Q^L__
DcP -17;,0 ;?.2-
""T)-
 &,,-4-
 llT)	-

 Tz-
 !9-
 "%t-
 
[		
-
b -17;,0EI-2 ;?.2(,>
""T)>
 &,,-4>
 llT)	>

 >
 >
 Xc]*U-B-BB>
 Xc]*>
 Tz>
 !9>
 "%t>
 >
 
f  	!>
@ IV%;%; Ic3h I I .2)-'+EI-2"
||d*"
 "
 --$&	"

 $"
 Xc]*U-B-BB"
 Xc]*"
 
tELL!5==4#77	8"
H@%,,"5 @ASAS @ .2'+EI-2# ||d*#  #  $	# 
 Xc]*U-B-BB#  Xc]*#  
tELL!5==4#77	8# P .2EI-2H--H ||d*H 	H
 Xc]*U-B-BBH Xc]*H 
tELL!5==4#77	8H\ FJ-2!! llT)! Xc]*U-B-BB	!
 Xc]*! 
e	 !P -1!EI-2(,NE{\1De4EEN YYN Tz	N
 llT)N N d
N Xc]*U-B-BBN Xc]*N N 
f  	!N:mHV//0mH 5kL04U3DDmH 	mH
 mH mH 
f  	!mH^4 ""4  !f&8&8!9:4  	4 
 Xc]*U-B-BB4  Xc]*4  
f  	!4 l96#5#5 9$ 9va; 2 2 a;t a;L .28(!!8( ||d*8( 
	8(z .2)++,v||;) ||d*) 
	)V@@!%c4;+ETRW[HY+Y&Y!Z@	@B Z^*u112*CH<<RVCV*	*0*#* MM6))*+##$ !!"	* 
*"	2tEMM2 	2t 	2ELL T&BXBX=Y 
M MM6))*+##$ !!"M 
f$$	%M(
 MM6))*+##$ !!"
 

(v'='= ($ (& ** MM6))*+##$ !!"	* 4Z* 
*4** MM6))*+##$ !!"	* 
* *sm* MM6))*+##$ !!"	* 
*$* MM6))*+##$ !!"* 
*+U#E$9$9:+U 
+UZ==,2,E,E=	=%
f++ %
r   rY   r(  r  c                 p   [        U5      S:X  a  U $ [        R                  " US9nU c  [        R                  " U/S9n U $ [	        U 5      n U c   eU R
                  c
  U/U l        U $ [        U R
                  [        5      (       a  U R
                  R                  U5        U $ U R
                  U/U l        U $ )Nr   has_id)must_not)	r   r   HasIdConditionr  r	   ro  r   rq   r   )r(  r  ignore_mentioned_idss      rW   r  r  
  s     =Q!00F}}/C.DE   -'''  (%9$:L!  --t44!!(()=>  &2%:%:<P$QL!r   ru   c                 p   [        U5      S:X  a  U $ [        R                  " US9nU c  [        R                  " U/S9n U $ [	        U 5      n U c   eU R
                  c
  U/U l        U $ [        U R
                  [        5      (       a  U R
                  R                  U5        U $ U R
                  U/U l        U $ )Nr   rm  )must)	r   r   rp  r  r	   rs  r   rq   r   )r(  ru   include_idss      rW   r{  r{    s     3x1}''s3K}};-8   -'''$!,L  ))400$$[1  ".!2!2K @Lr   r  c           	          [         R                  " U R                  SSU R                  U R                  U R
                  S9$ )Nr   rw  )r   r8  r7  rn   r   rf  )r   r   r   rn   r   rf  )r  s    rW   r  r  &  s9    99}}&& r   rS  r)  c                 x   U /nU(       a  UR                  5       n[        U[        5      (       a  UR                  U5        M?  Xl        UR
                  nUc  MV  [        U[        5      (       a  UR                  U5        O0[        U[        R                  5      (       a  UR                  U5        U(       a  M  gg)z<Set .limit on all nested Prefetch objects without recursion.N)	r  r   rq   extendr)  rS  r   ra  r   )rS  r)  r  currentnesteds        rW   r  r  1  s     ;CE
))+gt$$LL!  !!>fd##LL //LL ' %r   )urQ   r   r  collectionsr   r   typingr   r   r   r   copyr	   r  numpyrh   qdrant_clientr
   $qdrant_client.common.client_warningsr   qdrant_client._pydantic_compatr   r   rU   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&   r'   #qdrant_client.local.multi_distancesr(   r)   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   r7   +qdrant_client.local.payload_value_extractorr8   r9   (qdrant_client.local.payload_value_setterr:   qdrant_client.local.persistencer;   qdrant_client.local.sparser<   r=   r>   $qdrant_client.local.sparse_distancesr?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   r   r  rY   r  rq   r  r  r{  r  r  ra  r   r  r   r   rW   <module>r     s      0     & B _ ; F ; % 1 ` ` T _       O 7 T P E A 
     
V# V# VV*
 V*
rT,,%6:5==6I
\\0,,%,0,?
\\05<< E4E4E !nntENN33!<?!	!r   