
    Ig{                    D   d dl Z d dlZd dlZd dlmZmZ d dlmZmZm	Z	m
Z
mZmZmZmZmZmZ d dlmZ d dlZd dlmZ d dlmZmZ d dlmZ d dlmZ d d	l m!Z! d d
l"m#Z# d dl$m%Z%m&Z& d dl'm(Z(m)Z)m*Z*m+Z+ d dl,m-Z-m.Z. d dl/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: d dl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZD d dlEmFZFmGZG d dlHmIZI d dlJmKZK d dlLmMZMmNZN d dlOmPZP d dlQmRZR d dlSmTZTmUZUmVZV d dlWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZb dZcdZddedefdZ G d d      Zedeej                     d e
ej                     dej                  fd!Zhdeej                     d"e
ej                     dej                  fd#Zid$ej                  dejL                  fd%Zkd&ej                  d'emdej                  fd(Zny))    N)OrderedDictdefaultdict)
AnyCallableDictListOptionalSequenceTupleUnionget_argsSet)deepcopy)grpc)	constructto_jsonable_python)common_types)get_args_subscribed)
GrpcToRest)models)PointIdsListScoredPoint)DistanceExtendedPointIdSparseVector
OrderValue)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)	MultiQueryVectorMultiRecoQueryMultiDiscoveryQueryMultiContextQueryMultiContextPaircalculate_multi_distance%calculate_multi_recommend_best_scores calculate_multi_discovery_scorescalculate_multi_context_scores)JsonPathItemparse_json_path)to_order_value)calculate_payload_mask)value_by_key
parse_uuid)set_value_by_key)CollectionPersistence)empty_sparse_vectorsort_sparse_vectorvalidate_sparse_vector)SparseContextPairSparseContextQuerySparseDiscoveryQuerySparseQueryVectorSparseRecoQuerycalculate_distance_sparsecalculate_sparse_context_scores!calculate_sparse_discovery_scores&calculate_sparse_recommend_best_scoresmerge_positive_and_negative_avg
sparse_avg g  >xreturnc                     	 t        j                  t        j                  | d            S # t        $ r2 t        j                  t        j                  | dt                    cY S w xY w)NT)	allow_nan)rM   default)jsonloadsdumps	Exception_to_jsonable_pythonrJ   s    a/var/www/html/answerous/venv/lib/python3.12/site-packages/qdrant_client/local/local_collection.pyr   r   T   sP    Vzz$**Q$788 Vzz$**Q$@STUUVs   ), 8A'&A'c            !          e Zd ZdZ	 	 d}dej
                  dee   deddfdZ	e
deeej                  f   deeeej                  f   eeej                  f   f   fd	       Zd~d
ZdededdfdZdededdfdZedededefd       ZdededefdZd~dZedeee   eeee   f   eee      eeeee      f   ej8                  ej:                  eeeef   eeef   e eee f   ejB                  f   deeeeee ejB                  f   f   fd       Z"dedej                  fdZ#edededefd       Z$edededefd       Z%e	 dde&de'egef   dede&fd       Z(e	 dde)d eee*e   ejV                  f   dee)   fd!       Z,	 	 dd"ed eee*e   ejV                  f   d#edeejZ                     fd$Z.	 dd"ed%eee*e   df   deej^                     fd&Z0	 dd'eejb                     dee   de2jf                  fd(Z4	 	 	 	 	 	 ddeee   eeee   f   eee      eeeee      f   ej8                  ej:                  eeeef   eeeef   e eee f   ejB                  f   d)eejb                     d*ed+ee   d eee*e   ejV                  f   d%eee*e   f   d,ee   deejj                     fd-Z6	 	 	 	 	 	 	 	 	 dd.eejn                     d/eeejp                        d)eejb                     d*ed+ed eee*e   ejV                  f   d%eee*e   f   d,ee   d0ee   d1e&dejr                  fd2Z:d/ejp                  d+edeejj                     fd3Z;	 	 	 	 	 dd4eeejj                        d.ejn                  d*ed+ed0ee   d)eejb                     d,ee   d eee*e   ejV                  f   d%eee*e   f   deejj                     fd5Z<	 	 	 	 	 	 	 	 dd.eejn                     d0ee   d)eejb                     d*ee   d+ee   d eee*e   ejV                  f   d%eee*e   f   d,ee   deejj                     fd6Z=	 	 	 	 	 	 	 	 	 	 	 dd7ed.eej|                  ee   eee      ej                   ejn                  ejB                  ej~                  df   d0ee   d/eejp                  eejp                     df   d)eejb                     d*ed8ed eee*e   ejV                  f   d%eee*e   f   d,ee   d9eej                     d:ed    dej                  fd;ZB	 	 	 	 	 	 	 	 ddee*e   eee      eeeej                  eDeEeFejB                  f   f   ej8                  ej:                  eDeEeFejB                  f	   d7ed)eejb                     d*ed8ed eee*e   ejV                  f   d%eee*e   f   d,ee   d9eej                     d:ed    dej                  fd<ZG	 	 dded=eejb                     d*edej                  fd>ZI	 	 dd?e*ej|                     d eee*e   ejV                  f   d%eee*e   f   deej                     fd@ZK	 	 	 	 	 	 	 ddAee*ej                        dBee*ej                        dCeej                     d)eejb                     d0ee   dDed    dEee   deeee      eee      eej                      eej                      eeee         eeee         ejb                  f   fdFZNe
dGeee      dHeee      dejB                  fdI       ZOe
dGeej                      dHeej                      dej                   fdJ       ZP	 	 	 	 	 	 	 ddAee*ej                        dBee*ej                        d)eejb                     d0ee   dDed    dEee   dCeej                     deeeDeEeFej                   ejB                  f   ejb                  f   fdKZQ	 	 	 	 	 	 	 	 	 	 	 	 ddAee*ej                        dBee*ej                        d)eejb                     d*ed+ed eee*e   ejV                  f   d%eee*e   f   d,ee   d0ee   dDed    dEee   dCeej                     deejj                     fdLZR	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd7edAee*ej                        dBee*ej                        d)eejb                     d*ed8ed,ee   d eee*e   ejV                  f   d%eee*e   f   d0ee   dDed    dEee   d9eej                     d:ed    dCeej                     dej                  f dMZS	 	 	 	 dd)eejb                     d*edNed0ee   dej                  f
dOZU	 	 	 	 dd)eejb                     d*edNed0ee   dej                  f
dPZW	 	 	 	 dd)eejb                     d*edNed0ee   deeeX   eee5      f   f
dQZYe
dReej                     dSd dedeej                  ej|                  f   fdT       ZZdUeej                     dSd dedeee[   ee\   ee]   eej|                     f   fdVZ^	 	 	 	 	 	 ddReej                     dUee*ej                        d)eejb                     d0ee   dDed    dEee   deeej                     ee[   ee\   ee]   ejb                  f   fdWZ_	 	 	 	 	 	 	 	 	 	 	 ddReej                     dUee*ej                        d)eejb                     d*ed+ed eee*e   ejV                  f   d%eee*e   f   d0ee   dDed    dEee   d,ee   deejj                     fdXZ`edYej                  deeef   fdZ       Za	 	 	 	 	 	 dd[eejb                     d*ed\eej                     d+eej|                     d eee*e   ejV                  f   d%eee*e   f   deeej                     eej|                     f   fd]Zcdd^eejb                     dej                  fd_Ze	 	 	 	 	 dd[eejb                     d*ed+eej|                     d eee*e   ejV                  f   d%eee*e   f   deeej                     eej|                     f   fd`Zf	 	 	 	 dd\ej                  d[eejb                     d*ed eee*e   ejV                  f   d%eee*e   f   deeej                     eej|                     f   fdaZg	 	 dd*ed)eejb                     d eee*e   ejV                  f   d%eee*e   f   deejj                     f
dbZhdcej                  ddfddZjdcej                  ddfdeZkdcej                  ddfdfZldgee*ej                     ej                  f   ddfdhZnd"edeeeee   ef   f   ddfdiZodge*ej                     ddfdjZqde*e   dkeejb                  eej                     ej                  ej                  f   ddfdlZtd?eej|                     ddfdmZudnejb                  deej                     fdoZvdkeejb                  eej                     ej                  ej                  f   deej                     fdpZwdkeejb                  eej                     ej                  ej                  f   ddfdqZxdYej                  ddfdrZy	 ddejZ                  dkeejb                  eej                     ej                  ej                  f   dee   ddfdsZzdejZ                  dkeejb                  eej                     ej                  ej                  f   ddfdtZ{due*e   dkeejb                  eej                     ej                  ej                  f   ddfdvZ|dkeejb                  eej                     ej                  ej                  f   ddfdwZ}dxe*ej                     ddfdyZdedzej                   ddfd{Zdej                  fd|Zy)LocalCollectionzb
    LocalCollection is a class that represents a collection of vectors in the local storage.
    Nconfiglocationforce_disable_check_same_threadrK   c           	      4   | j                  |j                        \  | _        | _        |j                  }| j                  j                         D ci c]7  \  }}|t        j                  d|j                  ft        j                        9 c}}| _        |$|j                         D ci c]  \  }}|g 
 c}}ni | _        i | _
        | j                  D ci c]  }|g  c}| _        g | _        t        j                  dt              | _        t        | j                  j!                               t        | j                  j!                               z   t        | j                  j!                               z   | _        | j"                  D ci c]  }|t        j                  dt                c}| _        i | _        g | _        |du| _        d| _        || _        |t1        ||      | _        | j3                          yc c}}w c c}}w c c}w c c}w )a2  
        Create or load a collection from the local storage.
        Args:
            location: path to the collection directory. If None, the collection will be created in memory.
            force_disable_check_same_thread: force disable check_same_thread for sqlite3 connection. default: False
        r   dtypeN)_resolve_vectors_configvectorsvectors_configmultivectors_configsparse_vectorsitemsnpzerossizefloat32sparse_vectors_idfmultivectorspayloadbooldeletedlistkeys_all_vectors_keysdeleted_per_vectoridsids_inv
persistentstoragerX   r:   load_vectors)selfrX   rY   rZ   sparse_vectors_confignameparamss          rU   __init__zLocalCollection.__init__`   s    9=8T8TNN9
5T5 !' 5 5 !% 3 3 9 9 ;5
f "((Av{{+2::>>5
 %0 +@*E*E*GH,$T2XH 	  	 "&!9!9@
D"H@
 .0xx.""$%4&&++-./4$$))+,- 	 7;6L6L#
.2D"((1D))#
 7957"$.0;Z[DLA5

 I@
#
s   <H,H

H#Hr_   c                     i }i }t        | t        j                        r$| j                  t        | i}||fS t        | i}||fS | j                         D ]  \  }}|j                  |||<   |||<    ||fS N)
isinstancer   VectorParamsmultivector_configDEFAULT_VECTOR_NAMErc   )r_   r`   ra   rx   ry   s        rU   r^   z'LocalCollection._resolve_vectors_config   s      gv223))5':G&D# "#666 #6w!?!#666#MMO 	.LD&((4,2#D)'-t$		. 222    c                 R    | j                   | j                   j                          y y r|   )rt   closerv   s    rU   r   zLocalCollection.close   s!    <<#LL  $r   vectorvector_namec                     || j                   vrt        t              | j                   |<   |j                  D ]  }| j                   |   |xx   dz  cc<    y N   )rh   r   intindicesrv   r   r   idxs       rU   _update_idf_appendz"LocalCollection._update_idf_append   sS    d5553>s3CD##K0>> 	;C##K05:5	;r   c                 Z    |j                   D ]  }| j                  |   |xx   dz  cc<    y r   )r   rh   r   s       rU   _update_idf_removez"LocalCollection._update_idf_remove   s0    >> 	;C##K05:5	;r   dfnc                 J    t        j                  ||z
  dz   |dz   z  dz         S )Ng      ?r   )mathlog)clsr   r   s      rU   _compute_idfzLocalCollection._compute_idf   s)     xxR#"s(3a788r   c                 J   | j                  d       j                   }g }| j                  |   }t        |j                  |j                        D ]=  \  }}|j                  |d      }| j                  ||      }	|j                  ||	z         ? t        |j                  |      S )N)count_filterr   )r   values)	countrh   zipr   r   getr   appendr   )
rv   r   r   num_docs
new_values	idf_storer   valuedocument_frequencyidfs
             rU   _rescore_idfzLocalCollection._rescore_idf   s    ::4:066
++K8	fnnfmm< 	+JC!*sA!6##$6ACeck*	+
 FNN:FFr   c                 6	   | j                   t        t              }t        t              }t        t              }g }t        | j                   j	                               D ]n  \  }}|| j
                  |j                  <   | j                  j                  |j                         | j                  j                  t        |j                        xs i        |j                  }t        |j                  t              rt        |j                  i}t        | j                  j                               }|D ]  }	|j!                  |	      }
|
||	   j                  |
       +||	   j                  t#        j$                  | j&                  |	   j(                  t"        j*                               |j                  ||	f        t        | j,                  j                               }|D ]Y  }	|j!                  |	      }
|
||	   j                  |
       +||	   j                  t/                      |j                  ||	f       [ t        | j0                  j                               }|D ]d  }	|j!                  |	      }
|
||	   j                  |
       +||	   j                  t#        j2                  g              |j                  ||	f       f q |j5                         D ]b  \  }	}t#        j2                  |      | j                  |	<   t#        j6                  t9        | j                        t:              | j<                  |	<   d |j5                         D ]h  \  }	}|| j,                  |	<   t#        j6                  t9        | j                        t:              | j<                  |	<   |D ]  }| j?                  ||	        j |j5                         D ]p  \  }	}|D cg c]  }t#        j2                  |       c}| j0                  |	<   t#        j6                  t9        | j                        t:              | j<                  |	<   r |D ]  \  }}	d| j<                  |	   |<    t#        j6                  t9        | j                        t:              | _         y y c c}w )Nr\   r   )!rt   r   rm   	enumerateloadrq   idrr   r   rj   r   r   r}   r   r_   rn   r   rd   onesr`   rf   rg   rb   r;   ri   arrayrc   re   lenrk   rp   r   rl   )rv   r_   rb   ri   deleted_idsr   pointloaded_vectorall_dense_vector_namesrx   vall_sparse_vector_namesall_multivector_namesnamed_vectorsr   s                  rU   ru   zLocalCollection.load_vectors   s   <<#!$'G(.N&t,LK'(9(9(;< .8
U%("##EHH- ##$6u}}$E$KL !& ellD1%8%,,$GM *.dll.?.?.A)B&2 8D%))$/A},,Q/,,GGD$7$7$=$B$B"**U $**C;78 +/t/B/B/G/G/I*J'3 8D%))$/A}&t,33A6&t,334G4IJ#**C;78 )-T->->-C-C-E(F%1 8D%))$/A}$T*11!4$T*11"((2,?#**C;78Q.8b (/}} X#m%'XXm%<T"02T\\9JRV0W''-X
 (6';';'= :#m,9##D)02T\\9JRV0W''-+ :F++FD9:: (4'9'9'; X#mJW*X288F+;*X!!$'02T\\9JRV0W''-X
 ) 7	T56''-c27 88C$5TBDLW $H +Ys   Rquery_vectorc                    t        |t              r4|\  }}t        |t              rt        j                  |      }||fS |}||fS t        |t        j
                        rt        }|}||fS t        |t        j                        r/|j                  }t        j                  |j                        }||fS t        |t        j                        r|j                  }|j                  }||fS t        |t              rt        }t        j                  |      }||fS t        |t        t                    rt        }|}||fS t        |t        t                    rt        }|}||fS t        dt!        |             )NzUnsupported vector type )r}   tuplerm   rd   r   ndarrayr   typesNamedVectorrx   r   NamedSparseVectorr   r!   r*   
ValueErrortype)r   r   rx   queryr   s        rU   _resolve_query_vector_namez*LocalCollection._resolve_query_vector_name  sz   . lE*&KD%%&%0 V|- , V|+ bjj1&D!F& V|% e&7&78$$DXXl112F  V| e&=&=>$$D!((F V| d+&DXXl+F V| h/?&@A&D!F V| h/?&@A&D!F V| 7\8J7KLMMr   rx   c                    t        | j                  j                  t              r@|| j                  j                  v r| j                  j                  |   S t	        d| d      t        | j                  j                  t
        j                        r.|t        k7  rt	        d| d      | j                  j                  S t	        d| j                  j                         )NVector  is not found in the collectionzMalformed config.vectors: )r}   rX   r_   dictr   r   r~   r   )rv   rx   s     rU   get_vector_paramsz!LocalCollection.get_vector_paramsH  s    dkk))40t{{***{{**400 74&0O!PQQdkk))6+>+>?** 74&0O!PQQ;;&&&5dkk6I6I5JKLLr   patternkeyc                     |j                  dd      j                  d      }|j                  dd      j                  d      }t        d t        ||      D              S )a  
        >>> LocalCollection._check_include_pattern('a', 'a')
        True
        >>> LocalCollection._check_include_pattern('a.b', 'b')
        False
        >>> LocalCollection._check_include_pattern('a.b', 'a.b')
        True
        >>> LocalCollection._check_include_pattern('a.b', 'a.b.c')
        True
        >>> LocalCollection._check_include_pattern('a.b[]', 'a.b[].c')
        True
        >>> LocalCollection._check_include_pattern('a.b[]', 'a.b.c')
        False
        >>> LocalCollection._check_include_pattern('a', 'a.b')
        True
        >>> LocalCollection._check_include_pattern('a.b', 'a')
        True
        >>> LocalCollection._check_include_pattern('a', 'aa.b.c')
        False
        >>> LocalCollection._check_include_pattern('a_b', 'a')
        False
        .[.[c              3   ,   K   | ]  \  }}||k(    y wr|    .0pr   s      rU   	<genexpr>z9LocalCollection._check_include_pattern.<locals>.<genexpr>q       Dda16D   )replacesplitallr   r   r   r   pattern_parts	key_partss        rU   _check_include_patternz&LocalCollection._check_include_patternW  sR    0  T288=KKT*005	Dc-&CDDDr   c                     t        |      t        |      kD  ry|j                  dd      j                  d      }|j                  dd      j                  d      }t        d t	        ||      D              S )NFr   r   r   c              3   ,   K   | ]  \  }}||k(    y wr|   r   r   s      rU   r   z9LocalCollection._check_exclude_pattern.<locals>.<genexpr>y  r   r   )r   r   r   r   r   r   s        rU   _check_exclude_patternz&LocalCollection._check_exclude_patterns  sc    w<#c("T288=KKT*005	Dc-&CDDDr   rj   	predicatepathc                 p   t        |t              rNi }|dk7  r|dz   }n|}|j                         D ]*  \  }} |||z         s| j                  ||||z         ||<   , |S t        |t              rGg }|dz   }t        |      D ]0  \  }	} ||      s|j                  | j                  |||             2 |S |S )NrI   r   z[])r}   r   rc   _filter_payloadrm   r   r   )
r   rj   r   r   resnew_pathr   r   	res_arrayr   s
             rU   r   zLocalCollection._filter_payload{  s     gt$Crz#:%mmo U
UX^,"225)XPS^TCHU J&I$;D'0 R
UT?$$S%8%8	4%PQR Nr   with_payloadc                 @    sy t        t              r|S t        t              r j                  | fd      S t        t        j
                        r j                  | fd      S t        t        j                        r j                  | fd      S |S )Nc                 8     t        t         fd            S )Nc                 (    j                  |       S r|   r   r   r   r   s    rU   <lambda>zDLocalCollection._process_payload.<locals>.<lambda>.<locals>.<lambda>      (B(B7C(P r   )anymapr   r   r   s   `rU   r   z2LocalCollection._process_payload.<locals>.<lambda>  s    CPR^_ r   c                 L     t        t         fdj                              S )Nc                 (    j                  |       S r|   r   r   s    rU   r   zDLocalCollection._process_payload.<locals>.<lambda>.<locals>.<lambda>  r   r   )r   r   includer   s   `rU   r   z2LocalCollection._process_payload.<locals>.<lambda>  s     CP$,, r   c                 L     t        t         fdj                              S )Nc                 *    j                  |        S r|   )r   r   s    rU   r   zDLocalCollection._process_payload.<locals>.<lambda>.<locals>.<lambda>  s    C,F,FwPS,T(T r   )r   r   excluder   s   `rU   r   z2LocalCollection._process_payload.<locals>.<lambda>  s     CT$,, r   )r}   rk   rm   r   r   PayloadSelectorIncludePayloadSelectorExclude)r   rj   r   s   ` `rU   _process_payloadz LocalCollection._process_payload  s     lD)NlD)&&  lF$A$AB&&  lF$A$AB&&  r   r   return_copyc                 b    | j                   |   }| j                  ||      }|rt        |      S |S r|   )rj   r   r   )rv   r   r   r   rj   processed_payloads         rU   _get_payloadzLocalCollection._get_payload  s9     ,,s# 11'<H.9x)*P?PPr   with_vectorsc                 z   |du s|y | j                   D ci c]5  }| j                  |   |   s!|| j                   |   |   j                         7 }}| j                  D ci c]'  }| j                  |   |   s|| j                  |   |   ) }}| j                  D ci c]5  }| j                  |   |   s!|| j                  |   |   j                         7 }}i |||}t        |t              r|D ci c]  }||v s|||    }}t        |      dk(  rt        |v r	|t           S |S c c}w c c}w c c}w c c}w )NFr   )	r_   rp   tolistrb   ri   r}   rm   r   r   )rv   r   r   rx   dense_vectorsrb   ri   all_vectorss           rU   _get_vectorszLocalCollection._get_vectors  s    5 L$8 
**405 $,,t$S)0022
 
 ++
**405 $%%d+C00
 
 ))
**405 $##D)#.5577
 
 JI.ILIlD)?KcttWbOb4T!22cKc{q %8K%G2337


 ds   :D) ,D.:D34	D8>D8payload_filterc                     t        | j                  || j                        }|| j                   z  }||| j                  |    z  }|S )zo
        Calculate mask for filtered payload and non-deleted points. True - accepted, False - rejected
        )payloadsr  rr   )r6   rj   rr   rl   rp   )rv   r  r   payload_maskmasks        rU   _payload_and_non_deleted_maskz-LocalCollection._payload_and_non_deleted_mask  sT     .\\)LL
 t||m+"422;???Dr   query_filterlimitoffsetscore_thresholdc                 
     j                  |      \  }g }d}	d}
t        |t        t                    r j                  vrt        d d       j                     } j                  j                     j                  t        j                  j                  k(  rd}
t        j                  }d}	nt        |t        t                    s2t        |t        j                        r`t!        |j"                        dk(  rH j$                  vrt        d d       j$                     } j'                        j(                  }nG j*                  vrt        d d       j*                     } j'                        j(                  }|d t!         j,                         }t        |t        j                        r6t!        |j"                        dk(  rt/        |||      }nt1        |||      }nt        |t2              rt5        |||      }nt        |t6              r%|
r|j9                   fd	      }t;        ||      }n^t        |t<              rt?        |||      }n?t        |t@              rtC        |||      }n t        |tD              r$|
r|j9                   fd
      }tG        ||      }nt        |tH              rtK        |||      }nt        |tL              rtO        |||      }nt        |tP              r$|
r|j9                   fd      }tS        ||      }n|t        |tT              rtW        |||      }n^t        |tX              r7t[        |       |
r j]                  |      }t_        |      }ta        ||      }nt        dtc        |              je                  |      }tg        |      }|th        jj                  k(  s*t        |t@        tL        t2        tH        tT        t<        f      rt        jl                  |      d d d   }nt        jl                  |      }||nd}|D ]  }t!        |      ||z   k\  r n||   s||   }|	r|t        jn                   k(  r8 jp                  |   }|!|th        jj                  k(  r||k  r	 nb||kD  r n[ts        t        jt                  |tw        |      d jy                  ||       j{                  ||            }|j}                  |        ||d  S )NFzSparse vector r   T   zMultivector zDense vector r   c                 (    j                  |       S r|   r   rJ   rx   rv   s    rU   r   z(LocalCollection.search.<locals>.<lambda>D      tGXGXYZ\`Ga r   c                 (    j                  |       S r|   r  r  s    rU   r   z(LocalCollection.search.<locals>.<lambda>L  r  r   c                 (    j                  |       S r|   r  r  s    rU   r   z(LocalCollection.search.<locals>.<lambda>T  r  r   zUnsupported query vector type )r   r   r   scoreversionrj   r   )?r   r}   r   rA   rb   r   rX   modifierr   ModifierIDFr   DOTr*   rd   r   r   shaperi   r   distancer_   rj   r'   r/   r$   r(   rB   transform_sparserF   r+   r0   r"   r&   r@   rE   r,   r1   r    r%   r?   rD   r-   r2   r   r=   r   r<   rC   r   r  r)   r#   BIGGER_IS_BETTERargsortinfrr   r   r   floatr   r  r   )rv   r   r  r	  r
  r   r   r  resultsparse_scoringrescore_idfr_   r  scoresr  required_orderorderr   r  point_idscored_pointrx   s   `                    @rU   searchzLocalCollection.search  s   0 "<<\Jl+- lH->$?@4... >$7V!WXX))$/G{{))$/88FOO<O<OO"||H!Nh/?&@A|RZZ0S9K9K5LPQ5Q4,,, <v5T!UVV''-G--d3<<H4<<' =6U!VWWll4(G--d3<<H-C-.lBJJ/<%%&!++L'8L1,Ri04\7HUFo6+<<=ab;L'RFn5:<RZ[Fn5/gxPF&:;+<<=ab6|WMF&9:5lGXVFl3-lGXNF&89+<<=ab4\7KF&783L'8TFl3"<0#00tD-l;L.|WEF >tL?Q>RSTU11,D1Q*84];;;z#!
@
 JJv&tt,EJJv&E!-1 	(C6{efn,93KE%BFF7"2||C(H*!]%C%CC..$""El))#|<((l;L MM,'=	(@ fgr   r   prefetchusingkwargsc
                 ,   g }|t        |t              r|n|g}t        |      dkD  r:|D cg c]  }| j                  ||       }}| j	                  |||||	||||	      }n| j                  ||	||||||      }t        j                  |      S c c}w )z
        Queries points in the local collection, resolving any prefetches first.

        Assumes all vectors have been homogenized so that there are no ids in the inputs
        r   	sourcesr   r	  r
  r-  r  r   r   r  r   r-  r  r	  r
  r   r   r  )points)r}   rm   r   	_prefetch_merge_sources_query_collectionr   QueryResponse)rv   r   r,  r  r	  r
  r   r   r  r-  r.  
prefetchesr1  scored_pointss                 rU   query_pointszLocalCollection.query_points  s    $ 
%/$%?hZJz?QHRSHt~~h7SGS !//))) / 0 
M !22))) / 3 	M ""-887 Ts   Bc                 V   |j                   |j                   |z   |_         g }|j                  3t        |j                  t              r|j                  n|j                  g}t	        |      dkD  rk|D cg c]  }| j                  ||       }}| j                  ||j                  |j                   d|j                  |j                  dd|j                  	      S | j                  |j                  |j                  |j                  |j                   ddd|j                        S c c}w )Nr   Fr0  r2  )r	  r,  r}   rm   r   r4  r5  r   r-  filterr  r6  )rv   r,  r
  inner_prefetchesinner_prefetchr1  s         rU   r4  zLocalCollection._prefetch  s#   >>%%^^f4HN(%/0A0A4%H!!xO`O`Na   1$M];I~v6G 
 &&nnnnnn%__"" ( 8 8 ' 
 
 ))nnnn%__nn"" ( 8 8 * 	 	%s   4D&r1  c
           
         t        |t        j                        r|j                  t        j                  j
                  k(  rt        |||z         }
nQ|j                  t        j                  j                  k(  rt        |||z         }
nt        d|j                   d      |
D cg c]  }|j                   }}| j                  |||	      }t        ||
      D ]'  \  }}|j                  |_        |j                  |_        ) |
|d  S t               }|D ]$  }|D ]  }|j!                  |j                          & t#        |      dk(  rg S t%        |t'        |            }| j)                  |||||||	|      S c c}w )N)	responsesr	  zFusion method z does not exist)r   r   r   r2  )r}   r   FusionQueryfusionFusionRRFr   DBSFr   r   r   retriever   rj   r   setaddr   _include_ids_in_filterrm   r6  )rv   r1  r   r	  r
  r-  r  r  r   r   fusedr   rq   fetched_pointsfetchedscoredsources_idssourcefilter_with_sourcess                      rU   r5  zLocalCollection._merge_sources  s    eV//0||v}}000.PVW!3!337'QVY_Q_` >%,,!OPP *//588/C/!]],\ + N $'~u#= /!( '/ >! %K! .# .EOOEHH-.. ;1$	&<\4P[K\&]#--!4!!-!-$3 . 	 	+ 0s   (E=c	                 \   |xs t         }|xs d}|xs d}|7| j                  |||z   ||      \  }	}
|	|d D cg c]  }t        |       c}S t        |t        j
                        r$| j                  ||j                  f||||||      S t        |t        j                        rW| j                  |j                  j                  |j                  j                  |j                  j                  |||||||
      S t        |t        j                        rB| j                  |j                  j                  |j                  j                   |||||||	      S t        |t        j"                        r#| j                  |j                   |||||||      S t        |t        j$                        rB| j                  ||j&                  ||z   ||	      \  }	}
|	|d D cg c]  }t        |       c}S t        |t        j(                        rW|j*                  t        j,                  j.                  k(  r| j1                  ||z   |||
      S t3        d|j*                         t        |t        j4                        rt7        d      | j                  ||f||||||      S c c}w c c}w )z_
        Performs the query on the collection, assuming it didn't have any prefetches.
        
   r   N)scroll_filterr	  r   r   r   r  r	  r
  r   r   r  )
positivenegativestrategyr-  r  r	  r
  r   r   r  )	targetcontextr-  r  r	  r
  r   r   r  )rY  r-  r  r	  r
  r   r   r  )rS  order_byr	  r   r   )r	  r  r   r   zUnknown Sample variant: z(Cannot perform fusion without prefetches)r   scrollrecord_to_scored_pointr}   r   NearestQueryr+  nearestRecommendQuery	recommendrU  rV  rW  DiscoverQuerydiscoverrX  rY  r    OrderByQueryrZ  SampleQuerysampleSampleRANDOM_sample_randomlyr   rA  AssertionError)rv   r   r-  r  r	  r
  r   r   r  records_records               rU   r6  z!LocalCollection._query_collection,  s    ,,1=*fn))	 % JGQ BIAQRv*62RRv223;;#U]]3))) /    v445>>111111))) / "   v334==~~,,..))) / ! 
 
 v223==))) / ! 	 	 v223*fn)) % JGQ BIAQRv*62RRv112||v}}333,,&.!-!-!-	 -   !#;ELL>!JKKv112 !KLL ;;#U^))) /   M Sn Ss   J$J)group_by
group_sizewith_lookupwith_lookup_collectionc           
      F   t        | j                        }|Ct        |t              r'g }|D ]  }|j	                  t        ||             |}! nt        ||      }| j                  ||||t        | j                        d|	|
      }t               }|j                  D ]  }t        |j                  t              st        |j                  |      }|7t        t        d |D                    }| j                  |j                  |      |_	        |D ]Z  }||vrt        j                  |g       ||<   t        ||   j                         |k\  r=||   j                   j	                  |       \  t        |j#                               d | }t        |t$              rt        j&                  |d d       }|V|T|D ]O  }|j)                  |j*                  g|j,                  |j.                        }t1        t3        |      d       |_        Q t        j6                  |      S )NT)r   r  r,  r-  r	  r   r   r  c              3   N   K   | ]  }t        |t        t        f      s|  y wr|   r}   strr   r   r   s     rU   r   z/LocalCollection.query_groups.<locals>.<genexpr>       #Y!z!cSVZ?XA#Y   %%r   hits
collectionr   r   rq   r   r   groups)r   rr   r}   rm   r   set_prefetch_limit_recursivelyr:  r   r3  rj   r   r7   rG  r   r   
PointGroupry  r   rt  
WithLookuprF  r   r   r   nextiterlookupGroupsResult)rv   rm  r   r-  r,  r  r	  rn  r   r   r  ro  rp  	max_limittmpr   r3  r~  r   group_valuesgroup_valuegroups_resultgroupr  s                           rU   query_groupszLocalCollection.query_groups  s   0 %	(D)! #AJJ=aKL"H# :(IN""%dll#%+ # 	
 ]] 	7EemmT2'x@L##Y|#Y YZL 11%--NEM+ 7f,*0*;*;{QS*TF;'vk*//0J>{#((//67	7* 26fmmo1Fv1Nk3' ++&!!K "'='I& 8/88
!,!9!9!,!9!9 9 
  $DL$78 ""-88r   c                 z   | j                  ||t        | j                        d||      }t               }|D ]  }t	        |j
                  t              st        |j
                  |      }|7t        t        d |D                    }| j                  |j
                  |      |_        |D ]Z  }||vrt        j                  |g       ||<   t        ||   j                        |k\  r=||   j                  j                  |       \  t        |j                               d | }t	        |	t               rt        j"                  |	d d       }	|	V|
T|D ]O  }|
j%                  |j&                  g|	j(                  |	j*                        }t-        t/        |      d       |_        Q t        j2                  |      S )NT)r   r  r	  r   r   r  c              3   N   K   | ]  }t        |t        t        f      s|  y wr|   rs  ru  s     rU   r   z0LocalCollection.search_groups.<locals>.<genexpr>"  rv  rw  rx  rz  r|  r}  )r+  r   rr   r   r}   rj   r   r7   rm   rG  r   r   r  ry  r   r   rt  r  rF  r   r   r   r  r  r  r  )rv   r   rm  r  r	  rn  r   r   r  ro  rp  r3  r~  r   r  r  r  r  r  s                      rU   search_groupszLocalCollection.search_groups  s   @ %%dll#%+  
  	7EemmT2'x@L##Y|#Y YZL 11%--NEM+ 7f,*0*;*;{QS*TF;'vk*//0J>{#((//67	7* 26fmmo1Fv1Nk3' ++&!!K "'='I& 8/88
!,!9!9!,!9!9 9 
  $DL$78 ""-88r   facet_filterc                 r   t        t              }| j                  |      }t        | j                        D ]  \  }}||   st        |t              st        ||      }|,t               }	|D ]P  }
t        |
      t        t        j                        vr(t        |
      }|rt        |      }
|	j                  |
       R |	D ]  }
||
xx   dz  cc<     t!        |j#                         d       d | D cg c]  \  }}t%        j&                  ||       }}}t        j(                  |      S c c}}w )Nr   c                     | d    | d   fS )Nr   r   r   rT   s    rU   r   z'LocalCollection.facet.<locals>.<lambda>p  s    !uadm r   r   )r   r   )ry  )r   r   r  r   rj   r}   r   r7   rG  r   r   r   
FacetValuer8   rt  rH  sortedrc   r   FacetValueHitFacetResponse)rv   r   r  r	  
facet_hitsr  r   rj   r   
values_setr   as_uuidr   r   ry  s                  rU   facetzLocalCollection.facetC  sE    3>c2B
11,?%dll3 	#LC9gt,!'3/F~ 14J  	"7"5e6F6F"GG %Q-GAq!	"   #1"#7	#@ !'  "+! u	!
u   uE:
 
 ""--
s   9!D3rq   c                    g }|D ]z  }|| j                   vr| j                   |   }| j                  |   dk(  r4|j                  t        j                  || j                  ||      | j                  ||                   | |S )Nr   r   rj   r   )rq   rl   r   r   Recordr   r  )rv   rq   r   r   r#  r)  r   s          rU   rF  zLocalCollection.retrievev  s      	Htxx'((8$C||C A%MM --c<@,,S,?	  r   rU  rV  rW  lookup_from_collectionlookup_from_vector_namec           
      `    dt         t        j                     dt        t        t        t
              t        t        j                     t        t        t        t
                 f   dd f fd}||n ||nt        }	||n|	||ng }||ng }|t        j                  j                  k(  rt        |      dk(  rOt        d      |t        j                  j                  k(  r't        |      dk(  rt        |      dk(  rt        d      g }
g }g }g }g }g }g j                  v }j                  v }|rj                   |||        |||       n?|rj                   |||        |||       nj                    |||
        |||       t#        |      }|
||||||fS )NexamplesaccrK   c                    | D ]  }t        |t        t        j                              r|j                  vrt        d| d      j                  |   }	   |   }t        |t        j                        r|j                         }|j                  |       k(  sj                  |       |j                  |        y NPoint r   )
r}   r   r   PointIdrq   r   rd   r   r   r   )
r  r  exampler   vecr{  collection_vectorsmentioned_idsrv   r   s
        rU   examples_into_vectorszJLocalCollection._preprocess_recommend_input.<locals>.examples_into_vectors  s     $ (gx'>?jnn4(6':Y)Z[[$..1C,[9#>C!#rzz2!jjlJJsO!T)%,,W5JJw'(r   r   zPositive list is emptyz&No positive or negative examples given)r
   r   VectorInputr   r   r"  r   r   r   RecommendStrategyAVERAGE_VECTORr   r   
BEST_SCORErb   ri   r_   ignore_mentioned_ids_filter)rv   rU  rV  rW  r  r-  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   `                 @@@@rU   _preprocess_recommend_inputz+LocalCollection._preprocess_recommend_input  s   $	(v112	(tDK($v/B/B*CT$tTY{J[E\\]	( 	( 	(& 0F/Q+W[
).):@S '2 $& 	  (38'38 u..===8}! !9::00;;;8}!c(mq&8 !IJJ /1.0=?=?9;9;/1
 9 99z666!+!:!:!(,CD!(,CD!+!8!8!(,AB!(,AB!+!3!3!(,<=!(,<= 3<O ##!!
 	
r   r  r  c                     t        j                  |       }t        |      dkD  rt        j                  |      nd }t        j                  |d      }|||z   t        j                  |d      z
  }|S |}|S )Nr   axis)rd   stackr   mean)r  r  positive_vectors_npnegative_vectors_npmean_positive_vectorr   s         rU   _recommend_average_densez(LocalCollection._recommend_average_dense  s     !hh'78<?@P<QTU<Ubhh'78[_!ww':C*$';;bggFY`a>bb 
  *Fr   c                    t        |       D ]  \  }}t        |       t        |      | |<     t        |      D ]  \  }}t        |       t        |      ||<     t        |       }|rt        |      }t	        ||      }|S |}|S r|   )r   r=   r<   rH   rG   )r  r  ir   r  mean_negative_vectors         rU   _recommend_average_sparsez)LocalCollection._recommend_average_sparse  s    
 ##34 	=IAv"6*"4V"<Q	= ##34 	=IAv"6*"4V"<Q	=  **:;#-.>#? 45IK_`F  *Fr   c           	      R   ||nt         j                  j                  }| j                  |||||||      \  }}	}
}}}}|t         j                  j                  k(  rH|r| j	                  ||	      }||fS |
r| j                  |
|      }||fS |rt        d      t        d      |t         j                  j                  k(  rJ|s|	rt        ||	      }||fS |
s|rt        |
|      }||fS |s|rt        ||      }||fS t        d      t        d| dt         j                         )NzjMultivectors do not support recommend average, consider using strategy=models.RecommendStrategy.BEST_SCOREz9No positive examples given with 'average_vector' strategyrU  rV  zANo positive or negative examples given with 'best_score' strategyz
strategy `z+` is not a valid strategy, choose one from )r   r  r  r  r  r  	TypeErrorr   r  r$   rB   r+   )rv   rU  rV  r  r-  r  r  rW  r  r  r  r  multi_positive_vectorsmulti_negative_vectorsedited_query_filterr   s                   rU   _construct_recommend_queryz*LocalCollection._construct_recommend_query  s     (389P9P9_9_ ,,"#
	
##"" u..===#<<$$ N 000G )#==++ D 000= (C 
 !!\]]00;;;#3(-- ( 000! ),C.4?V  000 (+A-3>T  000 !W  XJ&QRWRiRiQjk r   c           	      ~    | j                  ||||	|
||      \  }}|	|	nt        }| j                  ||f||||||      S )NrT  )r  r   r+  )rv   rU  rV  r  r	  r
  r   r   r  r-  r  r  rW  r   r  r  s                   rU   r`  zLocalCollection.recommenda  so     -1,K,K"#-
)) */):@S{{/>,%%+  
 	
r   c                     ||nt         j                  j                  }| j                  ||||
|||      \  }}|
|
nt        }| j                  ||f||||||	|||
      S )N)
r   r  rm  rn  r	  r   r   r  ro  rp  )r   r  r  r  r   r  )rv   rm  rU  rV  r  r	  rn  r  r   r   r-  r  r  ro  rp  rW  r   r  r  s                      rU   recommend_groupsz LocalCollection.recommend_groups  s    $  (389P9P9_9_,0,K,K"#-
)) */):@S!!/>,!%%+##9 " 
 	
r   re  c                    | j                  ||||      \  }}g }g }t        |      D 	
ci c]  \  }	}
|
|	
 }}	}
t        |      D ];  \  }}|D ]1  }|j                  |       |j                  ||j                            3 = g }|D ]$  }|D ]  }|j                  |j                          & t        j                  ||||      S c c}
}	w )Nr  r	  re  r-  )offsets_rowoffsets_colr&  rq   )_search_distance_matrixr   r   r   r  r   SearchMatrixOffsetsResponse)rv   r  r	  re  r-  rq   
all_scoresr  r  r   r)  offset_by_id
row_offsetr9  r*  r&  sample_scoresr  s                     rU   search_matrix_offsetsz%LocalCollection.search_matrix_offsets  s     66%U6 7 
Z ;DS>J-#x#JJ)2:)> 	B%J - B"":.""<#@AB	B ' 	+M& +ekk*+	+ 00##	
 	
 Ks   Cc           	          | j                  ||||      \  }}g }t        t        ||            D ]G  \  }}	|	D ]=  }
|j                  t	        j
                  ||
j                  |
j                               ? I t	        j                  |      S )Nr  )abr  )pairs)	r  rm   r   r   r   SearchMatrixPairr   r  SearchMatrixPairsResponse)rv   r  r	  re  r-  rq   r  r  	sample_idr  sample_scores              rU   search_matrix_pairsz#LocalCollection.search_matrix_pairs  s     66%U6 7 
Z (,Sj-A(B 	$I} - **#|l>P>P	 ..
 	
r   c                    g }||nt         }| j                  t        | j                        |d|      }|D ]0  }t        |      |k(  r n |j                   |j                  |       2 t        |      dk  rg g fS t        |d       }|D cg c]  }|j                   }	}g }
t        |      D ]  \  }}t        |	      D cg c]  \  }}||k7  s| }}}t        ||      }|j                  }t        |t              r||   n|}| j                  ||f||dd      }|
j                  |        |	|
fS c c}w c c}}w )NFr  c                     | j                   S r|   )r   rT   s    rU   r   z9LocalCollection._search_distance_matrix.<locals>.<lambda>  s
     r   r  )r   r  r	  r   r   )r   rh  r   rq   r   r   r  r   r   rI  r}   r   r+  )rv   r  r	  re  r-  samplesr  
candidates	candidaterq   r&  sampled_id_indexsampledr  rJ   ids_to_includessampling_filtersampled_vectorsearch_vectorsamples_scoress                       rU   r  z'LocalCollection._search_distance_matrix  su    &().):@S **M<0E

 $ 	*I7|v%+y)	* w<!r6M n5'./Vvyy//*, *37); 	*%g/8~WVaFVAVqWOW4\?SO$^^N nd3 45# 
 "[[3]C,"" ) N MM.)!	*$ F{- 0
 Xs   D6D;D;rX  r{  c                    | /t        | t        j                        rt        j                  |       n| } t        | t        t        j                              r| |j                  vrt        d|  d      |j                  |    }||j                  v r$|j                  |   |   j                         }|| fS ||j                  v r|j                  |   |   }|| fS |j                  |   |   j                         }|| fS | d fS r  )r}   r   TargetVectorr   convert_target_vectorr   r   r  rq   r   r_   r   rb   ri   )rX  r{  r   r   target_vectors        rU   _preprocess_targetz"LocalCollection._preprocess_target   s    !j9J9J&K ,,V4 	
 fhu}}56Z^^+ 6&1P!QRR..(Cj000 * 2 2; ? D K K M !&(( 
 9 99 * 9 9+ Fs K !&(( !+ 7 7 DS I P P R &((t|r   rY  c                    |D cg c]3  }t        |t        j                        rt        j                  |      n|5 }}g }g }g }g }|D ]?  }g }	|j
                  |j                  fD ]  }
t        |
t        t        j                              r|
|j                  vrt        d|
 d      |j                  |
   }||j                  v r!|j                  |   |   j                         }nA||j                  v r|j                  |   |   }n |j                  |   |   j                         }|	j!                  |       || k(  s|j!                  |
       |	j!                  |
        t        |	d   t"              r7t        |	d   t"              r$|j!                  t%        |	d   |	d                ft        |	d   t&              rt        |	d   t&              rt        |	d   d   t(              r:t        |	d   d   t(              r$|j!                  t+        |	d   |	d                t        |	d   d   t&              r:t        |	d   d   t&              r$|j!                  t-        |	d   |	d                ,t        d      t        d       t/        t1        |      t1        |      t1        |      g      dkD  rt        d      ||||fS c c}w )Nr  r   r   r   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   ContextExamplePairr   convert_context_example_pairrU  rV  r   r   r  rq   r   r_   r   rb   ri   r   r   r>   rm   r"  r   r.   sumrk   )rv   rY  r{  r   pairr  dense_context_vectorssparse_context_vectorsmulti_context_vectorspair_vectorsr  r   r   s                rU   _preprocess_contextz#LocalCollection._preprocess_context:  s     
  dD$;$;< 77=
 
  "!# " +	DL MM4==9 1gx'>?jnn4(6':Y)Z[[$..1C"j&8&88!+!3!3K!@!E!L!L!N$
(A(AA!+!:!:;!G!L!+!8!8!Ec!J!Q!Q!S ''/!T)%,,W5 ''0#1& ,q/<8ZQ> '--%|AVWY LOT2z,q/SW7Xl1oa0%8ZUVXYHZ\a=b)00#\!_|TUW  Q 2D9jVWYZI[]a>b)00(,q/LYZO\ %g  !c S+	\ /0././  [  %&<>SUbbbQ
s   8K	c                    ||st        d      ||n| }||nt        }||n|}	| j                  |||	      \  }
}|t        |      ng }| j	                  |||	      \  }}}}||| k(  r|j                  |       t        ||      }|
||||fS )NNo target or context given)r   r   r  rm   r  r   r  )rv   rX  rY  r  r-  r  r  r{  r  r   r  	target_idr  r  r  r  s                   rU   _preprocess_discoverz$LocalCollection._preprocess_discover  s     >'9::/E/Q+W[
).):@S '2 $& 	 $(#:#:6:{#[ y#*#6$w-B $$Wj+F 	\57Lm  Z4%7  + 3<O !"!
 	
r   c           	         | j                  |||||	|
      \  }}}}}|et        |t              r-t        |d   t              rt	        ||      }npt        ||      }nct        |t              rt        ||      }nFt        d      ||rt        |      }n+||rt        |      }n||rt        |      }nt        d      ||nt        }| j                  ||f||||||      S )Nr   zUnsupported target vector typer  rT  )r  r}   rm   r"  r"   r,   r   r@   r   r    r?   r-   r   r+  )rv   rX  rY  r  r	  r
  r   r   r-  r  r  r  r  r  r  r  r  r   r  s                      rU   rb  zLocalCollection.discover  s   ( %%"#
	
!"! $-.mA.6#1-AV#WL#6}F[#\LM<83MCYZ !ABB "'<'(=>L"'=-.DEL"'<,-BCL9::).):@S{{/>,%%+  
 	
r   r)  c                     t        |t              r|dfS t        |t              rd|fS t        dt	        |             )Nr   rI   zIncompatible point id type: )r}   rt  r   r  r   )r   r)  s     rU   _universal_idzLocalCollection._universal_id  sB    h$Q;#&x<6tH~6FGHHr   rS  rZ  c                     t        | j                        dk(  rg d fS || j                  |||||      S |t        d      | j	                  |||||      S )Nr   )rS  r	  r
  r   r   zGOffset is not supported in conjunction with `order_by` scroll parameter)rZ  rS  r	  r   r   )r   rq   _scroll_by_idr   _scroll_by_value)rv   rS  r	  rZ  r
  r   r   s          rU   r[  zLocalCollection.scroll  s     txx=At8O%%+)) &   Y  $$'%% % 
 	
r   r   c                 v    | j                  |      }t        j                  t        j                  |            S )N)r   )r  r   CountResultrd   count_nonzero)rv   r   r  s      rU   r   zLocalCollection.count&  s.    11,?!!(8(8(>??r   c                     t         j                  j                          fd      }g } j                  |      }|D ]  \  }	}
|$ j	                  |	       j	                  |      k  r,t        |      |dz   k\  r nO||
   sE|j                  t        j                  |	 j                  |
|       j                  |
|                    t        |      |kD  r|d | ||   j                  fS |d fS )Nc                 ,    j                  | d         S Nr   )r  )rJ   rv   s    rU   r   z/LocalCollection._scroll_by_id.<locals>.<lambda>3  s    D<N<NqQRt<T r   r  r   r  )r  rq   rc   r  r  r   r   r   r  r   r  r   )rv   rS  r	  r
  r   r   
sorted_idsr#  r  r)  r   s   `          rU   r
  zLocalCollection._scroll_by_id+  s     DHHNN,2TU
%'11-@' 	MHc!d&8&8&BTEWEWX^E_&_6{eai'9MM --c<@,,S,?	$ v;&5>6%=#3#3334<r   c                    t        |t        j                        rt        j                  |      }t        |t
              rt        j                  |      }g }| j                  j                         D ]T  \  }}t        | j                  |   |j                        }	|	,|	D ]$  }
t        |
      }||j                  |||f       & V |j                  |j                  nt        j                  j                   }|t        j                  j"                  k(  }|j%                  d |       | j'                  |      }g }t        |j(                        }|D ]  \  }
}}|F|t        j                  j                   k(  r|
|k  r$,|t        j                  j"                  k(  r|
|kD  rOt+        |      |k\  r |d fS ||   sh|j                  t        j,                  || j/                  ||      | j1                  ||                    |d fS )Nr  c                     | d   S r  r   rT   s    rU   r   z2LocalCollection._scroll_by_value.<locals>.<lambda>p  s
    1 r   )r   reverser  )r}   r   OrderByr   convert_order_byrt  r   rq   rc   r7   rj   r   r5   r   	direction	DirectionASCDESCsortr  
start_fromr   r  r   r  )rv   rZ  rS  r	  r   r   value_and_idsexternal_idinternal_idpayload_valuesr   ordering_valuer  should_reverser  r#  r  s                    rU   r  z LocalCollection._scroll_by_valueP  s    h-!228<Hh$~~(3HGI(,(8 
	U$K)$,,{*CX\\RN% ( U!/!6!-!((.+{)STU
	U +3*<*<*HH&&fN^N^NbNb	"f&6&6&;&;; 	~~F11-@%'#H$7$78
/< 	+E;% 0 0 4 44z) &"2"2"7"77z) 6{e# t| $MM" --k<H,,[,G	. t|r   c                    | j                  |      }t        j                  j                  t	        | j
                              }t        j                  |      }g }|D ]  }	t	        |      |k\  r |S ||	   s| j                  |	   }
t        t        j                  |
t        d      d| j                  |	|      | j                  |	|            }|j                  |        |S )Nr   r  )r  rd   randomrandr   rq   r   rr   r   r   r   r"  r   r  r   )rv   r	  r  r   r   r  random_scoresrandom_orderr#  r   r)  r*  s               rU   rh  z LocalCollection._sample_randomly  s     11,?		s488}5zz-0*, 	(C6{e#$ ! 9||C(H$""Ah))#|<((l;L MM,'%	(( r   r   c                 :   | j                   |j                     }t        |j                  t	        |j                        ni       | j                  |<   t        |j                  t              rt        |j                  i}n|j                  }| j                  j                         D ]  \  }}|j                  |      }|| j                  |      }t        j                  |      j                         rJ d       |j                   t"        j$                  j&                  k(  rBt        j(                  j+                  |      }|t,        kD  rt        j.                  |      |z  n|}|| j                  |   |<   d| j0                  |   |<   d| j0                  |   |<    | j2                  j                         D ]  \  }}|j                  |      }| j0                  |   |   }	|	s$| j2                  |   |   }
| j5                  |
|       |7|| j2                  |   |<   d| j0                  |   |<   | j7                  ||       d| j0                  |   |<    | j8                  j                         D ]  \  }}|j                  |      }|| j                  |      }t        j                  |      j                         rJ d       |j                   t"        j$                  j&                  k(  rWt        j(                  j+                  |d      d d t        j:                  f   }|t        j<                  |dk7  |t,              z  }t        j.                  |      | j8                  |   |<   d| j0                  |   |<   d| j0                  |   |<     d| j>                  |<   y )NVector contains NaN valuesr   r   r  r          ) rq   r   r   rj   r   r}   r   rm   r   r_   rc   r   r   rd   isnanr   r  r   r   COSINElinalgnormEPSILONr   rp   rb   r   r   ri   newaxiswhererl   )rv   r   r   r_   r   _named_vectorsr   ry   r/  was_deletedprevious_vector_named_vectorvector_norms                rU   _update_pointzLocalCollection._update_point  s+   hhuxx $161Ju}}-PR
S ellD)*ELL9GllG ,0<<+=+=+? 	>'K[[-F!//<88F+//1O3OO1??foo&<&<<99>>&1D8<wRXXf-4FF17[)#.<=''4S9<=''4S9	> ,0+>+>+D+D+F 	>'K[[-F11+>sCK"&"5"5k"B3"G''E!8>##K05<=''4S9''<<=''4S9	> +/*;*;*A*A*C 	>&K[[-F!//<88F+//1O3OO1??foo&<&<<"$))..b."A!RZZ-"PKbhh{c'9;PPF68hhv6F!!+.s3<=''4S9<=''4S9	> Sr   c                    t        | j                        }|| j                  |j                  <   | j                  j	                  |j                         | j
                  j	                  t        |j
                  t        |j
                        ni              t        | j
                        t        | j                        k(  sJ d       t        j                  | j                  d      | _	        t        |j                  t              rt        |j                  i}n|j                  }| j                  j                         D ]  \  }}|j!                  |      }|j"                  d   |k  r+t        j$                  ||dz  dz   |j"                  d   f      }|Xt        j&                  |j"                  d         }|||<   t        j                  | j(                  |   d      | j(                  |<   t        j*                  |      }t        j,                  |      j/                         rJ d       | j1                  |      }	|	j2                  t4        j6                  j8                  k(  r/t        j:                  j=                  |      }
|
t>        kD  r||
z  n|}|||<   || j                  |<   t        j                  | j(                  |   d      | j(                  |<    | j@                  j                         D ]  \  }}|j!                  |      }t        |      |k  r:|t        |      z
  dz   }tC        |      D ]  }|j	                  tE                       |@tE               }|||<   t        j                  | j(                  |   d      | j(                  |<   |||<   | jG                  ||       || j@                  |<   t        j                  | j(                  |   d      | j(                  |<    | jH                  j                         D ]  \  }}|j!                  |      }t        |      |k  rE|t        |      z
  dz   }tC        |      D ]&  }|j	                  t        j*                  g              ( |It        j*                  g       ||<   t        j                  | j(                  |   d      | j(                  |<   t        j*                  |      }t        j,                  |      j/                         rJ d       | j1                  |      }	|	j2                  t4        j6                  j8                  k(  rWt        j:                  j=                  |d      d d t        jJ                  f   }|t        jL                  |dk7  |t>              z  }|||<   || jH                  |<   t        j                  | j(                  |   d      | j(                  |<    y )	Nz)Payload and ids_inv must be the same sizer   r  r   r*  r  r  r+  )'r   rq   r   rr   r   rj   r   r   rd   rl   r}   r   rm   r   r_   rc   r   r  resizer   rp   r   r,  r   r   r  r   r   r-  r.  r/  r0  rb   ranger;   r   ri   r1  r2  )rv   r   r   r_   r   r   r   fake_vector	vector_npry   r/  diffrk  r7  s                 rU   
_add_pointzLocalCollection._add_point  s   $((m EHH%%--:S'6Y[\	
 4<< C$55b7bb5yyq1ellD)*ELL9GllG +/,,*<*<*> 	&K[[-F""1%, "		-#'A+}GZGZ[\G]9^ _~ ggm&9&9!&<=%0c"79yy++K8!8''4 HHV,	88I.224R6RR4//<??foo&<&<<99>>)4D487N	D 0	I%.c",9[)79yy++K8!8''4+	4 +/*=*=*C*C*E 	&K[[-F=!S(S//!3t @A!(()<)>?@ ~13%0c"79yy++K8!8''4 &,c"''<3@##K079yy++K8!8''4%	. +/*;*;*A*A*C 	&K[[-F=!S(S//!3t 7A!(("67 ~%'XXb\c"79yy++K8!8''4 HHV,	88I.224R6RR4//<??foo&<&<<"$))..."DQ

]"SK+*<k7!SSI%.c"1>!!+.79yy++K8!8''4-	r   c                    t        |j                  t              r 	 t        j                  |j                        }t        |j                  t              ri }|j                  j                         D ]K  \  }}|| j                  vrt        d|       t        |t              s3t        |       t        |      ||<   M |j                  j                  |       nt        | j                  j!                               }t        | j"                  j!                               }|r|dgk7  s|r|dgk7  rt        d| d|       | j                  s| j"                  st        d      |j                  | j$                  v r| j'                  |       n| j)                  |       | j*                  | j*                  j-                  |       y y # t
        $ r}t        d|j                   d      |d }~ww xY w)Nz	Point id z is not a valid UUIDz-Wrong input: Not existing vector name error: rI   zbWrong input: Unnamed vectors are not allowed when a collection has named vectors or multivectors: z, z+Wrong input: Not existing vector name error)r}   r   rt  uuidUUIDr   r   r   rc   ro   r   r=   r<   updaterm   r_   rn   ri   rq   r8  r?  rt   persist)	rv   r   _uuideupdated_sparse_vectorsr   r   vector_namesmultivector_namess	            rU   _upsert_pointzLocalCollection._upsert_pointI  s   ehh$T		%((+ ellD)%'"',||'9'9'; U#Vd&<&<<$'TU`Ta%bccfl3*62:LV:T*;7U LL 67 1 1 34L $T%6%6%;%;%= >"!5!&7B4&? x#nB'8&9;  <<(9(9 #NPP88txxu%OOE"<<#LL  ' $C  T 9UXXJ6J!KLRSSTs   G	 		G1G,,G1r3  c                 H   t        |t              r|D ]  }| j                  |        y t        |t        j                        r|}t        |j
                  t              rt        |j
                  i}n|j
                  }t        |j                        D ]o  \  }}d }|j                  |j                  |   }|j                         D 	ci c]  \  }}	||	|    }
}}	| j                  t        j                  |||
             q y t        dt        |             c c}	}w )Nr  zUnsupported type: )r}   rm   rJ  r   Batchr_   r   r   rq   r  rc   PointStructr   r   )rv   r3  r   batchr_   r   r)  rj   rx   r   r   s              rU   upsertzLocalCollection.upsertr  s   fd# *""5)*-E%--..>--!*599!5 X>>-#nnS1G6=mmoF74$#,FF""&&# '% 1$v,@AA Gs   
Dc                    |j                         D ]  \  }}t        |t              r_t        |       | j                  |   |   }| j                  ||       t        |      }|| j                  |   |<   | j                  ||       nY|| j                  v r&t        j                  |      | j                  |   |<   n%t        j                  |      | j                  |   |<   d| j                  |   |<    y r  )rc   r}   r   r=   rb   r   r<   r   r_   rd   r   ri   rp   )rv   r   r_   r   r   
old_vector
new_vectors          rU   _update_named_vectorsz%LocalCollection._update_named_vectors  s     $+==? 	:K&,/&v.!00=cB
''
K@/7
8B##K05''
K@,13&1A[)#.68hhv6F!!+.s389D##K05	:r   c                     |D ]g  }|j                   }| j                  |   }|j                  }t        |t              r	t
        |i}n|}| j                  ||       | j                  |       i y r|   )r   rq   r   r}   rm   r   rS  _persist_by_id)rv   r3  r   r)  r   vector_structfixed_vectorss          rU   update_vectorszLocalCollection.update_vectors  sh     		*ExxH((8$C!LLM-.!4m D -&&sM:)		*r   selectorc                     | j                  |      }|D ];  }| j                  |   }|D ]  }d| j                  |   |<    | j                  |       = y r   )_selector_to_idsrq   rp   rU  )rv   r_   rY  rq   r)  r   r   s          rU   delete_vectorszLocalCollection.delete_vectors  sc     ##H- 	*H((8$C& ><=''4S9>)		*r   c                     |D ]   }| j                   |   }d| j                  |<   " | j                  #|D ]  }| j                  j                  |        y y r   )rq   rl   rt   delete)rv   rq   r)  r   s       rU   _delete_idszLocalCollection._delete_ids  s_     	"H((8$C !DLL	" <<# .##H-. $r   delete_filterc                     | j                  |      }| j                  j                         D cg c]  \  }}||   s| }}}|S c c}}w r|   )r  rq   rc   )rv   r`  r  r)  r   rq   s         rU   _filter_to_idszLocalCollection._filter_to_ids  sE    11-@-1XX^^-=KMHccxKK
 Ls
   AAc                 `   t        |t              r|S t        |t        j                        r| j	                  |      S t        |t        j
                        r|j                  S t        |t        j                        r| j	                  |j                        S t        dt        |             )NzUnsupported selector type: )r}   rm   r   Filterrb  r   r3  FilterSelectorr<  r   r   )rv   rY  s     rU   r[  z LocalCollection._selector_to_ids  s     h%O&--0&&x00&"5"56??"&"7"78&&x77:4>:JKLLr   c                 H    | j                  |      }| j                  |       y r|   )r[  r_  )rv   rY  rq   s      rU   r^  zLocalCollection.delete  s"     ##H-r   c                     | j                   f| j                  |   }t        j                  || j	                  |dd      | j                  |d            }| j                   j                  |       y y )NTF)r   r   )r   r  )rt   rq   r   rM  r   r  rD  )rv   r)  r   r   s       rU   rU  zLocalCollection._persist_by_id  sn    <<#((8$C&&))#De)T((4(@E
 LL  ' $r   c                 T   | j                  |      }t        t        |            }|t        |      nd }|D ]o  }| j                  |   }|!i | j
                  |   || j
                  |<   n*| j
                  |   t        | j
                  |   ||       | j                  |       q y )N)rj   r   rn   )r[  r   r   r4   rq   rj   r9   rU  )	rv   rj   rY  r   rq   jsonable_payloadrn   r)  r   s	            rU   set_payloadzLocalCollection.set_payload  s     ##H-#$6w$?@EH__S-AZ^ 	*H((8$C|$Mt||C'8$M<L$MS!<<$0$T\\#->FV]ab)	*r   c                     | j                  |      }|D ]G  }| j                  |   }t        t        |            xs i | j                  |<   | j                  |       I y r|   )r[  rq   r   r   rj   rU  )rv   rj   rY  rq   r)  r   s         rU   overwrite_payloadz!LocalCollection.overwrite_payload	  s]     ##H- 	*H((8$C ();G)D E KDLL)	*r   rn   c                     | j                  |      }|D ]Y  }| j                  |   }|D ]2  }|| j                  |   v s| j                  |   j                  |       4 | j	                  |       [ y r|   )r[  rq   rj   poprU  )rv   rn   rY  rq   r)  r   r   s          rU   delete_payloadzLocalCollection.delete_payload	  sx     ##H- 	*H((8$C /$,,s++LL%))#./ )	*r   c                     | j                  |      }|D ]1  }| j                  |   }i | j                  |<   | j                  |       3 y r|   )r[  rq   rj   rU  )rv   rY  rq   r)  r   s        rU   clear_payloadzLocalCollection.clear_payload0	  sM     ##H- 	*H((8$C "DLL)	*r   update_operationsc                    |D ]V  }t        |t        j                        rt        |j                  t        j                        r&| j                  |j                  j
                         ht        |j                  t        j                        r&| j                  |j                  j                         t        dt        |j                               t        |t        j                        r| j                  |j                         
t        |t        j                        rV|j                  j                  xs |j                  j                  }| j                  |j                  j                  |       zt        |t        j                         rV|j"                  j                  xs |j"                  j                  }| j#                  |j"                  j                  |       t        |t        j$                        rV|j&                  j                  xs |j&                  j                  }| j'                  |j&                  j(                  |       Zt        |t        j*                        r| j-                  |j,                         t        |t        j.                        r'| j1                  |j0                  j                         t        |t        j2                        rV|j4                  j                  xs |j4                  j                  }| j5                  |j4                  j6                  |       Bt        dt        |              y )NzUnsupported upsert type: zUnsupported update operation: )r}   r   UpsertOperationrO  PointsBatchrN  
PointsListr3  r   r   DeleteOperationr^  SetPayloadOperationrj  r<  rj   OverwritePayloadOperationrl  DeletePayloadOperationro  rn   ClearPayloadOperationrq  UpdateVectorsOperationrX  DeleteVectorsOperationr\  r   )rv   rr  	update_oppoints_selectors       rU   batch_update_pointsz#LocalCollection.batch_update_points?	  sp    + !	UI)V%;%;<i..0B0BCKK	 0 0 6 67	 0 0&2C2CDKK	 0 0 7 78$'@iFVFVAW@X%YZZIv'='=>I,,-Iv'A'AB"+"7"7">">"^)BWBWB^B^  !6!6!>!>PIv'G'GH//66\):U:U:\:\   &&y'B'B'J'JO\Iv'D'DE,,33Vy7O7O7V7V   ##I$<$<$A$A?SIv'C'CD""9#:#:;Iv'D'DE##I$<$<$C$CDIv'D'DE,,33Vy7O7O7V7V   ##I$<$<$C$C_U #A$y/AR!STTC!	Ur   
new_configc                 p    || j                   vrt        d| d      || j                  j                   |<   y )Nr   z! does not exist in the collection)rb   r   rX   )rv   r   r  s      rU   update_sparse_vectors_configz,LocalCollection.update_sparse_vectors_configf	  s;     d111w{m3TUVV2<"";/r   c                    t        j                  t         j                  j                  t         j                  j
                  d d| j                         j                  di t        j                  t        j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                        t        j                   ddd      t        j"                  dd	      t        j$                  d
ddddd      d             S )Nr   r   )r_   shard_numberreplication_factorwrite_consistency_factoron_disk_payloadrb      d   i'  )mef_constructfull_scan_threshold    )wal_capacity_mbwal_segments_aheadg?i  i N     )deleted_thresholdvacuum_min_vector_numberdefault_segment_numberindexing_thresholdflush_interval_secmax_optimization_threads)ry   hnsw_config
wal_configoptimizer_configquantization_config)statusoptimizer_statusvectors_countindexed_vectors_countpoints_countsegments_countpayload_schemarX   )r   CollectionInfoCollectionStatusGREENOptimizersStatusOneOfOKr   CollectionConfigCollectionParamsrX   r_   r  r  r  r  rb   
HnswConfig	WalConfigOptimizersConfigr   s    rU   infozLocalCollection.infon	  s   $$**00#99<<"#++**.. KK//!%!9!9'+{{'E'E-1[[-Q-Q$(KK$?$?#';;#=#= #--!$(-
 "++$&'( "(!8!8&)-1+,','(-." %)5$
 $	
r   )NF)rK   N)rI   )T)TT)Fr|   )NrR  NTFN)	NNNrR  r   TFNN)NNNTF)NNNNNFFN)NNNNrR     TFNNN)NrR  r   TFNNN)NrR  )TF)NNNNNNN)NNNrR  r   TFNNNNN)NNNrR  r   NTFNNNNNN)Nr  rR  N)NNNNNN)NNNrR  r   TFNNNN)NrR  NNTF)NrR  NTF)NrR  TF)__name__
__module____qualname____doc__r   CreateCollectionr	   rt  rk   rz   staticmethodr   r~   r   r^   r   r   r   r   classmethodr   r"  r   r   ru   r   r   r   r   r   r!   rA   r*   
NumpyArrayr   r   r   r   r   r   r   r   r
   PayloadSelectorr   Payloadr   VectorStructr  rd  rd   r   r  r   r+  QueryPrefetchr7  r:  r4  r5  r6  r  DocumentWithLookupInterfacer  r  Vectorr$   rB   r+   r  r  r  r  rF  r  r  r  r  r  r  r`  r  r  r  r  r  r   r  r  r   r>   r.   r  r  rb  r  r  r[  r  r   r
  r  rh  rM  r8  r?  rJ  rL  rO  rS  PointVectorsrX  re  r   r\  r_  rb  r[  r^  rU  rj  rl  ro  rq  UpdateOperationr  SparseVectorParamsr  r  r  r   r   rU   rW   rW   [   s|    #'05	0''0 3-0 *.	0
 
0d 3c6.../3	tC,,,-tC9L9L4L/MM	N3 3(!; ;C ;D ;; ;C ;D ; 9c 9c 9e 9 9
G< 
Gc 
Gl 
GLC\ 1K#tE{"#e#tDK(()###''(#(()#''(
1  
U#%68H%JZJZZ[[
!1 1fMc Mf.A.A M ES Es Et E E6 ES Es Et E E IK&.ud{&;CF	 0  KO)) D(3-1F1FFG) 
$	) )\ KO 	QQ D(3-1F1FFGQ 	Q
 
&..	!Q JO!!&+D(3-,E&F!	&%%	&!L &* / c] 
	T 04 $JN38+/-OK#tE{"#e#tDK(()###''(#(()#''(
O" u||,#O$ %O& 'O( D(3-1F1FFG)O* D(3-/0+O, "%-O. 
f  	!/Of (,37/3JN38+/#39$39 4/039 u||,	39
 39 39 D(3-1F1FFG39 D(3-/039 "%39 }39 39 
		39j&%.. &# &$uGXGXBY &\  $/3+/JN386d5,,-.6 {{6 	6
 6 }6 u||,6 "%6 D(3-1F1FFG6 D(3-/06 
e	 6t (,#/3# $JO38+/h$h }h u||,	h
 }h h D(3-1F1FFGh D(3-/0h "%h 
e	 hl #FJ/3JN38+/;?>B-W9W9 MMKeKKNN	
W9 }W9 U^^(<dBCW9 u||,W9  !W9" #W9$ D(3-1F1FFG%W9& D(3-/0'W9( "%)W9* e778+W9, !)): ;-W9. 
		/W9` 15KO38+/;?>B=R9UOeMM#"$$	&	 ###
R9, -R9. v}}-/R90 1R92 3R94 D(3-1G1GGH5R96 D(3-/07R98 "%9R9: e778;R9< !)): ;=R9> 
		?R9n 04	1.1. u||,1. 	1.
 
		1.l KO38	emm$ D(3-1F1FFG D(3-/0	
 
fmm	8 <@;?6:/3#>B15[
8F$6$678[
 8F$6$678[
 5223	[

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

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

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

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

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

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

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

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