
    %Gg~                    <   d dl Z d dlZd dlZd dlmZmZ d dlmZmZm	Z	m
Z
mZmZ d dlmZ d dlZd dlmZ d dlmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZ d dl m!Z! d dl"m#Z# d dl$m%Z%m&Z&m'Z'm(Z( d dl)m*Z*m+Z+ d dl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 d dl8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA d dlBmCZCmDZD d dlEmFZF d dlGmHZH d dlImJZJmKZK d dlLmMZM d dlNmOZO d dlPmQZQmRZRmSZS d dlTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_ dZ`dZadedefdZ G d d      Zbd e	ej                     d!edej                     dej                  fd"Zfd e	ej                     d#edej                     dej                  fd$Zgd%ej                  dejF                  fd&Zid'ej                  d(ekdej                  fd)Zly)*    N)OrderedDictdefaultdict)AnyCallableOptionalSequenceUnionget_args)deepcopy)grpc)show_warning_once)	constructto_jsonable_python)common_types)get_args_subscribed)
GrpcToRest)models)ScoredPoint)DistanceExtendedPointIdSparseVector
OrderValue)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)rI   default)jsonloadsdumps	Exception_to_jsonable_pythonrF   s    /home/kushmeetdev/apache_webroot/langgraph_flaskproject/venv/lib/python3.12/site-packages/qdrant_client/local/local_collection.pyr   r   Q   sP    Vzz$**Q$788 Vzz$**Q$@STUUVs   ), 8A'&A'c            !       8   e Zd 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j:                  ej<                  eeeef   eee f   e!eee!f   ejD                  f   deeeee e!ejD                  f   f   fd       Z#dedej                  fdZ$ededede	fd       Z%ededede	fd       Z&e	 dde'de(ege	f   dede'fd        Z)e	 dded!ee	e*e   ejV                  f   dee   fd"       Z,	 	 dd#ed!ee	e*e   ejV                  f   d$e	deejZ                     fd%Z.	 dd#ed&ee	e*e   df   deej^                     fd'Z0	 dd(eejb                     dee   de2jf                  fd)Z4	 	 	 	 	 	 ddeee   eeee   f   eee      eeeee      f   ej:                  ej<                  eeeef   e eee f   e!eee!f   ejD                  f   d*eejb                     d+ed,ee   d!ee	e*e   ejV                  f   d&ee	e*e   f   d-ee   deejj                     fd.Z6	 	 	 	 	 	 	 	 	 dd/eejn                     d0e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   d1ee   d2e'dejr                  fd3Z:d0ejp                  d,edeejj                     fd4Z;	 	 	 	 	 dd5eeejj                        d/ejn                  d+ed,ed1e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d6Z<	 	 	 	 	 	 	 	 dd/eejn                     d1e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d7Z=	 	 	 	 	 	 	 	 	 	 	 dd8ed/eej|                  ee   eee      ej"                  ejn                  ejD                  ej~                  ej                  ej                  df
   d1ee   d0eejp                  eejp                     df   d*eejb                     d+ed9ed!ee	e*e   ejV                  f   d&ee	e*e   f   d-ee   d:eej                     d;ed    dej                  fd<ZD	 	 	 	 	 	 	 	 ddee*e   eee      eeeej                  eFeGeHejD                  f   f   ej:                  ej<                  eFeGeHejD                  f	   d8ed*eejb                     d+ed9ed!ee	e*e   ejV                  f   d&ee	e*e   f   d-ee   d:eej                     d;ed    dej                  fd=ZI	 	 dded>eejb                     d+edej                  fd?ZK	 	 dd@e*ej|                     d!ee	e*e   ejV                  f   d&ee	e*e   f   deej                     fdAZM	 	 	 	 	 	 	 ddBee*ej                        dCee*ej                        dDeej                     d*eejb                     d1ee   dEed    dFe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dGZPedHeee      dIeee      dejD                  fdJ       ZQedHeej"                     dIeej"                     dej"                  fdK       ZR	 	 	 	 	 	 	 ddBee*ej                        dCee*ej                        d*eejb                     d1ee   dEed    dFee   dDeej                     deeeFeGeHej"                  ejD                  f   ejb                  f   fdLZS	 	 	 	 	 	 	 	 	 	 	 	 ddBee*ej                        dCe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   d1ee   dEed    dFee   dDeej                     deejj                     fdMZT	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd8edBee*ej                        dCee*ej                        d*eejb                     d+ed9ed-ee   d!ee	e*e   ejV                  f   d&ee	e*e   f   d1ee   dEed    dFee   d:eej                     d;ed    dDeej                     dej                  f dNZU	 	 	 	 dd*eejb                     d+edOed1ee   dej                  f
dPZW	 	 	 	 dd*eejb                     d+edOed1ee   dej                  f
dQZY	 	 	 	 dd*eejb                     d+edOed1ee   deeeZ   eee5      f   f
dRZ[edSeej                     dTd dedeej                  ej|                  f   fdU       Z\dVeej                     dTd dedeee]   ee^   ee_   eej|                     f   fdWZ`	 	 	 	 	 	 ddSeej                     dVee*ej                        d*eejb                     d1ee   dEed    dFee   deeej                     ee]   ee^   ee_   ejb                  f   fdXZa	 	 	 	 	 	 	 	 	 	 	 ddSeej                     dVe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   d1ee   dEed    dFee   d-ee   deejj                     fdYZbedZej                  deeef   fd[       Zc	 	 	 	 	 	 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^Zedd_eejb                     dej                  fd`Zg	 	 	 	 	 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daZh	 	 	 	 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dbZi	 	 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
dcZjddej                  ddfdeZlddej                  ddfdfZmddej                  ddfdgZndhee*ej                     ej                  f   ddfdiZpd#ed	eeeee   ef   f   ddfdjZqdhe*ej                     ddfdkZsd	e*e   dleejb                  eej                     ej                  ej                  f   ddfdmZvd@eej|                     ddfdnZwdoejb                  deej                     fdpZxdleejb                  eej                     ej                  ej                  f   deej                     fdqZydleejb                  eej                     ej                  ej                  f   ddfdrZzdZej                  ddfdsZ{	 ddejZ                  dleejb                  eej                     ej                  ej                  f   dee   ddfdtZ|dejZ                  dleejb                  eej                     ej                  ej                  f   ddfduZ}dve*e   dleejb                  eej                     ej                  ej                  f   ddfdwZ~dleejb                  eej                     ej                  ej                  f   ddfdxZdye*ej                      ddfdzZded{ej                  ddfd|Zdej                  fd}Zy)LocalCollectionzb
    LocalCollection is a class that represents a collection of vectors in the local storage.
     N  Nconfiglocationforce_disable_check_same_threadrG   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storagerU   r6   load_vectors)selfrU   rV   rW   sparse_vectors_confignameparamss          rQ   __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_NAMEr`   )r\   r]   r^   ru   rv   s        rQ   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 ry   )rq   closers   s    rQ   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   )re   r   intindicesrs   r   r   idxs       rQ   _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   re   r   s       rQ   _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      rQ   _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)	countre   zipr   r   getr   appendr   )
rs   r   r   num_docs
new_values	idf_storer   valuedocument_frequencyidfs
             rQ   _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 )NrY   r   )!rq   r   rj   	enumerateloadrn   idro   r   rg   r   r   rz   r}   r\   rk   r   ra   onesr]   rc   rd   r_   r7   rf   arrayr`   rb   lenrh   rm   r   ri   )rs   r\   r_   rf   deleted_idsr   pointloaded_vectorall_dense_vector_namesru   vall_sparse_vector_namesall_multivector_namesnamed_vectorsr   s                  rQ   rr   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 )rz   tuplerj   ra   r   ndarrayr}   typesNamedVectorru   r   NamedSparseVectorr
   r   r&   
ValueErrortype)r   r   ru   queryr   s        rQ   _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~   ru   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: )rz   rU   r\   dictr   r   r{   r}   )rs   ru   s     rQ   get_vector_paramsz!LocalCollection.get_vector_paramsG  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ry    .0pr   s      rQ   	<genexpr>z9LocalCollection._check_include_pattern.<locals>.<genexpr>p       Dda16D   )replacesplitallr   r   r   r   pattern_parts	key_partss        rQ   _check_include_patternz&LocalCollection._check_include_patternV  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ry   r   r   s      rQ   r   z9LocalCollection._check_exclude_pattern.<locals>.<genexpr>x  r   r   )r   r   r   r   r   r   s        rQ   _check_exclude_patternz&LocalCollection._check_exclude_patternr  sc    w<#c("T288=KKT*005	Dc-&CDDDr~   rg   	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 )NrE   r   z[])rz   r   r`   _filter_payloadrj   r   r   )
r   rg   r   r   resnew_pathr   r   	res_arrayr   s
             rQ   r   zLocalCollection._filter_payloadz  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 ry   r   r   r   r   s    rQ   <lambda>zDLocalCollection._process_payload.<locals>.<lambda>.<locals>.<lambda>      (B(B7C(P r~   )anymapr   r   r   s   `rQ   r   z2LocalCollection._process_payload.<locals>.<lambda>  s    CPR^_ r~   c                 L     t        t         fdj                              S )Nc                 (    j                  |       S ry   r   r   s    rQ   r   zDLocalCollection._process_payload.<locals>.<lambda>.<locals>.<lambda>  r   r~   )r   r   includer   s   `rQ   r   z2LocalCollection._process_payload.<locals>.<lambda>  s     CP$,, r~   c                 L     t        t         fdj                              S )Nc                 *    j                  |        S ry   )r   r   s    rQ   r   zDLocalCollection._process_payload.<locals>.<lambda>.<locals>.<lambda>  s    C,F,FwPS,T(T r~   )r   r   excluder   s   `rQ   r   z2LocalCollection._process_payload.<locals>.<lambda>  s     CT$,, r~   )rz   rh   rj   r   r   PayloadSelectorIncludePayloadSelectorExclude)r   rg   r   s   ` `rQ   _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 ry   )rg   r   r   )rs   r   r   r   rg   processed_payloads         rQ   _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\   rm   tolistr_   rf   rz   rj   r   r}   )rs   r   r   ru   dense_vectorsr_   rf   all_vectorss           rQ   _get_vectorszLocalCollection._get_vectors  s    5 L$8 
**405 $,,t$S)0022
 
 ++
**405 $%%d+C00
 
 ))
**405 $##D)#.5577
 
 JI.ILIlD)?KcttWbOb4T!22cKc{q %8K%G2337


 ds   :D) ,D.:D34	D8>D8payload_filterc                     t        | j                  || j                  | j                        }|| j                   z  }||| j                  |    z  }|S )zo
        Calculate mask for filtered payload and non-deleted points. True - accepted, False - rejected
        )payloadsr   ro   rm   )r2   rg   ro   rm   ri   )rs   r   r   payload_maskmasks        rQ   _payload_and_non_deleted_maskz-LocalCollection._payload_and_non_deleted_mask  s]     .\\)LL#66	
 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 ry   r   rF   ru   rs   s    rQ   r   z(LocalCollection.search.<locals>.<lambda>D      tGXGXYZ\`Ga r~   c                 (    j                  |       S ry   r  r  s    rQ   r   z(LocalCollection.search.<locals>.<lambda>L  r  r~   c                 (    j                  |       S ry   r  r  s    rQ   r   z(LocalCollection.search.<locals>.<lambda>T  r  r~   zUnsupported query vector type )r   r   r   scoreversionrg   r   )?r   rz   r
   r=   r_   r   rU   modifierr   ModifierIDFr   DOTr&   ra   r   r   shaperf   r   distancer\   rg   r#   r+   r    r$   r>   transform_sparserB   r'   r,   r   r"   r<   rA   r(   r-   r   r!   r;   r@   r)   r.   r   r9   r   r8   r?   r   r  r%   r   BIGGER_IS_BETTERargsortinfro   r   r   floatr   r   r   )rs   r   r  r  r  r   r   r  resultsparse_scoringrescore_idfr\   r  scoresr  required_orderorderr   r  point_idscored_pointru   s   `                    @rQ   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)rz   rj   r   	_prefetch_merge_sources_query_collectionr   QueryResponse)rs   r   r)  r  r  r  r   r   r  r*  r+  
prefetchesr.  scored_pointss                 rQ   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   Fr-  r/  )r  r)  rz   rj   r   r1  r2  r   r*  filterr  r3  )rs   r)  r  inner_prefetchesinner_prefetchr.  s         rQ   r1  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&r.  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   r/  )rz   r   FusionQueryfusionFusionRRFr   DBSFr   r   r   retriever   rg   r   setaddr   _include_ids_in_filterrj   r3  )rs   r.  r   r  r  r*  r  r  r   r   fusedr   rn   fetched_pointsfetchedscoredsources_idssourcefilter_with_sourcess                      rQ   r2  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  )rV  r*  r  r  r  r   r   r  )rP  order_byr  r   r   )r  r  r   r   zUnknown Sample variant: z(Cannot perform fusion without prefetches)r}   scrollrecord_to_scored_pointrz   r   NearestQueryr(  nearestRecommendQuery	recommendrR  rS  rT  DiscoverQuerydiscoverrU  rV  r   OrderByQueryrW  SampleQuerysampleSampleRANDOM_sample_randomlyr   r>  AssertionError)rs   r   r*  r  r  r  r   r   r  records_records               rQ   r3  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ry   rz   strr   r   r   s     rQ   r   z/LocalCollection.query_groups.<locals>.<genexpr>       #Y!z!cSVZ?XA#Y   %%r   hits
collectionr   r   rn   r   r   groups)r   ro   rz   rj   r   set_prefetch_limit_recursivelyr7  r   r0  rg   r   r3   rD  r   r   
PointGrouprv  r   rq  
WithLookuprC  r   r   r   nextiterlookupGroupsResult)rs   rj  r   r*  r)  r  r  rk  r   r   r  rl  rm  	max_limittmpr   r0  r{  r   group_valuesgroup_valuegroups_resultgroupr  s                           rQ   query_groupszLocalCollection.query_groups  s   4 %	(D)! #AJJ=aKL"H# :(IN""%dll#%+ # 	
 ]] 	7EemmT2'x@L##Y|#Y YZL 11%--NEM+ 7f,*0*;*;{QS*TF;'vk*//0J>{#((//67	7* 26fmmo1Fv1Nk3' ++&!!K "'='I& 8/88
!,!9!9!,!9!9 9 
  $DL$78 ""-88r~   c                 z   | j                  ||t        | j                        d||      }t               }|D ]  }t	        |j
                  t              st        |j
                  |      }|7t        t        d |D                    }| j                  |j
                  |      |_        |D ]Z  }||vrt        j                  |g       ||<   t        ||   j                        |k\  r=||   j                  j                  |       \  t        |j                               d | }t	        |	t               rt        j"                  |	d d       }	|	V|
T|D ]O  }|
j%                  |j&                  g|	j(                  |	j*                        }t-        t/        |      d       |_        Q t        j2                  |      S )NT)r   r  r  r   r   r  c              3   N   K   | ]  }t        |t        t        f      s|  y wry   rp  rr  s     rQ   r   z0LocalCollection.search_groups.<locals>.<genexpr>$  rs  rt  ru  rw  ry  rz  )r(  r   ro   r   rz   rg   r   r3   rj   rD  r   r   r}  rv  r   r   rq  r~  rC  r   r   r   r  r  r  r  )rs   r   rj  r  r  rk  r   r   r  rl  rm  r0  r{  r   r  r  r  r  r  s                      rQ   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   rP   s    rQ   r   z'LocalCollection.facet.<locals>.<lambda>r  s    !uadm r~   r   )r   r   )rv  )r   r   r  r   rg   rz   r   r3   rD  r   r   r   
FacetValuer4   rq  rE  sortedr`   r   FacetValueHitFacetResponse)rs   r   r  r  
facet_hitsr  r   rg   r   
values_setr   as_uuidr   r   rv  s                  rQ   facetzLocalCollection.facetE  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rn   c                    g }|D ]z  }|| j                   vr| j                   |   }| j                  |   dk(  r4|j                  t        j                  || j                  ||      | j                  ||                   | |S )Nr   r   rg   r   )rn   ri   r   r   Recordr   r   )rs   rn   r   r   r   r&  r   s          rQ   rC  zLocalCollection.retrievex  s      	Htxx'((8$C||C A%MM --c<@,,S,?	  r~   rR  rS  rT  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accrG   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   )
rz   r
   r   PointIdrn   r   ra   r   r   r   )
r  r  exampler   vecrx  collection_vectorsmentioned_idsrs   r   s
        rQ   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	   rj   r  r   r}   r   RecommendStrategyAVERAGE_VECTORr   r   
BEST_SCOREr_   rf   r\   ignore_mentioned_ids_filter)rs   rR  rS  rT  r  r*  r  r  r  search_in_vector_namepositive_vectorsnegative_vectorssparse_positive_vectorssparse_negative_vectorspositive_multivectorsnegative_multivectorssparsemultirx  r  r  r   s   `                 @@@@rQ   _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)ra   stackr   mean)r  r  positive_vectors_npnegative_vectors_npmean_positive_vectorr   s         rQ   _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 ry   )r   r9   r8   rD   rC   )r  r  ir   r  mean_negative_vectors         rQ   _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rR  rS  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    r>   r'   )rs   rR  rS  r  r*  r  r  rT  r  r  r  r  multi_positive_vectorsmulti_negative_vectorsedited_query_filterr   s                   rQ   _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 )NrQ  )r  r}   r(  )rs   rR  rS  r  r  r  r   r   r  r*  r  r  rT  r   r  r  s                   rQ   r]  zLocalCollection.recommendc  so     -1,K,K"#-
)) */):@S{{/>,%%+  
 	
r~   c                     ||nt         j                  j                  }| j                  ||||
|||      \  }}|
|
nt        }| j                  ||f||||||	|||
      S )N)
r   r  rj  rk  r  r   r   r  rl  rm  )r   r  r  r  r}   r  )rs   rj  rR  rS  r  r  rk  r  r   r   r*  r  r  rl  rm  rT  r   r  r  s                      rQ   recommend_groupsz LocalCollection.recommend_groups  s    $  (389P9P9_9_,0,K,K"#-
)) */):@S!!/>,!%%+##9 " 
 	
r~   rb  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  rb  r*  )offsets_rowoffsets_colr#  rn   )_search_distance_matrixr   r   r   r  r   SearchMatrixOffsetsResponse)rs   r  r  rb  r*  rn   
all_scoresr  r  r   r&  offset_by_id
row_offsetr6  r'  r#  sample_scoresr  s                     rQ   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  rj   r   r   r   SearchMatrixPairr   r  SearchMatrixPairsResponse)rs   r  r  rb  r*  rn   r  r  	sample_idr  sample_scores              rQ   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 ry   )r   rP   s    rQ   r   z9LocalCollection._search_distance_matrix.<locals>.<lambda>  s
     r~   r  )r   r  r  r   r   )r}   re  r   rn   r   r   r  r   r   rF  rz   r   r(  )rs   r  r  rb  r*  samplesr  
candidates	candidatern   r#  sampled_id_indexsampledr  rF   ids_to_includessampling_filtersampled_vectorsearch_vectorsamples_scoress                       rQ   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;rU  rx  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  )rz   r   TargetVectorr   convert_target_vectorr
   r   r  rn   r   r\   r   r_   rf   )rU  rx  r   r   target_vectors        rQ   _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~   rV  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)rz   r   ContextExamplePairr   convert_context_example_pairrR  rS  r
   r   r  rn   r   r\   r   r_   rf   r   r   r:   rj   r  r   r*   sumrh   )rs   rV  rx  r   pairr  dense_context_vectorssparse_context_vectorsmulti_context_vectorspair_vectorsr  r   r   s                rQ   _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  rj   r  r   r  )rs   rU  rV  r  r*  r  r  rx  r  r   r  	target_idr  r  r  r  s                   rQ   _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   rQ  )r  rz   rj   r  r   r(   r   r<   r   r   r;   r)   r}   r(  )rs   rU  rV  r  r  r  r   r   r*  r  r  r  r  r  r  r  r  r   r  s                      rQ   r_  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   rE   zIncompatible point id type: )rz   rq  r   r  r   )r   r&  s     rQ   _universal_idzLocalCollection._universal_id  sB    h$Q;#&x<6tH~6FGHHr~   rP  rW  c                     t        | j                        dk(  rg d fS || j                  |||||      S |t        d      | j	                  |||||      S )Nr   )rP  r  r  r   r   zGOffset is not supported in conjunction with `order_by` scroll parameter)rW  rP  r  r   r   )r   rn   _scroll_by_idr   _scroll_by_value)rs   rP  r  rW  r  r   r   s          rQ   rX  zLocalCollection.scroll  s     txx=At8O%%+)) &   Y  $$'%% % 
 	
r~   r   c                 v    | j                  |      }t        j                  t        j                  |            S )N)r   )r  r   CountResultra   count_nonzero)rs   r   r  s      rQ   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  )rF   rs   s    rQ   r   z/LocalCollection._scroll_by_id.<locals>.<lambda>5  s    D<N<NqQRt<T r~   r  r   r  )r  rn   r`   r  r  r   r   r   r  r   r   r   )rs   rP  r  r  r   r   
sorted_idsr   r  r&  r   s   `          rQ   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   rP   s    rQ   r   z2LocalCollection._scroll_by_value.<locals>.<lambda>r  s
    1 r~   )r   reverser  )rz   r   OrderByr   convert_order_byrq  r   rn   r`   r3   rg   r   r1   r   	direction	DirectionASCDESCsortr  
start_fromr   r  r   r   )rs   rW  rP  r  r   r   value_and_idsexternal_idinternal_idpayload_valuesr   ordering_valuer  should_reverser  r   r  s                    rQ   r  z LocalCollection._scroll_by_valueR  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  ra   randomrandr   rn   r  ro   r   r   r   r  r   r   r   )rs   r  r  r   r   r  random_scoresrandom_orderr   r   r&  r'  s               rQ   re  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          ) rn   r   r   rg   r   rz   r   rj   r}   r\   r`   r   r   ra   isnanr   r  r   r   COSINElinalgnormEPSILONr   rm   r_   r   r   rf   newaxiswhereri   )rs   r   r   r\   r   _named_vectorsr   rv   r,  was_deletedprevious_vector_named_vectorvector_norms                rQ   _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   rn   r   ro   r   rg   r   r   ra   ri   rz   r   rj   r}   r\   r`   r   r  resizer   rm   r   r)  r   r   r  r   r   r*  r+  r,  r-  r_   ranger7   r   rf   r.  r/  )rs   r   r   r\   r   r   r   fake_vector	vector_nprv   r,  diffrh  r4  s                 rQ   
_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: rE   zbWrong input: Unnamed vectors are not allowed when a collection has named vectors or multivectors: z, z+Wrong input: Not existing vector name error)rz   r   rq  uuidUUIDr   r   r   r`   rl   r   r9   r8   updaterj   r\   rk   rf   rn   r5  r<  rq   persist)	rs   r   _uuideupdated_sparse_vectorsr   r   vector_namesmultivector_namess	            rQ   _upsert_pointzLocalCollection._upsert_pointK  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r0  c                     t        |t              r|D ]  }| j                  |        nt        |t        j                        r|}t        |j
                  t              rt        |j
                  i}n|j
                  }t        |j                        D ]o  \  }}d }|j                  |j                  |   }|j                         D 	ci c]  \  }}	||	|    }
}}	| j                  t        j                  |||
             q nt        dt        |             t        | j                        | j                  kD  r9t!        d| j                  ddt        | j                         dt"        dd	       y y c c}	}w )
Nr  zUnsupported type: z=Local mode is not recommended for collections with more than ,z% points. Current collection contains zd points. Consider using Qdrant in Docker or Qdrant Cloud for better performance with large datasets.zlarge-local-collection   )categoryr   
stacklevel)rz   rj   rG  r   Batchr\   r}   r   rn   r  r`   PointStructr   r   r   LARGE_DATA_THRESHOLDr   UserWarning)rs   r0  r   batchr\   r   r&  rg   ru   r   r   s              rQ   upsertzLocalCollection.upsertt  sc   fd# *""5)*-E%--..>--!*599!5 X>>-#nnS1G6=mmoF74$#,FF""&&# '% 1$v,@AAtxx=4444OPTPiPijkOl m77:488}o Fnn %, 5 Gs   
E:c                    |j                         D ]  \  }}t        |t              r_t        |       | j                  |   |   }| j                  ||       t        |      }|| j                  |   |<   | j                  ||       nY|| j                  v r&t        j                  |      | j                  |   |<   n%t        j                  |      | j                  |   |<   d| j                  |   |<    y r  )r`   rz   r   r9   r_   r   r8   r   r\   ra   r   rf   rm   )rs   r   r\   r   r   
old_vector
new_vectors          rQ   _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 ry   )r   rn   r   rz   rj   r}   rV  _persist_by_id)rs   r0  r   r&  r   vector_structfixed_vectorss          rQ   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_idsrn   rm   rX  )rs   r\   r\  rn   r&  r   r   s          rQ   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   )rn   ri   rq   delete)rs   rn   r&  r   s       rQ   _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 ry   )r  rn   r`   )rs   rc  r  r&  r   rn   s         rQ   _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: )rz   rj   r   Filterre  PointIdsListr0  FilterSelectorr9  r   r   )rs   r\  s     rQ   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 ry   )r^  rb  )rs   r\  rn   s      rQ   ra  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  )rq   rn   r   rN  r   r   rA  )rs   r&  r   r   s       rQ   rX  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)rg   r   rk   )r^  r   r   r0   rn   rg   r5   rX  )	rs   rg   r\  r   rn   jsonable_payloadrk   r&  r   s	            rQ   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 ry   )r^  rn   r   r   rg   rX  )rs   rg   r\  rn   r&  r   s         rQ   overwrite_payloadz!LocalCollection.overwrite_payload	  s]     ##H- 	*H((8$C ();G)D E KDLL)	*r~   rk   c                     | j                  |      }|D ]Y  }| j                  |   }|D ]2  }|| j                  |   v s| j                  |   j                  |       4 | j	                  |       [ y ry   )r^  rn   rg   poprX  )rs   rk   r\  rn   r&  r   r   s          rQ   delete_payloadzLocalCollection.delete_payload*	  sx     ##H- 	*H((8$C /$,,s++LL%))#./ )	*r~   c                     | j                  |      }|D ]1  }| j                  |   }i | j                  |<   | j                  |       3 y ry   )r^  rn   rg   rX  )rs   r\  rn   r&  r   s        rQ   clear_payloadzLocalCollection.clear_payload<	  sM     ##H- 	*H((8$C "DLL)	*r~   update_operationsc                    |D ]V  }t        |t        j                        rt        |j                  t        j                        r&| j                  |j                  j
                         ht        |j                  t        j                        r&| j                  |j                  j                         t        dt        |j                               t        |t        j                        r| j                  |j                         
t        |t        j                        rV|j                  j                  xs |j                  j                  }| j                  |j                  j                  |       zt        |t        j                         rV|j"                  j                  xs |j"                  j                  }| j#                  |j"                  j                  |       t        |t        j$                        rV|j&                  j                  xs |j&                  j                  }| j'                  |j&                  j(                  |       Zt        |t        j*                        r| j-                  |j,                         t        |t        j.                        r'| j1                  |j0                  j                         t        |t        j2                        rV|j4                  j                  xs |j4                  j                  }| j5                  |j4                  j6                  |       Bt        dt        |              y )NzUnsupported upsert type: zUnsupported update operation: )rz   r   UpsertOperationrR  PointsBatchrQ  
PointsListr0  r   r   DeleteOperationra  SetPayloadOperationrn  r9  rg   OverwritePayloadOperationrp  DeletePayloadOperationrs  rk   ClearPayloadOperationru  UpdateVectorsOperationr[  DeleteVectorsOperationr_  r   )rs   rv  	update_oppoints_selectors       rQ   batch_update_pointsz#LocalCollection.batch_update_pointsK	  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)r_   r   rU   )rs   r   r  s      rQ   update_sparse_vectors_configz,LocalCollection.update_sparse_vectors_configr	  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_payloadr_      d   i'  )mef_constructfull_scan_threshold    )wal_capacity_mbwal_segments_aheadg?i  rT      )deleted_thresholdvacuum_min_vector_numberdefault_segment_numberindexing_thresholdflush_interval_secmax_optimization_threads)rv   hnsw_config
wal_configoptimizer_configquantization_config)statusoptimizer_statusvectors_countindexed_vectors_countpoints_countsegments_countpayload_schemarU   )r   CollectionInfoCollectionStatusGREENOptimizersStatusOneOfOKr   CollectionConfigCollectionParamsrU   r\   r  r  r  r  r_   
HnswConfig	WalConfigOptimizersConfigr   s    rQ   infozLocalCollection.infoz	  s   $$**00#99<<"#++**.. KK//!%!9!9'+{{'E'E-1[[-Q-Q$(KK$?$?#';;#=#= #--!$(-
 "++$&'( "(!8!8&)-1+,','(-." %)5$
 $	
r~   )NF)rG   N)rE   )T)TT)Fry   )NrO  NTFN)	NNNrO  r   TFNN)NNNTF)NNNNNFFN)NNNNrO     TFNNN)NrO  r   TFNNN)NrO  )TF)NNNNNNN)NNNrO  r   TFNNNNN)NNNrO  r   NTFNNNNNN)Nr  rO  N)NNNNNN)NNNrO  r   TFNNNN)NrO  NNTF)NrO  NTF)NrO  TF)__name__
__module____qualname____doc__rO  r   CreateCollectionr   rq  rh   rw   staticmethodr   r{   r   r[   r   r   r   r   classmethodr   r  r   r   rr   r	   rj   r   r   r   r   r=   r&   
NumpyArrayr   r   r   r   r   r   r   r   PayloadSelectorr   Payloadr   VectorStructr   rg  ra   r   r  r   r(  QueryPrefetchr4  r7  r1  r2  r3  r  DocumentImageInferenceObjectWithLookupInterfacer  r  Vectorr    r>   r'   r  r  r  r  rC  r  r  r  r  r  r  r]  r  r  r  r  r  r   r  r  r   r:   r*   r  r  r_  r  r  rX  r
  r   r  r  re  rN  r5  r<  rG  rM  rR  rV  PointVectorsr[  ri  rh  r_  rb  re  r^  ra  rX  rn  rp  rs  ru  UpdateOperationr  SparseVectorParamsr  r  r  r   r~   rQ   rS   rS   X   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] 
	V 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p #FJ/3JN38+/;?>B1Y9Y9 MMKeKKNNKK!!	
Y9 }Y9  U^^(<dBC!Y9" u||,#Y9$ %Y9& 'Y9( D(3-1F1FFG)Y9* D(3-/0+Y9, "%-Y9. e778/Y90 !)): ;1Y92 
		3Y9d 15KO38+/;?>B=R9UOeMM#"$$	&	 ###
R9, -R9. v}}-/R90 1R92 3R94 D(3-1G1GGH5R96 D(3-/07R98 "%9R9: e778;R9< !)): ;=R9> 
		?R9n 04	1.1. u||,1. 	1.
 
		1.l KO38	emm$ D(3-1F1FFG D(3-/0	
 
fmm	8 <@;?6:/3#>B15[
8F$6$678[
 8F$6$678[
 5223	[

 u||,[
 }[
 !)): ;[
 "*#[
 
T%[T%[V  !V  !T$u+T$u+	
[
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$U8F,>,>#?#MN $SW $L::!%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~   rS   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   HasIdConditionrg  r   r  r   )r  r  ignore_mentioned_idss      rQ   r  r  	  s     =Q!00F}}/C.DE   -  (%9$:L!  !!(()=>r~   rn   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  rg  r   r  r   )r  rn   include_idss      rQ   rF  rF  	  s     3x1}''s3K}};-8   -$!,L  $$[1r~   ri  c                     t        j                  | j                  dd| j                  | j                  | j
                        S )Nr   )r   r  r  rg   r   order_value)r   r   r   rg   r   r  )ri  s    rQ   rY  rY  	  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)  )rz   r)  rj   r   r  r|  )r)  r  r   s      rQ   r|  r|  	  sh    h''.>>LTL]L]^q8EB^ 
 >>??  _s   A6
)mrK   r   r>  collectionsr   r   typingr   r   r   r   r	   r
   copyr   numpyra   qdrant_clientr   $qdrant_client.common.client_warningsr   qdrant_client._pydantic_compatr   r   rO   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.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+   r,   r-   r.   $qdrant_client.local.json_path_parserr/   r0   qdrant_client.local.order_byr1   #qdrant_client.local.payload_filtersr2   +qdrant_client.local.payload_value_extractorr3   r4   (qdrant_client.local.payload_value_setterr5   qdrant_client.local.persistencer6   qdrant_client.local.sparser7   r8   r9   $qdrant_client.local.sparse_distancesr:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   r}   r-  rS   rg  rj   r  r  rF  r  rY  r  r   r|  r   r~   rQ   <module>r     st      0    & B _ ; F ; % 1 ` ` _   
 
 
 O 7 F P E A 
     
V# V# VG%
 G%
TJ5<<(9=emm9L
\\,5<<(/3EMM/B
\\,5<< E4E4E @U^^ @C @ENN @r~   