Ë
    BêñiÛÅ ã                   ó€  — 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
 d dlmZ d dlZd dlZd dlmZ d dlmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZ d dlm Z  d dl!m"Z" d dl#m$Z$m%Z%m&Z&m'Z' d dl(m)Z)m*Z* d dl+m,Z,m-Z- d dl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z?m@Z@ d dlAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZL d dlMmNZNmOZO d dlPmQZQ d dlRmSZSmTZT d dlUmVZVmWZW d dlXmYZY d dlZm[Z[ d dl\m]Z]m^Z^m_Z_ d dl`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZl dZmdZndedefd„Z G d„ d «      Zod!ejà                  dz  d"eqejä                     dejà                  fd#„Zsd!ejà                  dz  d$eqejä                     dejà                  fd%„Ztd&ejê                  dejD                  fd'„Zvd(ejî                  eqejî                     z  d)exddfd*„Zyy)+é    N)ÚOrderedDictÚdefaultdict)ÚAnyÚCallableÚSequenceÚget_args)Údeepcopy)Úgrpc)Úshow_warning_once)Ú	constructÚto_jsonable_python)Úcommon_types)Úget_args_subscribed)Ú
GrpcToRest)Úmodels)ÚScoredPoint)ÚDistanceÚExtendedPointIdÚSparseVectorÚ
OrderValue)Úevaluate_expressionÚraise_non_finite_error)Úreciprocal_rank_fusionÚdistribution_based_score_fusion)ÚContextPairÚContextQueryÚDenseQueryVectorÚDiscoveryQueryÚDistanceOrderÚ	RecoQueryÚcalculate_context_scoresÚcalculate_discovery_scoresÚcalculate_distanceÚcalculate_recommend_best_scoresÚdistance_to_orderÚcalculate_recommend_sum_scoresÚcalculate_distance_coreÚcalculate_naive_feedback_queryÚNaiveFeedbackQueryÚFeedbackItemÚNaiveFeedbackCoefficients)ÚMultiQueryVectorÚMultiRecoQueryÚMultiDiscoveryQueryÚMultiContextQueryÚMultiContextPairÚcalculate_multi_distanceÚ%calculate_multi_recommend_best_scoresÚ calculate_multi_discovery_scoresÚcalculate_multi_context_scoresÚ$calculate_multi_recommend_sum_scoresÚcalculate_multi_distance_core)ÚJsonPathItemÚparse_json_path)Úto_order_value)Úcalculate_payload_maskÚcheck_filter)Úvalue_by_keyÚ
parse_uuid)Úset_value_by_key)ÚCollectionPersistence)Úempty_sparse_vectorÚsort_sparse_vectorÚvalidate_sparse_vector)ÚSparseContextPairÚSparseContextQueryÚSparseDiscoveryQueryÚSparseQueryVectorÚSparseRecoQueryÚcalculate_distance_sparseÚcalculate_sparse_context_scoresÚ!calculate_sparse_discovery_scoresÚ&calculate_sparse_recommend_best_scoresÚmerge_positive_and_negative_avgÚ
sparse_avgÚ%calculate_sparse_recommend_sum_scoresÚ gýô  €>ÚxÚreturnc                 óÔ   — 	 t        j                  t        j                  | d¬«      «      S # t        $ r2 t        j                  t        j                  | dt        ¬«      «      cY S w xY w)NT)Ú	allow_nan)rS   Údefault)ÚjsonÚloadsÚdumpsÚ	ExceptionÚ_to_jsonable_python©rP   s    úf/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/qdrant_client/local/local_collection.pyr   r   W   sP   € ðVÜ�z‰zœ$Ÿ*™* Q°$Ô7Ó8Ð8øÜò VÜ�z‰zœ$Ÿ*™* Q°$Ô@SÔTÓUÒUðVús   ‚), ¬8A'Á&A'c            !       óN#  — e Zd ZdZdZ	 	 d�dej                  dedz  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   f   z  eee      z  eeeee      f   z  ej6                  z  ej8                  z  ez  eeef   z  eeef   z  ez  eeef   z  ej@                  z  deeeez  ez  ej@                  z  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	 d�ded!ee(e   z  ejR                  z  dedz  fd"„«       Z*	 	 d‘d#ed!ee(e   z  ejR                  z  d$edejV                  fd%„Z,	 d’d#ed&ee(e   z  dz  dejZ                  dz  fd'„Z.	 d“d(ej^                  dz  dedz  de0jb                  fd)„Z2d*edeeef   fd+„Z3	 	 	 	 	 	 d”dee   eeee   f   z  eee      z  eeeee      f   z  ej6                  z  ej8                  z  ez  eeef   z  ez  eeef   z  ez  eeef   z  ej@                  z  d,ej^                  dz  d-ed.edz  d!ee(e   z  ejR                  z  d&ee(e   z  d/edz  deejh                     fd0„Z5	 	 	 	 	 	 	 	 	 d•d1ejl                  dz  d2eejn                     dz  d,ej^                  dz  d-ed.ed!ee(e   z  ejR                  z  d&ee(e   z  d/edz  d3edz  d4e%dejp                  fd5„Z9d2ejn                  deejh                     fd6„Z:	 	 	 	 	 d–d7eeejh                        d1ejl                  d-ed.ed3edz  d,ej^                  dz  d/edz  d!ee(e   z  ejR                  z  d&ee(e   z  deejh                     fd8„Z;	 	 	 	 	 	 	 	 d—d1ejl                  dz  d3edz  d,ej^                  dz  d-edz  d.edz  d!ee(e   z  ejR                  z  d&ee(e   z  d/edz  deejh                     fd9„Z<	 	 	 	 	 	 	 	 	 	 	 d˜d:ed1ejz                  ee   z  eee      z  ej                   z  ejl                  z  ej@                  z  ej|                  z  ej~                  z  ej€                  z  dz  d3edz  d2ejn                  eejn                     z  dz  d,ej^                  dz  d-ed;ed!ee(e   z  ejR                  z  d&ee(e   z  d/edz  d<ej‚                  dz  d=d>dej„                  fd?„ZC	 	 	 	 	 	 	 	 d™de(e   eee      z  eeejˆ                  eEz  eFz  eGz  ej@                  z  f   z  ej6                  z  ej8                  z  eEz  eFz  eGz  ej@                  z  d:ed,ej^                  dz  d-ed;ed!ee(e   z  ejR                  z  d&ee(e   z  d/edz  d<ej‚                  dz  d=d>dej„                  fd@„ZH	 	 dšdedAej^                  dz  d-edej’                  fdB„ZJ	 	 d›dCe(ejz                     d!ee(e   z  ejR                  z  d&ee(e   z  deej–                     fdD„ZL	 	 	 	 	 	 	 dœdEe(ejš                     dz  dFe(ejš                     dz  dGejœ                  dz  d,ej^                  dz  d3edz  dHd>dIedz  deeee      eee      eej                      eej                      eeee         eeee         ej^                  f   fdJ„ZOe
dKeee      dLeee      dej@                  fdM„«       ZPe
dKeej                      dLeej                      dej                   fdN„«       ZQe
dKeeee         dLeeee         deee      fdO„«       ZR	 	 	 	 	 	 	 dœdEe(ejš                     dz  dFe(ejš                     dz  d,ej^                  dz  d3edz  dHd>dIedz  dGejœ                  dz  deeEeFz  eGz  ej                   z  ej@                  z  ej^                  f   fdP„ZS	 	 	 	 	 	 	 	 	 	 	 	 d�dEe(ejš                     dz  dFe(ejš                     dz  d,ej^                  dz  d-ed.ed!ee(e   z  ejR                  z  d&ee(e   z  d/edz  d3edz  dHd>dIedz  dGejœ                  dz  deejh                     fdQ„ZT	 	 	 	 	 	 	 	 	 	 	 	 	 	 džd:edEe(ejš                     dz  dFe(ejš                     dz  d,ej^                  dz  d-ed;ed/edz  d!ee(e   z  ejR                  z  d&ee(e   z  d3edz  dHd>dIedz  d<ej‚                  dz  d=d>dGejœ                  dz  dej„                  f dR„ZU	 	 	 	 dŸd,ej^                  dz  d-edSed3edz  dej¬                  f
dT„ZW	 	 	 	 dŸd,ej^                  dz  d-edSed3edz  dej°                  f
dU„ZY	 	 	 	 dŸd,ej^                  dz  d-edSed3edz  deeeZ   eee4      f   f
dV„Z[e
dWejš                  dz  dXd dedeejˆ                  ejz                  dz  f   fdY„«       Z\dZeejº                     dXd dedeee]   ee^   ee_   eejz                     f   fd[„Z`	 	 	 	 	 	 d dWejš                  dz  dZe(ejº                     dz  d,ej^                  dz  d3edz  dHd>dIedz  deejˆ                  dz  ee]   ee^   ee_   ej^                  f   fd\„Za	 	 	 	 	 	 	 	 	 	 	 d¡dWejš                  dz  dZe(ejº                     dz  d,ej^                  dz  d-ed.ed!ee(e   z  ejR                  z  d&ee(e   z  d3edz  dHd>dIedz  d/edz  deejh                     fd]„Zbed^ej´                  deeef   fd_„«       Zc	 	 	 	 	 	 d¢d`ej^                  dz  d-edaejÈ                  dz  d.ejz                  dz  d!ee(e   z  ejR                  z  d&ee(e   z  deeej–                     ejz                  dz  f   fdb„Zed“dcej^                  dz  dejÌ                  fdd„Zg	 	 	 	 	 d£d`ej^                  dz  d-ed.ejz                  dz  d!ee(e   z  ejR                  z  d&ee(e   z  deeej–                     ejz                  dz  f   fde„Zh	 	 	 	 d¤daejÈ                  d`ej^                  dz  d-ed!ee(e   z  ejR                  z  d&ee(e   z  deeej–                     ejz                  dz  f   fdf„Zi	 	 d›d-ed,ej^                  dz  d!ee(e   z  ejR                  z  d&ee(e   z  deejh                     f
dg„Zj	 	 	 	 	 	 d”dee   ez  eee      z  dhejÖ                  d3edz  d,ej^                  dz  d-ed.edz  d!ee(e   z  ejR                  z  d&ee(e   z  d/edz  deejh                     fdi„Zldjeejh                     dee   ez  eee      z  d3edked-edeejh                     fdl„Zmd1ejÜ                  dmeeejh                        d-ed!ee(e   z  ejR                  z  d&ee(e   z  deejh                     fdn„Zo	 	 	 	 	 	 d”doejà                  d3edz  d,ej^                  dz  d-ed.edz  d!ee(e   z  ejR                  z  d&ee(e   z  d/edz  deejh                     fdp„Zqdqejä                  ddfdr„Zsdqejä                  ddfds„Zt	 	 d¥dqejä                  dtej^                  dz  duejê                  dz  ddfdv„Zv	 	 d¥dwe(ejä                     ejî                  z  dtej^                  dz  duejê                  dz  ddfdx„Zxd#ed	eeee   ez  eee      z  f   ddfdy„Zy	 d“dwe(ejô                     dtej^                  dz  ddfdz„Z{d	e(e   d{ej^                  eej´                     z  ejø                  z  ejú                  z  ddfd|„Z~dCeejz                     ddfd}„Zd~ej^                  deej´                     fd„Z€d{ej^                  eej´                     z  ejø                  z  ejú                  z  deej´                     fd€„Z�d{ej^                  eej´                     z  ejø                  z  ejú                  z  ddfd�„Z‚d^ej´                  ddfd‚„Zƒ	 d“dejV                  d{ej^                  eej´                     z  ejø                  z  ejú                  z  dedz  ddfdƒ„Z„dejV                  d{ej^                  eej´                     z  ejø                  z  ejú                  z  ddfd„„Z…d…e(e   d{ej^                  eej´                     z  ejø                  z  ejú                  z  ddfd†„Z†d{ej^                  eej´                     z  ejø                  z  ejú                  z  ddfd‡„Z‡dˆe(e�j                     ddfd‰„Z‰dedŠe�j                  ddfd‹„Z‹de�j                  fdŒ„Z�y)¦ÚLocalCollectionzb
    LocalCollection is a class that represents a collection of vectors in the local storage.
    é N  NÚconfigÚlocationÚforce_disable_check_same_threadrQ   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Ústorager_   r?   Úload_vectors)Úselfr_   r`   ra   Úsparse_vectors_configÚnameÚparamss          r[   Ú__init__zLocalCollection.__init__e   sí  € ð 9=×8TÑ8TØ�N‰Nó9
Ñ5ˆÔ˜TÔ5ð !'× 5Ñ 5Ðð !%× 3Ñ 3× 9Ñ 9Ó ;÷5
á��fð ”"—(‘(˜A˜vŸ{™{Ð+´2·:±:Ô>Ñ>ó5
ˆŒð %Ð0ð +@×*EÑ*EÓ*G×H™,˜$ ˆT�2‰XÔHàð 	Ôð ð 	Ôð "&×!9Ñ!9ö@
ØˆD�"‰Hò@
ˆÔð .0ˆŒÜ)+¯©°!¼4Ô)@ˆŒä�—‘×"Ñ"Ó$Ó%Ü�4×&Ñ&×+Ñ+Ó-Ó.ñ/ä�4×$Ñ$×)Ñ)Ó+Ó,ñ-ð 	Ôð 7;×6LÑ6Lö@
Ø.2ˆD”"—(‘(˜1¤DÔ)Ñ)ò@
ˆÔð 79ˆŒØ57ˆŒØ"¨$Ð.ˆŒØˆŒØˆŒØÐÜ0°Ð;ZÓ[ˆDŒLØ×ÑÕùóA5
ùó
 Iùò@
ùò@
s   Á<HÂ,H
Ã
HÆ#Hrf   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_NAMErj   )rf   rg   rh   r   r€   s        r[   re   z'LocalCollection._resolve_vectors_config—   s¤   € ð ˆØ ÐÜ�gœv×2Ñ2Ô3Ø×)Ñ)Ð5Ü':¸GÐ&DÐ#ð "Ð#6Ð6Ð6ô #6°wÐ!?�Ø!Ð#6Ð6Ð6à#ŸM™M›Oò 	.‰LˆD�&Ø×(Ñ(Ð4Ø,2Ð# DÒ)à'-�˜tÒ$ð		.ð Ð2Ð2Ð2ó    c                 óR   — | j                   �| j                   j                  «        y y rƒ   )r{   Úclose©r}   s    r[   rŠ   zLocalCollection.close¬   s!   € Ø�<‰<Ð#Ø�L‰L×ÑÕ ð $rˆ   ÚvectorÚvector_namec                 ó®   — || j                   vrt        t        «      | j                   |<   |j                  D ]  }| j                   |   |xx   dz  cc<   Œ y ©Né   )ro   r   ÚintÚindices©r}   rŒ   r�   Úidxs       r[   Ú_update_idf_appendz"LocalCollection._update_idf_append°   sS   € Ø˜d×5Ñ5Ñ5Ü3>¼sÓ3CˆD×#Ñ# KÑ0Ø—>‘>ò 	;ˆCØ×#Ñ# KÑ0°Ó5¸Ñ:Ô5ñ	;rˆ   c                 óZ   — |j                   D ]  }| j                  |   |xx   dz  cc<   Œ y r�   )r’   ro   r“   s       r[   Ú_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 )Nç      à?r�   )ÚmathÚlog)Úclsr˜   r™   s      r[   Ú_compute_idfzLocalCollection._compute_idfº   s)   € ô �x‰x˜˜R™ #™¨"¨s©(Ñ3°aÑ7Ó8Ð8rˆ   c                 ój  — | j                  d ¬«      j                   }g }| j                  j                  |«      }|€|S t        |j                  |j
                  «      D ]=  \  }}|j                  |d«      }| j                  ||«      }	|j                  ||	z  «       Œ? t        |j                  |¬«      S )N)Úcount_filterr   )r’   Úvalues)	Úcountro   ÚgetÚzipr’   r¢   rŸ   Úappendr   )
r}   rŒ   r�   Únum_docsÚ
new_valuesÚ	idf_storer”   ÚvalueÚdocument_frequencyÚidfs
             r[   Ú_rescore_idfzLocalCollection._rescore_idf¿   s©   € Ø—:‘:¨4�:Ó0×6Ñ6ˆØˆ
Ø×+Ñ+×/Ñ/°Ó<ˆ	ØÐØˆMä˜fŸn™n¨f¯m©mÓ<ò 	+‰JˆC�Ø!*§¡¨s°AÓ!6ÐØ×#Ñ#Ð$6¸ÓAˆCØ×Ñ˜e c™kÕ*ð	+ô
  F§N¡N¸:Ô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 )Nrc   r�   )!r{   r   rt   Ú	enumerateÚloadrx   Úidry   r¦   rq   r   rŒ   r„   r‡   rf   ru   r¤   rk   Úonesrg   rm   rn   ri   r@   rp   Úarrayrj   rl   Úlenrr   rw   r•   rs   )r}   rf   ri   rp   Údeleted_idsr”   ÚpointÚloaded_vectorÚall_dense_vector_namesr   ÚvÚall_sparse_vector_namesÚall_multivector_namesÚnamed_vectorsrŒ   s                  r[   r|   zLocalCollection.load_vectorsÍ   sê  € Ø�<‰<Ñ#Ü!¤$Ó'ˆGÜ(¬Ó.ˆNÜ&¤tÓ,ˆLØˆKä'¨¯©×(9Ñ(9Ó(;Ó<ó .8‘
��Uà%(�—‘˜Ÿ™Ñ"à—‘×#Ñ# E§H¡HÔ-ð —‘×#Ñ#Ô$6°u·}±}Ó$EÒ$KÈÔLð !&§¡�ô ˜eŸl™l¬DÔ1Ü%8¸%¿,¹,Ð$G�Mô *.¨d¯l©l×.?Ñ.?Ó.AÓ)BÐ&Ø2ò 8�DØ%×)Ñ)¨$Ó/�AØ�}Ø ™×,Ñ,¨QÕ/à ™×,Ñ,ÜŸG™G D×$7Ñ$7¸Ñ$=×$BÑ$BÌ"Ï*É*ÔUôð $×*Ñ*¨C°¨;Õ7ð8ô +/¨t×/BÑ/B×/GÑ/GÓ/IÓ*JÐ'Ø3ò 8�DØ%×)Ñ)¨$Ó/�AØ�}Ø& tÑ,×3Ñ3°AÕ6à& tÑ,×3Ñ3Ô4GÓ4IÔJØ#×*Ñ*¨C°¨;Õ7ð8ô )-¨T×->Ñ->×-CÑ-CÓ-EÓ(FÐ%Ø1ò 8�DØ%×)Ñ)¨$Ó/�AØ�}Ø$ TÑ*×1Ñ1°!Õ4à$ TÑ*×1Ñ1´"·(±(¸2³,Ô?Ø#×*Ñ*¨C°¨;Õ7ò8ðQ.8ðb (/§}¡}£ò XÑ#��mÜ%'§X¡X¨mÓ%<�—‘˜TÑ"Ü02·±¼¸T¿\¹\Ó9JÔRVÔ0W�×'Ñ'¨Ò-ðXð
 (6×';Ñ';Ó'=ò :Ñ#��mØ,9�×#Ñ# DÑ)Ü02·±¼¸T¿\¹\Ó9JÔRVÔ0W�×'Ñ'¨Ñ-Ø+ò :�FØ×+Ñ+¨F°DÕ9ñ:ð:ð (4×'9Ñ'9Ó';ò XÑ#��mØJWÖ*XÀ¬2¯8©8°FÕ+;Ò*X�×!Ñ! $Ñ'Ü02·±¼¸T¿\¹\Ó9JÔRVÔ0W�×'Ñ'¨Ò-ðXð
 )ò 7‘	��TØ56�×'Ñ'¨Ñ-¨cÒ2ð7ô Ÿ8™8¤C¨¯©Ó$5¼TÔBˆD�LðW $ùò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„   Útuplert   rk   r³   Úndarrayr‡   ÚtypesÚNamedVectorr   rŒ   ÚNamedSparseVectorr   r   r,   Ú
ValueErrorÚtype)rž   r½   r   ÚqueryrŒ   s        r[   Ú_resolve_query_vector_namez*LocalCollection._resolve_query_vector_name  sz  € ô* �l¤EÔ*Ø&‰KˆD�%Ü˜%¤Ô&ÜŸ™ %›�ð0 �Vˆ|Ðð- �ð, �Vˆ|Ðô+ ˜¤b§j¡jÔ1Ü&ˆDØ!ˆFð& �Vˆ|Ðô% ˜¤e×&7Ñ&7Ô8Ø×$Ñ$ˆDÜ—X‘X˜l×1Ñ1Ó2ˆFð  �Vˆ|Ðô ˜¤e×&=Ñ&=Ô>Ø×$Ñ$ˆDØ!×(Ñ(ˆFð �Vˆ|Ðô ˜¤dÔ+Ü&ˆDÜ—X‘X˜lÓ+ˆFð �Vˆ|Ðô ˜¤hÔ/?Ó&@ÔAÜ&ˆDØ!ˆFð �Vˆ|Ðô ˜¤hÔ/?Ó&@ÔAÜ&ˆDØ!ˆFð �Vˆ|Ðô Ð7¼¸\Ó8JÐ7KÐLÓMÐMrˆ   r   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„   r_   rf   ÚdictrÄ   r   r…   r‡   )r}   r   s     r[   Úget_vector_paramsz!LocalCollection.get_vector_paramsM  s¸   € Ü�d—k‘k×)Ñ)¬4Ô0Ø�t—{‘{×*Ñ*Ñ*Ø—{‘{×*Ñ*¨4Ñ0Ð0ä  7¨4¨&Ð0OÐ!PÓQÐQä�d—k‘k×)Ñ)¬6×+>Ñ+>Ô?ØÔ*Ò*Ü  7¨4¨&Ð0OÐ!PÓQÐQà—;‘;×&Ñ&Ð&äÐ5°d·k±k×6IÑ6IÐ5JÐ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      r[   ú	<genexpr>z9LocalCollection._check_include_pattern.<locals>.<genexpr>v  ó   è ø€ ÒD™d˜a �1˜•6ÑDùó   ‚)ÚreplaceÚsplitÚallr¥   ©rž   rÍ   rÎ   Úpattern_partsÚ	key_partss        r[   Ú_check_include_patternz&LocalCollection._check_include_pattern\  sR   € ð0  Ÿ™¨¨TÓ2×8Ñ8¸Ó=ˆØ—K‘K  TÓ*×0Ñ0°Ó5ˆ	ÜÑD¤c¨-¸Ó&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      r[   rØ   z9LocalCollection._check_exclude_pattern.<locals>.<genexpr>~  rÙ   rÚ   )r´   rÛ   rÜ   rÝ   r¥   rÞ   s        r[   Ú_check_exclude_patternz&LocalCollection._check_exclude_patternx  sc   € äˆw‹<œ#˜c›(Ò"ØØŸ™¨¨TÓ2×8Ñ8¸Ó=ˆØ—K‘K  TÓ*×0Ñ0°Ó5ˆ	ÜÑD¤c¨-¸Ó&CÔDÓDÐDrˆ   rq   Ú	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 )NrO   rÐ   z[])r„   rË   rj   Ú_filter_payloadrt   r¯   r¦   )
rž   rq   rå   ræ   ÚresÚnew_pathrÎ   rª   Ú	res_arrayr”   s
             r[   rè   zLocalCollection._filter_payload€  sÖ   € ô �gœtÔ$ØˆCØ�rŠzØ #™:‘à�à%Ÿm™m›oò U‘
��UÙ˜X¨™^Õ,Ø"×2Ñ2°5¸)ÀXÐPSÁ^ÓT�C˜’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    €€r[   ú<lambda>zDLocalCollection._process_payload.<locals>.<lambda>.<locals>.<lambda>©  ó   ø€ ¨×(BÑ(BÀ7ÈCÓ(P€ rˆ   )ÚanyÚmap©rÎ   rž   rì   s   `€€r[   rò   z2LocalCollection._process_payload.<locals>.<lambda>¨  s   ù€ œCÜÔPÐR^Ó_ó€ rˆ   c                 óL   •‡ — t        t        ˆˆ fd„‰j                  «      «      S )Nc                 ó(   •— ‰j                  | ‰«      S rƒ   rð   rñ   s    €€r[   rò   zDLocalCollection._process_payload.<locals>.<lambda>.<locals>.<lambda>²  ró   rˆ   )rô   rõ   Úincluderö   s   `€€r[   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    €€r[   rò   zDLocalCollection._process_payload.<locals>.<lambda>.<locals>.<lambda>½  s   ø€ ¨C×,FÑ,FÀwÐPSÓ,TÐ(T€ rˆ   )rÝ   rõ   Úexcluderö   s   `€€r[   rò   z2LocalCollection._process_payload.<locals>.<lambda>»  s    ù€ œCÜÜTØ$×,Ñ,óó€ rˆ   )r„   rr   rt   rè   r   ÚPayloadSelectorIncludeÚPayloadSelectorExclude)rž   rq   rì   s   ` `r[   Ú_process_payloadz LocalCollection._process_payload™  s    ù€ ñ Øä�l¤DÔ)ØˆNä�l¤DÔ)Ø×&Ñ&Øôóð ô �l¤F×$AÑ$AÔBØ×&Ñ&Øôóð ô �l¤F×$AÑ$AÔBØ×&Ñ&Øôóð ð ˆrˆ   r”   Úreturn_copyc                 ób   — | j                   |   }| j                  ||«      }|rt        |«      S |S rƒ   )rq   rÿ   r	   )r}   r”   rì   r   rq   Úprocessed_payloads         r[   Ú_get_payloadzLocalCollection._get_payloadÅ  s9   € ð —,‘,˜sÑ#ˆØ ×1Ñ1°'¸<ÓHÐÙ.9ŒxÐ)Ó*Ð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�   )	rf   rw   Útolistri   rp   r„   rt   r´   r‡   )r}   r”   r  r   Údense_vectorsri   rp   Úall_vectorss           r[   Ú_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¨.ÐI¸LÐIˆä�l¤DÔ)Ø?KÖc°tÈtÐWbÒOb˜4 ¨TÑ!2Ñ2ÐcˆKÐcäˆ{Ó˜qÒ Ô%8¸KÑ%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
  ry   rw   )r:   rq   ry   rw   rs   )r}   r
  r�   Úpayload_maskÚmasks        r[   Ú_payload_and_non_deleted_maskz-LocalCollection._payload_and_non_deleted_maskò  s]   € ô .Ø—\‘\Ø)Ø—L‘LØ#×6Ñ6ô	
ˆð ˜tŸ|™|˜mÑ+ˆàÐ"à˜4×2Ñ2°;Ñ?Ð?Ñ?ˆDàˆrˆ   Úinternal_idc                 ód   — i }| j                   j                  «       D ]  \  }}||   rŒd||<   Œ |S ©NT)rw   rj   )r}   r  Ú
has_vectorr�   rs   s        r[   Ú_calculate_has_vectorz%LocalCollection._calculate_has_vector  sD   € Ø&(ˆ
Ø$(×$;Ñ$;×$AÑ$AÓ$Cò 	/Ñ ˆK˜Ø˜;Ó'Ø*.�
˜;Ò'ð	/ð Ðrˆ   Úquery_filterÚlimitÚoffsetÚscore_thresholdc                 ó  ‡ ‡— ‰ j                  |«      \  Š}g }d}	d}
t        |t        t        «      «      r‰‰ j                  vrt        d‰› d�«      ‚‰ j                  ‰   }‰ j                  j                  ‰   j                  t        j                  j                  k(  rd}
t        j                  }d}	nÚt        |t        t        «      «      s2t        |t        j                  «      r`t!        |j"                  «      dk(  rH‰‰ j$                  vrt        d‰› d�«      ‚‰ j$                  ‰   }‰ j'                  ‰«      j(                  }nG‰‰ j*                  vrt        d‰› d�«      ‚‰ j*                  ‰   }‰ j'                  ‰«      j(                  }|d t!        ‰ j,                  «       }t        |t        j                  «      r6t!        |j"                  «      dk(  rt/        |||«      }�n>t1        |||«      }�n/t        |t2        «      r„|j4                  t        j6                  j8                  k(  rt;        |||«      }�né|j4                  t        j6                  j<                  k(  rt?        |||«      }�n³tA        d	|j4                  › �«      ‚t        |tB        «      r™|
r|jE                  ˆˆ fd
„«      }|j4                  t        j6                  j8                  k(  rtG        ||«      }�n?|j4                  t        j6                  j<                  k(  rtI        ||«      }�n
tA        d	|j4                  › �«      ‚t        |tJ        «      r„|j4                  t        j6                  j8                  k(  rtM        |||«      }�n¬|j4                  t        j6                  j<                  k(  rtO        |||«      }�nvtA        d	|j4                  › �«      ‚t        |tP        «      rtS        |||«      }�n?t        |tT        «      r%|
r|jE                  ˆˆ fd„«      }tW        ||«      }�n
t        |tX        «      rt[        |||«      }nìt        |t\        «      rt_        |||«      }nÎt        |t`        «      r$|
r|jE                  ˆˆ fd„«      }tc        ||«      }nšt        |td        «      rtg        |||«      }n|t        |th        «      r7tk        |«       |
r‰ jm                  |‰«      }to        |«      }tq        ||«      }n5t        |tr        «      rtu        |||«      }nt        dtw        |«      › �«      ‚‰ jy                  |‰¬«      }t{        |«      }|t|        j~                  k(  s*t        |tP        t\        t2        tX        td        tJ        f«      rt        j€                  |«      d d d…   }nt        j€                  |«      }|�|nd}|D ]Â  }t!        |«      ||z   k\  r n¯||   sŒ||   }|	r|t        j‚                   k(  rŒ8‰ j„                  |   }|�!|t|        j~                  k(  r||k  r	 nb||kD  r n[t‡        t        jˆ                  |t‹        |«      d‰ j�                  ||«      ‰ j�                  ||«      ¬«      }|j‘                  |«       ŒÄ ||d  S )NFzSparse vector rÊ   Té   zMultivector zDense vector r�   zKRecommend strategy is expected to be either BEST_SCORE or SUM_SCORES, got: c                 ó(   •— ‰j                  | ‰«      S rƒ   ©r­   ©rP   r   r}   s    €€r[   rò   z(LocalCollection.search.<locals>.<lambda>Z  ó   ø€ Àt×GXÑGXÐYZÐ\`ÓGa€ rˆ   c                 ó(   •— ‰j                  | ‰«      S rƒ   r  r  s    €€r[   rò   z(LocalCollection.search.<locals>.<lambda>r  r  rˆ   c                 ó(   •— ‰j                  | ‰«      S rƒ   r  r  s    €€r[   rò   z(LocalCollection.search.<locals>.<lambda>z  r  rˆ   zUnsupported query vector type )r�   éÿÿÿÿr   ©r±   ÚscoreÚversionrq   rŒ   )IrÇ   r„   r   rF   ri   rÄ   r_   Úmodifierr   ÚModifierÚIDFr   ÚDOTr,   rk   rÀ   r´   Úshaperp   rÌ   Údistancerf   rq   r#   r1   r    ÚstrategyÚRecommendStrategyÚ
BEST_SCOREr$   Ú
SUM_SCORESr&   Ú	TypeErrorrG   Útransform_sparserK   rN   r-   r2   r5   r   r"   rE   rJ   r.   r3   r   r!   rD   rI   r/   r4   r   rB   r­   rA   rH   r)   r(   rÅ   r  r%   r   ÚBIGGER_IS_BETTERÚargsortÚinfry   r   r   Úfloatr  r	  r¦   )r}   r½   r  r  r  rì   r  r  ÚresultÚsparse_scoringÚrescore_idfrf   r*  Úscoresr  Úrequired_orderÚorderr”   r#  Úpoint_idÚscored_pointr   s   `                    @r[   ÚsearchzLocalCollection.search  sÓ  ù€ ð0 "×<Ñ<¸\ÓJÑˆˆlØ+-ˆØˆØˆô �l¤HÔ->Ó$?Ô@Ø˜4×.Ñ.Ñ.Ü  >°$°Ð7VÐ!WÓXÐXØ×)Ñ)¨$Ñ/ˆGØ�{‰{×)Ñ)¨$Ñ/×8Ñ8¼F¿O¹O×<OÑ<OÒOØ"�Ü—|‘|ˆHØ!‰NÜ˜¤hÔ/?Ó&@ÔAÜ�|¤R§Z¡ZÔ0´S¸×9KÑ9KÓ5LÐPQÒ5Qà˜4×,Ñ,Ñ,Ü  <°¨vÐ5TÐ!UÓVÐVØ×'Ñ'¨Ñ-ˆGØ×-Ñ-¨dÓ3×<Ñ<‰Hà˜4Ÿ<™<Ñ'Ü  =°°Ð6UÐ!VÓWÐWØ—l‘l 4Ñ(ˆGØ×-Ñ-¨dÓ3×<Ñ<ˆHàÐ-œC §¡Ó-Ð.ˆä�l¤B§J¡JÔ/Ü�<×%Ñ%Ó&¨!Ò+Ü+¨L¸'À8ÓL’ä1°,ÀÈÓR’Ü˜¤iÔ0Ø×$Ñ$¬×(@Ñ(@×(KÑ(KÒKÜ8¸ÀwÐPXÓY’Ø×&Ñ&¬&×*BÑ*B×*MÑ*MÒMÜ7¸ÀgÈxÓX’äð6Ø6B×6KÑ6KÐ5LðNóð ô ˜¤oÔ6ÙØ+×<Ñ<Ô=aÓb�Ø×$Ñ$¬×(@Ñ(@×(KÑ(KÒKÜ?ÀÈgÓV’Ø×&Ñ&¬&×*BÑ*B×*MÑ*MÒMÜ>¸|ÈWÓU’äð6Ø6B×6KÑ6KÐ5LðNóð ô ˜¤nÔ5Ø×$Ñ$¬×(@Ñ(@×(KÑ(KÒKÜ>¸|ÈWÐV^Ó_’Ø×&Ñ&¬&×*BÑ*B×*MÑ*MÒMÜ=¸lÈGÐU]Ó^’äð6Ø6B×6KÑ6KÐ5LðNóð ô ˜¤nÔ5Ü/°¸gÀxÓPŠFÜ˜Ô&:Ô;ÙØ+×<Ñ<Ô=aÓb�Ü6°|ÀWÓMŠFÜ˜Ô&9Ô:Ü5°lÀGÈXÓV‰FÜ˜¤lÔ3Ü-¨l¸GÀXÓN‰FÜ˜Ô&8Ô9ÙØ+×<Ñ<Ô=aÓb�Ü4°\À7ÓK‰FÜ˜Ô&7Ô8Ü3°LÀ'È8ÓT‰FÜ˜¤lÔ3Ü" <Ô0ÙØ#×0Ñ0°¸tÓD�ä-¨lÓ;ˆLÜ.¨|¸WÓE‰FÜ˜Ô'9Ô:Ü3°LÀ'È8ÓT‰FäÐ >¼tÀLÓ?QÐ>RÐSÓTÐUà×1Ñ1°,ÈDÐ1ÓQˆä*¨8Ó4ˆàœ]×;Ñ;Ò;¼zØäÜÜÜ#Ü!Üðô
@
ô —J‘J˜vÓ&¡t¨ tÑ,‰Eä—J‘J˜vÓ&ˆEà!Ð-‘°1ˆØò 	(ˆCÜ�6‹{˜e f™nÒ,Ùà˜’9Øà˜3‘KˆEá %¬B¯F©F¨7Ò"2ØØ—|‘| CÑ(ˆHàÐ*Ø!¤]×%CÑ%CÒCØ˜Ò.Ùà˜Ò.Ùä$Ü×"Ñ"ØÜ˜E“lØØ×)Ñ)¨#¨|Ó<Ø×(Ñ(¨¨lÓ;ôˆLð �M‰M˜,Õ'ð=	(ð@ �f�gˆÐrˆ   rÆ   ÚprefetchÚusingÚkwargsc
                 óD  — g }|�t        |t        «      r|n|g}t        |«      dkD  rF|D �cg c]  }| j                  |«      ‘Œ }}|€t	        d«      ‚| 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   ú(Query is required for merging prefetches©	ÚsourcesrÆ   r  r  r?  r  rì   r  r  ©rÆ   r?  r  r  r  rì   r  r  )Úpoints)	r„   rt   r´   Ú	_prefetchrÄ   Ú_merge_sourcesÚ_query_collectionrÁ   ÚQueryResponse)r}   rÆ   r>  r  r  r  rì   r  r  r?  r@  Ú
prefetchesrD  Úscored_pointss                 r[   Úquery_pointszLocalCollection.query_pointsÀ  sÔ   € ð& ˆ
ØÐÜ%/°¼$Ô%?™ÀhÀZˆJäˆz‹?˜QÒà@JÖK°H�t—~‘~ hÕ/ÐKˆGÐKàˆ}Ü Ð!KÓLÐLð !×/Ñ/ØØØØØØ)Ø)Ø)Ø /ð 0ó 
‰Mð !×2Ñ2ØØØ)ØØØ)Ø)Ø /ð 3ó 	ˆMô ×"Ñ"¨-Ô8Ð8ùò= Ls   ¬Bc                 ó^  — g }|j                   �3t        |j                   t        «      r|j                   n|j                   g}t        |«      dkD  r�|D �cg c]  }| j	                  |«      ‘Œ }}|j
                  €t        d«      ‚| j                  ||j
                  |j                  �|j                  ndd|j                  |j                  dd|j                  ¬«	      S | j                  |j
                  |j                  |j                  |j                  ddd|j                  ¬«      S c c}w )Nr   rB  é
   FrC  rE  )r>  r„   rt   r´   rG  rÆ   rÄ   rH  r  r?  Úfilterr  rI  )r}   r>  Úinner_prefetchesÚinner_prefetchrD  s        r[   rG  zLocalCollection._prefetchù  s"  € ØÐØ×ÑÐ(ä%/°×0AÑ0AÄ4Ô%H�×!Ò!Èx×O`ÑO`ÐNað ô ÐÓ  1Ò$ØL\Ö]¸.�t—~‘~ nÕ5Ð]ˆGÐ]à�~‰~Ð%Ü Ð!KÓLÐLð ×&Ñ&ØØ—n‘nØ(0¯©Ð(B�h—n’nÈØØ—n‘nØ%Ÿ_™_Ø"Ø"Ø (× 8Ñ 8ð 'ó 
ð 
ð ×)Ñ)Ø—n‘nØ—n‘nØ%Ÿ_™_Ø—n‘nØØ"Ø"Ø (× 8Ñ 8ð *ó 	ð 	ùò' ^s   ÁD*rD  c
           
      óØ  — t        |t        j                  t        j                  f«      �rgt        |t        j                  «      r;t	        |||z   |j
                  j                  |j
                  j                  ¬«      }
n‰|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                  |k\  sŒ|‘Œ }
}|
D �cg c]  }|j                  ‘Œ }}| j!                  |||	¬«      }t#        ||
«      D ]'  \  }}|j$                  |_        |j&                  |_        Œ) |
|d  S t        |t        j(                  «      r?| j+                  ||||z   ||	¬«      }|D �cg c]  }|�|j                  |k\  sŒ|‘Œ }}||d  S t-        «       }|D ]$  }|D ]  }|j/                  |j                  «       Œ Œ& t1        |«      dk(  rg S t3        |t5        |«      «      }| j7                  |||||||	|¬«      S c c}w c c}w c c}w )	N)Ú	responsesr  Úranking_constant_kÚweights)rT  r  zFusion method z does not exist)rì   r  )rÆ   Úprefetches_resultsr  rì   r  r   rE  )r„   r   ÚFusionQueryÚRrfQueryr   ÚrrfÚkrV  ÚfusionÚFusionÚRRFÚDBSFr   rÄ   r#  r±   Úretriever¥   rq   rŒ   ÚFormulaQueryÚ_rescore_with_formulaÚsetÚaddr´   Ú_include_ids_in_filterrt   rI  )r}   rD  rÆ   r  r  r?  r  r  rì   r  Úfusedr×   r¶   rx   Úfetched_pointsÚfetchedÚscoredÚrescoredÚsources_idsÚsourceÚfilter_with_sourcess                        r[   rH  zLocalCollection._merge_sources  sj  € ô �eœf×0Ñ0´&·/±/ÐBÕCä˜%¤§¡Ô1Ü.Ø%Ø &™.Ø',§y¡y§{¡{Ø!ŸI™I×-Ñ-ô	‘ð —<‘<¤6§=¡=×#4Ñ#4Ò4ä2¸WÈEÐTZÉNÔ[‘EØ—\‘\¤V§]¡]×%7Ñ%7Ò7ä;Ø")°¸±ô‘Eô % ~°e·l±l°^À?Ð%SÓTÐTð Ð*Ø$)ÖH˜q¨Q¯W©W¸Ó-GšÐH�ÐHð */Ö/ �5—8“8Ð/ˆCÐ/Ø!Ÿ]™]Ø ,¸\ð +ó ˆNô $' ~°uÓ#=ò /‘�˜Ø!(§¡�”Ø '§¡�•ð/ð ˜˜�>Ð!ä˜œv×2Ñ2Ô3à×1Ñ1ØØ#*Ø˜f‘nØ)Ø)ð 2ó ˆHð ,4Öq %°Ð7NÐRW×R]ÑR]ÐapÓRpšÐqˆHÐqà˜F˜GÐ$Ð$ô ›%ˆKØ!ò .�Ø#ò .�EØ—O‘O E§H¡HÕ-ñ.ð.ô �;Ó 1Ò$à�	ä&<¸\Ì4ÐP[ÓK\Ó&]Ð#Ø×-Ñ-ØØØ!4ØØ!Ø!-Ø!-Ø$3ð .ó 	ð 	ùòM Iùò 0ùò( rs   ÄIÄ%IÄ/I"Ç
I'Ç!I'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                  |j                  |j                  |||||||¬«	      S | j                  ||j                  f||||||¬«      S t        |t        j                  «      rW| j                  |j                  j                  |j                  j                  |j                  j                  |||||||¬«
      S t        |t        j                  «      rB| j!                  |j                   j"                  |j                   j$                  |||||||¬«	      S t        |t        j&                  «      r#| j!                  |j$                  |||||||¬	«      S t        |t        j(                  «      rB| j                  ||j*                  ||z   ||¬
«      \  }	}
|	|d D �cg c]  }t        |«      ‘Œ c}S t        |t        j,                  «      rT|j.                  t        j0                  j2                  k(  r| j5                  ||||¬«      S t7        d|j.                  › �«      ‚t        |t        j8                  «      rt7        d«      ‚t        |t        j:                  «      rt7        d«      ‚t        |t        j<                  «      rt7        d«      ‚t        |t        j>                  «      r#| jA                  |jB                  |||||||¬«      S | j                  ||f||||||¬«      S c c}w c c}w )z_
        Performs the query on the collection, assuming it didn't have any prefetches.
        rO  r   N)Úscroll_filterr  rì   r  )	r½   Úmmrr  r  r  r?  rì   r  r  ©r½   r  r  r  rì   r  r  )
ÚpositiveÚnegativer+  r?  r  r  r  rì   r  r  )	ÚtargetÚcontextr?  r  r  r  rì   r  r  )ru  r?  r  r  r  rì   r  r  )ro  Úorder_byr  rì   r  )r  r  rì   r  zUnknown Sample variant: z(Cannot perform fusion without prefetchesz)Cannot perform formula without prefetchesz+Cannot perform RRF query without prefetches)Úrelevance_feedbackr?  r  r  r  rì   r  r  )"r‡   ÚscrollÚrecord_to_scored_pointr„   r   ÚNearestQueryrp  Ú_search_with_mmrÚnearestr=  ÚRecommendQueryÚ	recommendrr  rs  r+  ÚDiscoverQueryÚdiscoverrt  ru  r   ÚOrderByQueryrv  ÚSampleQueryÚsampleÚSampleÚRANDOMÚ_sample_randomlyrÄ   rX  ra  rY  ÚRelevanceFeedbackQueryÚ_relevance_feedbackrw  )r}   rÆ   r?  r  r  r  rì   r  r  ÚrecordsÚ_Úrecords               r[   rI  z!LocalCollection._query_collections  s•  € ð Ò,Ô,ˆØ’˜ˆØ’˜1ˆàˆ=ØŸ™Ø*Ø˜f‘nØ)Ø)ð	 %ó ‰JˆG�Qð BIÈÈÐAQÖR°vÔ*¨6Õ2ÒRÐRÜ˜œv×2Ñ2Ô3Ø�y‰yÐ$Ø×,Ñ,Ø!&§¡ØŸ	™	Ø!-ØØ!ØØ!-Ø!-Ø$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ØŸ™Ø*ØŸ™Ø˜f‘nØ)Ø)ð %ó ‰JˆG�Qð BIÈÈÐAQÖR°vÔ*¨6Õ2ÒRÐRÜ˜œv×1Ñ1Ô2Ø�|‰|œvŸ}™}×3Ñ3Ò3Ø×,Ñ,ØØ!-Ø!-Ø!-ð	 -ó ð ô !Ð#;¸E¿L¹L¸>Ð!JÓKÐKÜ˜œv×1Ñ1Ô2ÜÐGÓHÐHÜ˜œv×2Ñ2Ô3ÜÐHÓIÐIÜ˜œvŸ™Ô/ÜÐJÓKÐKÜ˜œv×<Ñ<Ô=Ø×+Ñ+Ø#(×#;Ñ#;ØØ)ØØØ)Ø)Ø /ð ,ó 	ð 	ð —;‘;Ø# U˜^Ø)ØØØ)Ø)Ø /ð ó ð ùòE SùòH Ss   »M"ÈM'Úgroup_byÚ
group_sizeÚwith_lookupÚwith_lookup_collectionzLocalCollection | Nonec           
      óî  — t        | j                  «      }|�t        |«      }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.                  |j0                  ¬«      }t3        t5        |«      d «      |_        ŒQ t        j8                  |¬«      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     r[   rØ   z/LocalCollection.query_groups.<locals>.<genexpr>1  ó   è ø€ Ò#Y¨!¼zÈ!ÌcÔSVÈZÕ?X¤AÑ#Yùó   ‚%ž%©r±   Úhits©Ú
collectionrì   r  ©rx   rì   r  ©Úgroups)r´   ry   r	   Úset_prefetch_limit_iterativelyrM  r   rF  r„   rq   rË   r<   rt   rc  rÿ   r   Ú
PointGroupr˜  r¦   r¢   r“  Ú
WithLookupr`  r±   rì   r  ÚnextÚiterÚlookupÚGroupsResult)r}   rŒ  rÆ   r?  r>  r  r  r�  rì   r  r  rŽ  r�  Ú	max_limitrF  r�  r¶   Úgroup_valuesÚgroup_valueÚgroups_resultÚgroupr£  s                         r[   Úquery_groupszLocalCollection.query_groupsù  sí  € ô4 ˜Ÿ™Ó%ˆ	àÐÜØóˆHô +¨8°YÔ?à×"Ñ"ØØ%ØØÜ�d—l‘lÓ#ØØ%Ø+ð #ó 	
ˆô “ˆà—]‘]ò 	7ˆEÜ˜eŸm™m¬TÔ2Øä'¨¯©°xÓ@ˆLØÐ#Øä¤Ñ#Y¨|Ô#YÓ YÓZˆLà ×1Ñ1°%·-±-ÀÓNˆEŒMà+ò 7�Ø fÑ,Ü*0×*;Ñ*;¸{ÐQSÔ*T�F˜;Ñ'ä�v˜kÑ*×/Ñ/Ó0°JÒ>Øà�{Ñ#×(Ñ(×/Ñ/°Õ6ñ7ð	7ô* 26°f·m±m³oÓ1FÀvÈÐ1Nˆä�k¤3Ô'Ü ×+Ñ+Ø&Ø!Ø!ôˆKð Ð"Ð'=Ð'IØ&ò 8�Ø/×8Ñ8ØŸ™˜
Ø!,×!9Ñ!9Ø!,×!9Ñ!9ð 9ó �ô
  $¤D¨£L°$Ó7�•ð8ô ×"Ñ"¨-Ô8Ð8rˆ   c                 óz  — | j                  ||t        | j                  «      d||¬«      }t        «       }|D ]Ñ  }t	        |j
                  t        «      sŒt        |j
                  |«      }|€Œ7t        t        d„ |D «       «      «      }| j                  |j
                  |«      |_        |D ]Z  }||vrt        j                  |g ¬«      ||<   t        ||   j                  «      |k\  rŒ=||   j                  j                  |«       Œ\ ŒÓ t        |j                  «       «      d | }t	        |	t         «      rt        j"                  |	d d ¬«      }	|	�V|
�T|D ]O  }|
j%                  |j&                  g|	j(                  |	j*                  ¬«      }t-        t/        |«      d «      |_        ŒQ t        j2                  |¬«      S )NT)r½   r  r  rì   r  r  c              3   óN   K  — | ]  }t        |t        t        f«      sŒ|–— Œ y ­wrƒ   r’  r”  s     r[   rØ   z0LocalCollection.search_groups.<locals>.<genexpr>|  r•  r–  r—  r™  r›  rœ  )r=  r´   ry   r   r„   rq   rË   r<   rt   rc  rÿ   r   rŸ  r˜  r¦   r¢   r“  r   r`  r±   rì   r  r¡  r¢  r£  r¤  )r}   r½   rŒ  r  r  r�  rì   r  r  rŽ  r�  rF  r�  r¶   r¦  r§  r¨  r©  r£  s                      r[   Úsearch_groupszLocalCollection.search_groupsR  s´  € ð. —‘Ø%Ø%Ü�d—l‘lÓ#ØØ%Ø+ð ó 
ˆô “ˆàò 	7ˆEÜ˜eŸm™m¬TÔ2Øä'¨¯©°xÓ@ˆLØÐ#Øä¤Ñ#Y¨|Ô#YÓ YÓZˆLà ×1Ñ1°%·-±-ÀÓNˆEŒMà+ò 7�Ø fÑ,Ü*0×*;Ñ*;¸{ÐQSÔ*T�F˜;Ñ'ä�v˜kÑ*×/Ñ/Ó0°JÒ>Øà�{Ñ#×(Ñ(×/Ñ/°Õ6ñ7ð	7ô* 26°f·m±m³oÓ1FÀvÈÐ1Nˆä�k¤3Ô'Ü ×+Ñ+Ø&Ø!Ø!ôˆ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Ô   rZ   s    r[   rò   z'LocalCollection.facet.<locals>.<lambda>Ê  s   €   !¡˜u a¨¡d˜m€ rˆ   ©rÎ   )rª   r£   )r˜  )r   r‘   r  r¯   rq   r„   rË   r<   rc  rÅ   r   rÁ   Ú
FacetValuer=   r“  rd  Úsortedrj   r   ÚFacetValueHitÚFacetResponse)r}   rÎ   r®  r  Ú
facet_hitsr  r”   rq   r¢   Ú
values_setr¹   Úas_uuidrª   r£   r˜  s                  r[   ÚfacetzLocalCollection.facet�  sE  € ô 3>¼cÓ2Bˆ
à×1Ñ1°,Ó?ˆä% d§l¡lÓ3ò 	#‰LˆC�Ø˜’9Øä˜g¤tÔ,Øä! '¨3Ó/ˆFàˆ~Øô 14³ˆJð ò 	"�Ü˜“7Ô"5´e×6FÑ6FÓ"GÑGØô % Q›-�ÙÜ˜G›�Aà—‘˜qÕ!ð	"ð  ò #�Ø˜1“ Ñ"”ñ#ð7	#ô@ !'Ø× Ñ Ó"á+ô!ð ˆuð	!÷
á��uô × Ñ  u°EÖ:ð
ˆñ 
ô ×"Ñ"¨Ô-Ð-ùó
s   Ã9!D3rx   c                 óz  — g }|D �cg c])  }t        |t        j                  «      rt        |«      n|‘Œ+ }}|D ]z  }|| j                  vrŒ| j                  |   }| j
                  |   dk(  rŒ4|j                  t        j                  || j                  ||«      | j                  ||«      ¬«      «       Œ| |S c c}w )Nr�   ©r±   rq   rŒ   )r„   ÚuuidÚUUIDr“  rx   rs   r¦   r   ÚRecordr  r	  )r}   rx   rì   r  r5  Úid_r;  r”   s           r[   r`  zLocalCollection.retrieveÐ  sº   € ð ˆØJMÖNÀ3œ: c¬4¯9©9Ô5Œs�3Œx¸3Ñ>ÐNˆÐNØò 	ˆHØ˜tŸx™xÑ'Øà—(‘(˜8Ñ$ˆCØ�|‰|˜CÑ  AÒ%Øà�M‰MÜ—‘ØØ ×-Ñ-¨c°<Ó@Ø×,Ñ,¨S°,Ó?ôõð	ð  ˆùò# Os   ‡.B8rr  rs  r+  Úlookup_from_collectionÚlookup_from_vector_namec                 ó’  ‡ ‡‡‡‡— dt         t        j                     dt        t        t              t        t        j
                     z  t        t        t        t                 z  dd fˆˆˆˆ ˆfd„}|�|n‰ Š|�|nt        }	|�|n|	Š|�|ng }|�|ng }|t        j                  j                  k(  rt        |«      dk(  rlt        d«      ‚|t        j                  j                  k(  s|t        j                  j                  k(  r't        |«      dk(  rt        |«      dk(  rt        d«      ‚g }
g }g }g }g }g }g Š‰‰j                  v }‰‰j                  v }|r‰j                  Š |||«        |||«       n?|r‰j                  Š |||«        |||«       n‰j                   Š |||
«        |||«       t#        |‰«      }|
||||||fS )NÚexamplesÚaccrQ   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Á   ÚPointIdrx   rÄ   rk   rÀ   r  r¦   )
rÃ  rÄ  Úexampler”   Úvecrš  Úcollection_vectorsÚmentioned_idsr}   r�   s
        €€€€€r[   Úexamples_into_vectorszJLocalCollection._preprocess_recommend_input.<locals>.examples_into_vectorsü  s«   ø€ ð $ò (�Ü˜g¤x´·±Ó'>Ô?Ø j§n¡nÑ4Ü(¨6°'°Ð:YÐ)ZÓ[Ð[à$Ÿ.™.¨Ñ1�CØ,¨[Ñ9¸#Ñ>�Cä! #¤r§z¡zÔ2Ø!Ÿj™j›l˜Ø—J‘J˜s”OØ! TÓ)Ø%×,Ñ,¨WÕ5à—J‘J˜wÕ'ñ(rˆ   r   zPositive list is emptyz&No positive or negative examples given)r   r   ÚVectorInputrt   r4  r   r‡   rÁ   r,  ÚAVERAGE_VECTORr´   rÄ   r-  r.  ri   rp   rf   Úignore_mentioned_ids_filter)r}   rr  rs  r+  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   `                 @@@@r[   Ú_preprocess_recommend_inputz+LocalCollection._preprocess_recommend_inputê  s  ü€ ð$	(Üœv×1Ñ1Ñ2ð	(ä”dœ5‘kÑ"¤T¬&×*=Ñ*=Ñ%>Ñ>ÄÄdÌ4ÔPUÉ;ÑFWÑAXÑXð	(ð ÷	(ñ 	(ð( 0FÐ/QÑ+ÐW[ˆ
Ø).Ð):¡Ô@SÐð 'Ð2ñ $à&ð 	ð  (Ð3‘8¸ˆØ'Ð3‘8¸ˆð ”u×.Ñ.×=Ñ=Ò=Ü�8‹} Ò!Ü Ð!9Ó:Ð:àœ×/Ñ/×:Ñ:Ò:Øœ5×2Ñ2×=Ñ=Ò=ä�8‹} Ò!¤c¨(£m°qÒ&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)rk   Ústackr´   Úmean)rÒ  rÓ  Úpositive_vectors_npÚnegative_vectors_npÚmean_positive_vectorrŒ   s         r[   Ú_recommend_average_densez(LocalCollection._recommend_average_denseK  s€   € ô !Ÿh™hÐ'7Ó8ÐÜ<?Ð@PÓ<QÐTUÒ<UœbŸh™hÐ'7Ô8Ð[_Ðä!Ÿw™wÐ':ÀÔCÐàÐ*à$Ð';Ñ;¼b¿g¹gÐFYÐ`aÔ>bÑbð ð
 ˆð *ˆFØˆrˆ   c                 ó  — t        | «      D ]  \  }}t        |«       t        |«      | |<   Œ  t        |«      D ]  \  }}t        |«       t        |«      ||<   Œ  t        | «      }|rt        |«      }t	        ||«      }|S |}|S rƒ   )r¯   rB   rA   rM   rL   )rÒ  rÓ  ÚirŒ   râ  Úmean_negative_vectors         r[   Ú_recommend_average_sparsez)LocalCollection._recommend_average_sparse\  s¦   € ô
 #Ð#3Ó4ò 	=‰IˆAˆvÜ" 6Ô*Ü"4°VÓ"<Ð˜QÒð	=ô #Ð#3Ó4ò 	=‰IˆAˆvÜ" 6Ô*Ü"4°VÓ"<Ð˜QÒð	=ô  *Ð*:Ó;ÐáÜ#-Ð.>Ó#?Ð Ü4Ð5IÐK_Ó`ˆFð ˆð *ˆFØˆrˆ   c                 óÄ   — | D ��cg c]  }|D ]  }|‘Œ Œ }}}t        |«      dkD  r.|D ])  }|D ]"  }|j                  |D �cg c]  }| ‘Œ c}«       Œ$ Œ+ |S c c}}w c c}w ©Nr   )r´   r¦   )rÒ  rÓ  Úmulti_vectorrŒ   Úrecommend_vectorrª   s         r[   Ú_recommend_average_multiz(LocalCollection._recommend_average_multir  s…   € ð 8H×c |ÐVbÒcÈFšFÐc˜FÐcÐÑcÜÐÓ  1Ò$Ø 0ò J�Ø*ò J�FØ$×+Ñ+ÀÖ,H¸¨eªVÒ,HÕIñJðJð  Ðùó dùò -Is   †AÁ 
Ac           	      ó°  — |�|nt         j                  j                  }| j                  |||||||«      \  }}	}
}}}}|t         j                  j                  k(  rS|r| j	                  ||	«      }||fS |
r| j                  |
|«      }||fS |r| j                  ||«      }||fS t        d«      ‚|t         j                  j                  k(  s|t         j                  j                  k(  rQ|s|	rt        ||	|¬«      }||fS |
s|rt        |
||¬«      }||fS |s|rt        |||¬«      }||fS t        d|› d�«      ‚t        d|› dt         j                  › �«      ‚)Nz9No positive examples given with 'average_vector' strategy)rr  rs  r+  z-No positive or negative examples given with 'z
' strategyz
strategy `z+` is not a valid strategy, choose one from )rÁ   r,  rÏ  rÚ  rã  rç  rì  rÄ   r-  r.  r    rG   r-   )r}   rr  rs  r  r?  rÀ  rÁ  r+  rÒ  rÓ  rÔ  rÕ  Úmulti_positive_vectorsÚmulti_negative_vectorsÚedited_query_filterr½   s                   r[   Ú_construct_recommend_queryz*LocalCollection._construct_recommend_query~  sä  € ð  (Ð3‘8¼×9PÑ9P×9_Ñ9_ˆð ×,Ñ,ØØØØØØ"Ø#ó
ñ	
ØØØ#Ø#Ø"Ø"Øð ”u×.Ñ.×=Ñ=Ò=áØ#×<Ñ<Ø$Ø$ó �ð\ Ð0Ð0Ð0ñU )Ø#×=Ñ=Ø+Ø+ó �ðR Ð0Ð0Ð0ñK (Ø#×<Ñ<Ø*Ð,Bó �ðH Ð0Ð0Ð0ôA !Ð!\Ó]Ð]ð œ×/Ñ/×:Ñ:Ò:Øœ5×2Ñ2×=Ñ=Ò=áÑ#3Ü(Ø-Ø-Ø%ô �ð2 Ð0Ð0Ð0ñ) )Ñ,CÜ.Ø4Ø4Ø%ô �ð& Ð0Ð0Ð0ñ (Ñ+AÜ-Ø3Ø3Ø%ô �ð Ð0Ð0Ð0ô !ØCÀHÀ:ÈZÐXóð ô Ø˜X˜JÐ&QÔRW×RiÑRiÐQjÐkóð rˆ   c           	      ó~   — | j                  ||||	|
||«      \  }}|	�|	nt        }| j                  ||f||||||¬«      S )Nrq  )rñ  r‡   r=  )r}   rr  rs  r  r  r  rì   r  r  r?  rÀ  rÁ  r+  r½   rð  rÑ  s                   r[   r~  zLocalCollection.recommendÒ  so   € ð -1×,KÑ,KØØØØØ"Ø#Øó-
Ñ)ˆÐ)ð */Ð):¡Ô@SÐà�{‰{Ø/°Ð>Ø,ØØØ%Ø%Ø+ð ó 
ð 	
rˆ   c                 óÀ   — |�|nt         j                  j                  }| j                  ||||
|||«      \  }}|
�|
nt        }| j                  ||f||||||	|||¬«
      S )N)
r½   r  rŒ  r�  r  rì   r  r  rŽ  r�  )rÁ   r,  rÏ  rñ  r‡   r­  )r}   rŒ  rr  rs  r  r  r�  r  rì   r  r?  rÀ  rÁ  rŽ  r�  r+  r½   rð  rÑ  s                      r[   Úrecommend_groupsz LocalCollection.recommend_groupsö  s’   € ð$  (Ð3‘8¼×9PÑ9P×9_Ñ9_ˆà,0×,KÑ,KØØØØØ"Ø#Øó-
Ñ)ˆÐ)ð */Ð):¡Ô@SÐà×!Ñ!Ø/°Ð>Ø,ØØ!ØØ%Ø%Ø+Ø#Ø#9ð "ó 
ð 	
rˆ   rƒ  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  rƒ  r?  )Úoffsets_rowÚoffsets_colr8  rx   )Ú_search_distance_matrixr¯   r¦   r±   r#  rÁ   ÚSearchMatrixOffsetsResponse)r}   r  r  rƒ  r?  rx   Ú
all_scoresr÷  rø  r”   r;  Úoffset_by_idÚ
row_offsetrL  r<  r8  Úsample_scoresr#  s                     r[   Úsearch_matrix_offsetsz%LocalCollection.search_matrix_offsets#  sþ   € ð ×6Ñ6Ø%¨U¸6Èð 7ó 
‰ˆˆZð ˆØˆä;DÀS»>×J©-¨#¨x˜ #™ÐJˆÑJä)2°:Ó)>ò 	BÑ%ˆJ˜Ø -ò B�Ø×"Ñ" :Ô.Ø×"Ñ" <°·±Ñ#@ÕAñBð	Bð ˆØ'ò 	+ˆMØ&ò +�Ø—‘˜eŸk™kÕ*ñ+ð	+ô ×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ù  rt   r¥   r¦   rÁ   ÚSearchMatrixPairr±   r#  ÚSearchMatrixPairsResponse)r}   r  r  rƒ  r?  rx   rû  r  Ú	sample_idrþ  Úsample_scores              r[   Úsearch_matrix_pairsz#LocalCollection.search_matrix_pairsE  sŸ   € ð ×6Ñ6Ø%¨U¸6Èð 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±   rZ   s    r[   rò   z9LocalCollection._search_distance_matrix.<locals>.<lambda>w  s
   € °·±€ rˆ   r±  )r½   r  r  rì   r  )r‡   r†  r´   rx   rŒ   r¦   r³  r±   r¯   re  r„   rË   r=  )r}   r  r  rƒ  r?  ÚsamplesrÑ  Ú
candidatesÚ	candidaterx   r8  Úsampled_id_indexÚsampledrå  rP   Úids_to_includesÚsampling_filterÚsampled_vectorÚsearch_vectorÚsamples_scoress                       r[   rù  z'LocalCollection._search_distance_matrix\  su  € ð &(ˆØ).Ð):¡Ô@SÐð ×*Ñ*Ü�—‘‹M˜<¨Ð0Eó
ˆ
ð $ò 	*ˆIä�7‹|˜vÒ%Ùà×ÑÑ+Ø—‘˜yÕ)ð	*ô ˆw‹<˜!ÒØ�r�6ˆMô ˜¡nÔ5ˆà'.Ö/˜Vˆv�y‹yÐ/ˆÐ/Ø*,ˆô *3°7Ó);ò 	*Ñ%Ð˜gÜ/8¸«~×W¡V a¨ÀÐFVÓAVšqÐWˆOÑWÜ4°\À?ÓSˆOØ$Ÿ^™^ˆNô ˜n¬dÔ3ð Ð4Ò5à#ð ð
 "Ÿ[™[Ø3°]ÐCØ,ØØ"Ø"ð )ó ˆNð �M‰M˜.Õ)ð!	*ð$ �Fˆ{Ðùò- 0ùó
 Xs   ÂD6ÃD;ÃD;rt  rš  c                 óœ  — 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   rÁ   rÈ  rx   rÄ   rf   r  ri   rp   )rt  rš  r�   r”   Útarget_vectors        r[   Ú_preprocess_vector_inputz(LocalCollection._preprocess_vector_input‘  sæ   € ô �fœh¤u§}¡}Ó5Ô6Ø˜ZŸ^™^Ñ+Ü  6¨&¨Ð1PÐ!QÓRÐRà—.‘. Ñ(ˆCØ˜j×0Ñ0Ñ0Ø *× 2Ñ 2°;Ñ ?ÀÑ D× KÑ KÓ M�ð ! &Ð(Ð(ð  
× 9Ñ 9Ñ9Ø *× 9Ñ 9¸+Ñ FÀsÑ K�ð ! &Ð(Ð(ð !+× 7Ñ 7¸Ñ DÀSÑ I× PÑ PÓ R�à  &Ð(Ð(à�tˆ|Ðrˆ   ru  c                 ó  — 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        «      r¾t        |	d   t        «      r«t        |	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'        t)        |«      t)        |«      t)        |«      g«      dkD  rt        d«      ‚||||fS )NrÇ  rÊ   r   r�   )rr  rs  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)rr  rs  r„   r   rÁ   rÈ  rx   rÄ   rf   r  ri   rp   r¦   r   rC   rt   r4  r   r0   Úsumrr   )r}   ru  rš  r�   rÌ  Údense_context_vectorsÚsparse_context_vectorsÚmulti_context_vectorsÚpairÚpair_vectorsrÉ  r”   rŒ   s                r[   Ú_preprocess_contextz#LocalCollection._preprocess_context¥  s¡  € ð
 ˆØ "ÐØ!#ÐØ "Ðàó +	ˆDØˆLØ ŸM™M¨4¯=©=Ð9ò 1�Ü˜g¤x´·±Ó'>Ô?Ø j§n¡nÑ4Ü(¨6°'°Ð:YÐ)ZÓ[Ð[à$Ÿ.™.¨Ñ1�CØ" j×&8Ñ&8Ñ8Ø!+×!3Ñ!3°KÑ!@ÀÑ!E×!LÑ!LÓ!N™Ø$¨
×(AÑ(AÑAØ!+×!:Ñ!:¸;Ñ!GÈÑ!L™à!+×!8Ñ!8¸Ñ!EÀcÑ!J×!QÑ!QÓ!S˜à ×'Ñ'¨Ô/Ø! TÓ)Ø%×,Ñ,¨WÕ5à ×'Ñ'¨Õ0ð#1ô& ˜, q™/¬<Ô8¼ZØ˜Q‘¤ô>ð '×-Ñ-Ü%¨|¸A©ÈÐVWÉÔYöô ˜L¨™O¬TÔ2´zÀ,ÈqÁ/ÔSWÔ7XÜ˜l¨1™o¨aÑ0´%Ô8¼ZÈÐUVÉÐXYÑHZÔ\aÔ=bØ)×0Ñ0Ü#¨\¸!©_À|ÐTUÁÔWöô   ¨Q¡°Ñ 2´DÔ9¼jÈÐVWÉÐYZÑI[Ô]aÔ>bØ)×0Ñ0Ü(°,¸q±/ÈLÐYZÉOÔ\öô %Øgóð ô !Øcóð ðS+	ô\ äÐ/Ó0ÜÐ.Ó/ÜÐ.Ó/ðóð òô Ø[óð ð %Ð&<Ð>SÐUbÐbÐbrˆ   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  rt   r  r¦   rÐ  )r}   rt  ru  r  r?  rÀ  rÁ  rš  rÑ  r�   r  Ú	target_idr  r  r  rÌ  s                   r[   Ú_preprocess_discoverz$LocalCollection._preprocess_discoverë  sß   € ð ˆ>¡'ÜÐ9Ó:Ð:à/EÐ/QÑ+ÐW[ˆ
Ø).Ð):¡Ô@SÐð 'Ð2ñ $à&ð 	ð $(×#@Ñ#@ÀÈÐU`Ó#aÑ ˆ�yØ#*Ð#6”$�w”-¸Bˆð ×$Ñ$ W¨j¸+ÓFñ 	\ÐÐ5Ð7LÈmð Ð  Z°4Ò%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#  r„   rt   r4  r   r.   r   rE   rÄ   r   rD   r/   r‡   r=  )r}   rt  ru  r  r  r  rì   r  r?  rÀ  rÁ  r  r  r  r  r  rð  r½   rÑ  s                      r[   r€  zLocalCollection.discover  s  € ð( ×%Ñ%ØØØØØ"Ø#ó
ñ	
ØØ!Ø"Ø!Øð Ð$Ü˜-¬Ô.Ü˜m¨AÑ.´Ô6Ü#1°-ÐAVÓ#W‘Lä#6°}ÐF[Ó#\‘LÜ˜M¬<Ô8Ü3°MÐCYÓZ‘ä Ð!AÓBÐBð Ð"Ñ'<Ü'Ð(=Ó>‰LØÐ"Ñ'=Ü-Ð.DÓE‰LØÐ"Ñ'<Ü,Ð-BÓC‰LäÐ9Ó:Ð:à).Ð):¡Ô@SÐØ�{‰{Ø/°Ð>Ø,ØØØ%Ø%Ø+ð ó 
ð 	
rˆ   r;  c                 ó€   — t        |t        «      r|dfS t        |t        «      rd|fS t        dt	        |«      › �«      ‚)Nr   rO   zIncompatible point id type: )r„   r“  r‘   r/  rÅ   )rž   r;  s     r[   Ú_universal_idzLocalCollection._universal_idZ  sB   € ä�h¤Ô$Ø˜Q�;ÐÜ˜¤#Ô&Ø�x�<ÐÜÐ6´t¸H³~Ð6FÐGÓHÐHrˆ   ro  rv  c                 ó°   — t        | j                  «      dk(  rg d fS |€| j                  |||||¬«      S |�t        d«      ‚| j	                  |||||¬«      S )Nr   )ro  r  r  rì   r  zGOffset is not supported in conjunction with `order_by` scroll parameter)rv  ro  r  rì   r  )r´   rx   Ú_scroll_by_idrÄ   Ú_scroll_by_value)r}   ro  r  rv  r  rì   r  s          r[   rx  zLocalCollection.scrollb  s‹   € ô ˆt�x‰x‹=˜AÒØ�t�8ˆOàÐà×%Ñ%Ø+ØØØ)Ø)ð &ó ð ð ÐÜØYóð ð ×$Ñ$ØØ'ØØ%Ø%ð %ó 
ð 	
rˆ   r¡   c                 óv   — | j                  |«      }t        j                  t        j                  |«      ¬«      S )N)r£   )r  r   ÚCountResultrk   Úcount_nonzero)r}   r¡   r  s      r[   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 ré  )r&  )rP   r}   s    €r[   rò   z/LocalCollection._scroll_by_id.<locals>.<lambda>“  s   ø€ ¸D×<NÑ<NÈqÐQRÉtÓ<T€ rˆ   r±  r�   r»  )r³  rx   rj   r  r&  r´   r¦   r   r¾  r  r	  r±   )r}   ro  r  r  rì   r  Ú
sorted_idsr5  r  r;  r”   s   `          r[   r(  zLocalCollection._scroll_by_id‹  s÷   ø€ ô ˜DŸH™HŸN™NÓ,Ó2TÔUˆ
à%'ˆà×1Ñ1°-Ó@ˆà'ò 	‰MˆH�cØÐ! d×&8Ñ&8¸Ó&BÀT×EWÑEWÐX^ÓE_Ò&_Øä�6‹{˜e a™iÒ'Ùà˜’9Øà�M‰MÜ—‘ØØ ×-Ñ-¨c°<Ó@Ø×,Ñ,¨S°,Ó?ôõð	ô$ ˆv‹;˜ÒØ˜&˜5�> 6¨%¡=×#3Ñ#3Ð3Ð3à˜4�<Ðrˆ   c                 ó`  — t        |t        j                  «      rt        j                  |«      }t        |t
        «      rt        j                  |¬«      }g }| j                  j                  «       D ]T  \  }}t        | j                  |   |j                  «      }	|	€Œ,|	D ]$  }
t        |
«      }|€Œ|j                  |||f«       Œ& ŒV |j                  �|j                  nt        j                  j                   }|t        j                  j"                  k(  }|j%                  d„ |¬«       | j'                  |«      }g }t        |j(                  «      }t+        «       }|D ]É  \  }
}}|�F|t        j                  j                   k(  r|
|k  r$Œ,|t        j                  j"                  k(  r|
|kD  rŒOt-        |«      |k\  r |d fS ||   sŒh|
|f|v rŒo|j/                  |
|f«       |j                  t        j0                  || j3                  ||«      | j5                  ||«      |
¬«      «       ŒË |d fS )Nr±  c                 ó   — | d   S ré  rÔ   rZ   s    r[   rò   z2LocalCollection._scroll_by_value.<locals>.<lambda>Ð  s
   € ¨¨1©€ rˆ   ©rÎ   Úreverse)r±   rq   rŒ   Úorder_value)r„   r
   ÚOrderByr   Úconvert_order_byr“  r   rx   rj   r<   rq   rÎ   r9   r¦   Ú	directionÚ	DirectionÚASCÚDESCÚsortr  Ú
start_fromrc  r´   rd  r¾  r  r	  )r}   rv  ro  r  rì   r  Úvalue_and_idsÚexternal_idr  Úpayload_valuesrª   Úordering_valuer7  Úshould_reverser  r5  r<  Úseen_tupless                     r[   r)  z LocalCollection._scroll_by_value°  s(  € ô �h¤§¡Ô-Ü!×2Ñ2°8Ó<ˆHÜ�h¤Ô$Ü—~‘~¨(Ô3ˆHàGIˆà(,¯©¯©Ó(8ò 
	UÑ$ˆK˜ä)¨$¯,©,°{Ñ*CÀXÇ\Á\ÓRˆNØÐ%Øð (ò U�Ü!/°Ó!6�Ø!Ñ-Ø!×(Ñ(¨.¸+À{Ð)SÕTñUð
	Uð +3×*<Ñ*<Ð*H�H×&Ò&Ìf×N^ÑN^×NbÑNbˆ	à"¤f×&6Ñ&6×&;Ñ&;Ñ;ˆð 	×Ñ™~°~ÐÔFà×1Ñ1°-Ó@ˆà%'ˆä# H×$7Ñ$7Ó8ˆ
ô @C»uˆà/<ò 	Ñ+ˆE�; ØÐ%Ø¤× 0Ñ 0× 4Ñ 4Ò4Ø˜zÒ)Ø Ø¤&×"2Ñ"2×"7Ñ"7Ò7Ø˜zÒ)Ø ä�6‹{˜eÒ#Øð& �tˆ|Ðð# ˜Ò$Øà�{Ð# {Ñ2Øà�O‰O˜U KÐ0Ô1à�M‰MÜ—‘Ø"Ø ×-Ñ-¨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 )Nç      ð?r   r"  )r  rk   ÚrandomÚrandr´   rx   r2  ry   r   r   r   r4  r  r	  r¦   )r}   r  r  rì   r  r  Úrandom_scoresÚrandom_orderr5  r”   r;  r<  s               r[   r†  z LocalCollection._sample_randomlyú  sÕ   € ð ×1Ñ1°,Ó?ˆäŸ	™	Ÿ™¤s¨4¯8©8£}Ó5ˆÜ—z‘z -Ó0ˆà*,ˆØò 	(ˆCÜ�6‹{˜eÒ#Øð$ ˆð! ˜’9Øà—|‘| CÑ(ˆHä$Ü×"Ñ"ØÜ˜C“jØØ×)Ñ)¨#¨|Ó<Ø×(Ñ(¨¨lÓ;ôˆLð �M‰M˜,Õ'ð%	(ð( ˆrˆ   rp  c
           	      óæ   — |j                   �|j                   n|}
|xs t        }| j                  ||f||
||||	¬«      }|j                  �|j                  nd}d|z
  }| j	                  |||||«      S )Nrq  r›   rD  )Úcandidates_limitr‡   r=  Ú	diversityÚ_mmr)r}   r½   rp  r?  r  r  r  rì   r  r  Úsearch_limitÚsearch_resultsrK  Úlambda_s                 r[   r{  z LocalCollection._search_with_mmr  s‹   € ð 03×/CÑ/CÐ/O�s×+Ò+ÐUZˆØÒ,Ô,ˆØŸ™Ø Ð.Ø%ØØØ%Ø%Ø+ð %ó 
ˆð &)§]¡]Ð%>�C—M’MÀCˆ	Ø˜	‘/ˆà�y‰y˜¨°u¸gÀuÓMÐMrˆ   rN  rO  c                 ód  — |dk  s|dkD  rt        d«      ‚|sg S i }g }g }g }	|D ]Œ  }
| j                  |
j                     }| j                  ||g«      }t	        |t
        «      r|j                  |«      }|j                  |«       |j                  |
j                  «       |	j                  |
«       ŒŽ i }|D �
ci c]  }
|
j                  |
“Œ }}
|| j                  vr| j                  |«      j                  nd }t	        |t        «      st        j                  |«      n
t        |«      }t        ||«      D �]Æ  \  }}t	        |t         «      r©t	        |d   t"        «      r–t        j                  |«      }t	        |t        j$                  «      st        j                  |«      }t'        |||«      j)                  «       }t'        ||t        j*                  d d …f   |«      j)                  «       d   ||<   nát	        |t        «      r@t-        ||d¬«      j)                  «       }t-        ||gd¬«      j)                  «       d   ||<   n‘t        j                  |«      }t	        |d   t        j$                  «      s"|D �cg c]  }t        j                  |«      ‘Œ }}t/        |||«      j)                  «       }t/        ||g|«      j)                  «       d   ||<   t1        t3        |«      «      D ]  }||   ||||   f<   Œ �ŒÉ |d   g}|dd  }t3        |«      |k  ròt3        |«      dkD  räg }|D ]P  }||   }g }|D ]  }|j                  |||f   «       Œ t5        |«      }||z  d|z
  |z  z
  }|j                  |«       ŒR t7        |D �cg c]  }t        j8                  |«      ‘Œ c}«      rn`t        j:                  |«      j=                  «       }|j                  |j?                  |«      «       t3        |«      |k  rt3        |«      dkD  rŒä|D �cg c]  }||   ‘Œ	 c}S c c}
w c c}w c c}w c c}w )Nç        rD  z&MMR lambda must be between 0.0 and 1.0r   T)Úempty_is_zeror�   ) rÄ   rx   r±   r	  r„   rË   r¤   r¦   ri   rÌ   r*  r   rk   r³   rA   r¥   rt   r4  rÀ   r'   r  ÚnewaxisrH   r6   Úranger´   ÚmaxrÝ   ÚisneginfÚargmaxÚitemÚpop) r}   rN  r½   r?  rO  r  Úcandidate_distance_matrixÚcandidate_vectorsÚcandidate_idsr  r¶   r”   Úcandidate_vectorÚquery_raw_similaritiesÚid_to_pointr*  Úcandidate_idÚcandidate_vector_npÚnearest_candidatesÚmultivecrå  ÚselectedÚpendingÚ
mmr_scoresÚ
pending_idÚrelevance_scoreÚsimilarities_to_selectedÚselected_idÚmax_similarity_to_selectedÚ	mmr_scoreÚsimÚbest_candidate_indexs                                    r[   rL  zLocalCollection._mmr:  sv  € ð �SŠ=˜G cšMÜÐEÓFÐFáØˆIð
 ð 	"ð ÐØˆØ/1ˆ
ð $ò 	%ˆEØ—(‘(˜5Ÿ8™8Ñ$ˆCØ#×0Ñ0°°u°gÓ>ÐÜÐ*¬DÔ1Ø#3×#7Ñ#7¸Ó#>Ð à×$Ñ$Ð%5Ô6Ø× Ñ  §¡Ô*Ø×Ñ˜eÕ$ð	%ð GIÐØ4BÖC¨5�u—x‘x ‘ÐCˆÐCð 7<À4×CVÑCVÑ6VˆD×"Ñ" 5Ó)×2Ò2Ð\`ð 	ô
 ˜l¬LÔ9ô �H‰H�\Ô"ä# LÓ1ð 	ô /2°-ÐARÓ.Só $	dÑ*ˆLÐ*ÜÐ*¬DÔ1´jÐAQÐRSÑATÔV[Ô6\Ü&(§h¡hÐ/?Ó&@Ð#Ü!Ð"3´R·Z±ZÔ@Ü(*¯©Ð1BÓ(CÐ%Ü%<Ø'Ð):¸Hó&ç‘&“(ð #ô 8OØ Ð"5´b·j±jÂ!°mÑ"DÀhó8ç‘&“(˜1ñ8Ð& |Ò4ô Ð,¬lÔ;Ü%>Ø$Ø%Ø"&ô&÷ ‘&“(ð	 #ô
 8QØ Ø%Ð&Ø"&ô8÷ ‘&“(˜1ñ	8Ð& |Ò4ô ')§h¡hÐ/?Ó&@Ð#Ü!Ð"3°AÑ"6¼¿
¹
ÔCØL]Ö(^À¬¯©°(Õ);Ð(^Ð%Ð(^Ü%BØ'Ø%Øó&÷ ‘&“(ð	 #ô
 8UØ Ð#6Ð"7¸ó8ç‘&“(˜1ñ8Ð& |Ñ4ô œ3˜}Ó-Ó.ò d�ØN`ÐabÑNcÐ)¨<¸ÀqÑ9IÐ*JÒKòdðG$	dðL " !Ñ$Ð%ˆØ  Ð#ˆÜ�(‹m˜eÒ#¬¨G«°qÒ(8ØˆJà%ò -�
Ø"8¸Ñ"D�Ø+-Ð(Ø#+ò �KØ,×3Ñ3Ø1°:¸{Ð2KÑLõðô .1Ð1IÓ-JÐ*à˜oÑ-°°w±ÐB\Ñ0\Ñ\ð ð ×!Ñ! )Õ,ð-ô Ø-7Ö8 c”—‘˜SÕ!Ò8ôð Ü#%§9¡9¨ZÓ#8×#=Ñ#=Ó#?Ð Ø�O‰O˜GŸK™KÐ(<Ó=Ô>ô+ �(‹m˜eÒ#¬¨G«°qÓ(8ð. ?GÖG¨l�˜LÓ)ÒGÐGùòU DùòH )_ùò@ 9ùò Hs   Â9PÉ<P#ÎP(ÐP-rW  c                 ó\  — |D �cg c]  }t        d„ |D «       «      ‘Œ }}|j                  xs i }t        «       }	|D ]$  }|D ]  }
|	j                  |
j                  «       Œ Œ& g }|	D �]  }| j
                  |   }| j                  |d«      xs i }| j                  |«      }t        |j                  |||||¬«      }t        j                  «       5  t        j                  d«       t        j                  |«      }t        j                  |«      st!        |› d|› �«       d d d «       t#        t$        j&                  |t)        «      d| j                  ||«      | j+                  ||«      ¬«      }
|j-                  |
«       �Œ |j/                  d„ d¬	«       |d | S c c}w # 1 sw Y   ŒƒxY w)
Nc              3   óL   K  — | ]  }|j                   |j                  f–— Œ y ­wrƒ   )r±   r#  )rÖ   r¶   s     r[   rØ   z8LocalCollection._rescore_with_formula.<locals>.<genexpr>³  s   è ø€ Ò?¨U�%—(‘(˜EŸK™KÔ(Ñ?ùs   ‚"$T)Ú
expressionr;  r8  rq   r  ÚdefaultsÚignorez
 as f32 = r   r"  c                 ó   — | j                   S rƒ   )r#  rZ   s    r[   rò   z7LocalCollection._rescore_with_formula.<locals>.<lambda>Û  s
   €  A§G¡G€ rˆ   r2  )rË   rr  rc  rd  r±   rx   r  r  r   ÚformulaÚwarningsÚcatch_warningsÚsimplefilterrk   rn   Úisfiniter   r   r   r   r4  r	  r¦   r;  )r}   rÆ   rW  r  rì   r  r>  Úprefetches_scoresrr  Úpoints_to_rescorer¶   rj  r;  r  rq   r  r#  Ú	score_f32s                     r[   rb  z%LocalCollection._rescore_with_formula©  s¸  € ð Qcö
ØDLŒDÑ?°hÔ?Õ?ð
Ðð 
ð —>‘>Ò' Rˆä9<»ÐØ*ò 	0ˆHØ!ò 0�Ø!×%Ñ% e§h¡hÕ/ñ0ð	0ð
 .0ˆØ)ó 	#ˆHØŸ(™( 8Ñ,ˆKØ×'Ñ'¨°TÓ:Ò@¸bˆGØ×3Ñ3°KÓ@ˆJÜ'Ø Ÿ=™=Ø!Ø(ØØ%Ø!ôˆEô ×(Ñ(Ó*ñ LÜ×%Ñ% hÔ/ÜŸJ™J uÓ-�	Ü—{‘{ 9Ô-Ü*¨e¨W°J¸y¸kÐ+JÔK÷	Lô
 Ü×"Ñ"ØÜ˜IÓ&ØØ×)Ñ)¨+°|ÓDØ×(Ñ(¨°lÓCôˆEð �O‰O˜EÖ"ð5	#ð8 	�‰Ñ+°TˆÔ:à˜˜ÐÐùòW
÷4Lð Lús   …FÃAF"Æ"F+	rw  c	           	      ó˜  — |�|nt         }	| j                  |j                  | |	«      \  }
}g }|�|j                  |«       g }|j                  D ][  }| j                  |j
                  | |	«      \  }}|�|j                  |«       |j                  t        ||j                  ¬«      «       Œ] t        ||«      }|j                  }t        |t        j                  «      r`|j                  }t        |j                  |j                   |j"                  ¬«      }t%        |
||¬«      }| j'                  |	|f||||||¬«      S t)        d|› �«      ‚)N)rŒ   r#  )r  r  Úc)rt  ÚfeedbackÚcoefficientsrq  zUnsupported feedback strategy: )r‡   r  rt  r¦   r  rÉ  ÚDistFeedbackItemr#  rÐ  r+  r„   r   ÚNaiveFeedbackStrategyÚnaiver+   r  r  r~  r)   r=  rÄ   )r}   rw  r?  r  r  r  rì   r  r  r�   r  r"  rÌ  Úfeedback_itemsrX  Úexample_vectorÚ
example_idr+  r€   r€  Únaive_querys                        r[   rˆ  z#LocalCollection._relevance_feedbackß  sc  € ð  %Ð0‘eÔ6Iˆà#'×#@Ñ#@Ø×%Ñ% t¨[ó$
Ñ ˆ�yð 02ˆØÐ Ø× Ñ  Ô+à13ˆØ&×/Ñ/ò 	]ˆDØ)-×)FÑ)FØ—‘˜d Kó*Ñ&ˆN˜Jð Ð%Ø×$Ñ$ ZÔ0Ø×!Ñ!Ô"2¸.ÐPT×PZÑPZÔ"[Õ\ð	]ô 3°<ÀÓOˆà%×.Ñ.ˆÜ�h¤× <Ñ <Ô=Ø—^‘^ˆFÜ4°v·x±xÀ6Ç8Á8ÈvÏxÉxÔXˆLÜ,Ø$Ø'Ø)ôˆKð
 —;‘;Ø)¨;Ð7Ø)ØØØ)Ø)Ø /ð ó ð ô Ð>¸x¸jÐIÓJÐJrˆ   r¶   c                 ó¶  — t        |j                  t        j                  «      rt	        |j                  «      |_        | 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.                  j1                  |«      }|t2        kD  rt!        j4                  |«      |z  n|}|| j                  |   |<   d| j6                  |   |<   Œâd| j6                  |   |<   Œõ | j8                  j                  «       D ]™  \  }}|j                  |«      }| j6                  |   |   }	|	s$| j8                  |   |   }
| j;                  |
|«       |�7|| j8                  |   |<   d| j6                  |   |<   | j=                  ||«       Œˆd| j6                  |   |<   Œ› | j>                  j                  «       D �]  \  }}|j                  |«      }|�ò| j                  |«      }t!        j"                  |«      j%                  «       rJ d«       ‚|j&                  t(        j*                  j,                  k(  rWt         j.                  j1                  |d¬«      d d …t         j@                  f   }|t!        jB                  |dk7  |t2        «      z  }t!        j4                  |«      | j>                  |   |<   d| j6                  |   |<   �Œd| j6                  |   |<   �Œ  d| jD                  |<   y )NúVector contains NaN valuesr   r�   r!  rÜ  rQ  )#r„   r±   r¼  r½  r“  rx   r	   rq   r   rŒ   rt   r‡   rf   rj   r¤   rÌ   rk   Úisnanrô   r*  r   r   ÚCOSINEÚlinalgÚnormÚEPSILONr³   rw   ri   r—   r•   rp   rS  Úwherers   )r}   r¶   r”   rf   r�   Ú_named_vectorsrŒ   r€   r�  Úwas_deletedÚprevious_vectorÚ_named_vectorÚvector_norms                r[   Ú_update_pointzLocalCollection._update_point	  sL  € Ü�e—h‘h¤§	¡	Ô*Ü˜5Ÿ8™8“}ˆEŒHØ�h‰h�u—x‘xÑ ˆÜ$Ø16·±Ð1JÔ˜uŸ}™}Ô-ÐPRó
ˆ�‰�SÑô �e—l‘l¤DÔ)Ü*¨E¯L©LÐ9‰Gà—l‘lˆGð ,0¯<©<×+=Ñ+=Ó+?ò 	>Ñ'ˆK˜Ø—[‘[ Ó-ˆFØÐ!Ø×/Ñ/°Ó<�ÜŸ8™8 FÓ+×/Ñ/Ô1ÐOÐ3OÓOÐ1Ø—?‘?¤f§o¡o×&<Ñ&<Ò<ÜŸ9™9Ÿ>™>¨&Ó1�DØ8<¼wºœRŸX™X fÓ-°Ò4ÈF�FØ17�—‘˜[Ñ)¨#Ñ.Ø<=�×'Ñ'¨Ñ4°SÒ9à<=�×'Ñ'¨Ñ4°SÒ9ð	>ð ,0×+>Ñ+>×+DÑ+DÓ+Fò 	>Ñ'ˆK˜Ø—[‘[ Ó-ˆFØ×1Ñ1°+Ñ>¸sÑCˆKÙØ"&×"5Ñ"5°kÑ"BÀ3Ñ"G�Ø×'Ñ'¨¸ÔEàÐ!Ø8>�×#Ñ# KÑ0°Ñ5Ø<=�×'Ñ'¨Ñ4°SÑ9Ø×'Ñ'¨°Õ<à<=�×'Ñ'¨Ñ4°SÒ9ð	>ð +/×*;Ñ*;×*AÑ*AÓ*Có 	>Ñ&ˆK˜Ø—[‘[ Ó-ˆFØÐ!Ø×/Ñ/°Ó<�ÜŸ8™8 FÓ+×/Ñ/Ô1ÐOÐ3OÓOÐ1à—?‘?¤f§o¡o×&<Ñ&<Ò<Ü"$§)¡)§.¡.°¸b .Ó"AÂ!ÄRÇZÁZÀ-Ñ"P�KØœbŸh™h {°cÑ'9¸;ÌÓPÑP�FÜ68·h±h¸vÓ6F�×!Ñ! +Ñ.¨sÑ3Ø<=�×'Ñ'¨Ñ4°SÓ9à<=�×'Ñ'¨Ñ4°SÓ9ð	>ð ˆ�‰�SÒrˆ   c                 ón  — t        | j                  «      }t        |j                  t        j
                  «      r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.                  |<   nët        j0                  |t        j2                  ¬«      }t        j4                  |«      j7                  «       rJ d«       ‚| j9                  |«      }	|	j:                  t<        j>                  j@                  k(  r/t        jB                  jE                  |«      }
|
tF        kD  r||
z  n|}|||<   t        j                  | j.                  |   d«      | j.                  |<   || j"                  |<   �Œ« | jH                  j%                  «       D ]ö  \  }}|j'                  |«      }t        |«      |k  r:|t        |«      z
  dz   }tK        |«      D ]  }|j                  tM        «       «       Œ |€@tM        «       }|||<   t        j                  | j.                  |   d«      | j.                  |<   nG|||<   | jO                  ||«       t        j                  | j.                  |   d«      | j.                  |<   || jH                  |<   Œø | jP                  j%                  «       D �]Ø  \  }}|j'                  |«      }t        |«      |k  rE|t        |«      z
  dz   }tK        |«      D ]&  }|j                  t        j0                  g «      «       Œ( |€Jt        j0                  g «      ||<   t        j                  | j.                  |   d«      | j.                  |<   �nt        j0                  |t        j2                  ¬«      }t        j4                  |«      j7                  «       rJ d«       ‚| j9                  |«      }	|	j:                  t<        j>                  j@                  k(  rWt        jB                  jE                  |d¬«      d d …t        jR                  f   }|t        jT                  |d	k7  |tF        «      z  }|||<   t        j                  | j.                  |   d«      | j.                  |<   || jP                  |<   �ŒÛ y )
Nz)Payload and ids_inv must be the same sizer   r  r�   rc   r‰  r!  rÜ  rQ  )+r´   rx   r„   r±   r¼  r½  r“  ry   r¦   rq   r	   r   rk   rs   rŒ   rt   r‡   rf   rj   r¤   r)  Úresizer²   rw   r³   rn   rŠ  rô   rÌ   r*  r   r   r‹  rŒ  r�  rŽ  ri   rT  r@   r•   rp   rS  r�  )r}   r¶   r”   rf   r�   r¼   rŒ   Úfake_vectorÚ	vector_npr€   r�  ÚdiffrŠ  r”  s                 r[   Ú
_add_pointzLocalCollection._add_pointP	  s!  € Ü�$—(‘(‹mˆÜ�e—h‘h¤§	¡	Ô*Ü˜5Ÿ8™8“}ˆEŒHà ˆ�‰�—‘ÑØ�‰×Ñ˜EŸH™HÔ%à�‰×ÑÜ¸%¿-¹-Ð:SÔ'¨¯©Ô6ÐY[Ó\ô	
ô �4—<‘<Ó ¤C¨¯©Ó$5Ò5ÐbÐ7bÓbÐ5Ü—y‘y §¡¨qÓ1ˆŒä�e—l‘l¤DÔ)Ü*¨E¯L©LÐ9‰Gà—l‘lˆGð +/¯,©,×*<Ñ*<Ó*>ó 	6Ñ&ˆK˜Ø—[‘[ Ó-ˆFà×"Ñ" 1Ñ%¨Ò,Ü "§	¡	¨-¸#À¹'ÀA¹+À}×GZÑGZÐ[\ÑG]Ð9^Ó _�àˆ~ä Ÿg™g m×&9Ñ&9¸!Ñ&<Ó=�Ø%0�˜cÑ"Ü79·y±yØ×+Ñ+¨KÑ8¸!ó8�×'Ñ'¨Ò4ô ŸH™H V´2·:±:Ô>�	ÜŸ8™8 IÓ.×2Ñ2Ô4ÐRÐ6RÓRÐ4Ø×/Ñ/°Ó<�Ø—?‘?¤f§o¡o×&<Ñ&<Ò<ÜŸ9™9Ÿ>™>¨)Ó4�DØ48¼7²N 	¨DÒ 0È	�IØ%.�˜cÑ"Ü79·y±yØ×+Ñ+¨KÑ8¸!ó8�×'Ñ'¨Ñ4ð )6ˆD�L‰L˜Ó%ð3	6ð8 +/×*=Ñ*=×*CÑ*CÓ*Eò 	=Ñ&ˆK˜Ø—[‘[ Ó-ˆFÜ�=Ó! SÒ(ØœS Ó/Ñ/°!Ñ3�Ü˜t›ò @�AØ!×(Ñ(Ô)<Ó)>Õ?ð@ð ˆ~ä1Ó3�Ø%0�˜cÑ"Ü79·y±yØ×+Ñ+¨KÑ8¸!ó8�×'Ñ'¨Ò4ð &,�˜cÑ"Ø×'Ñ'¨°Ô<Ü79·y±yØ×+Ñ+¨KÑ8¸!ó8�×'Ñ'¨Ñ4ð 0=ˆD×Ñ Ò,ð+	=ð0 +/×*;Ñ*;×*AÑ*AÓ*Có 	;Ñ&ˆK˜Ø—[‘[ Ó-ˆFÜ�=Ó! SÒ(ØœS Ó/Ñ/°!Ñ3�Ü˜t›ò 7�AØ!×(Ñ(¬¯©°"«Õ6ð7ð ˆ~ä%'§X¡X¨b£\�˜cÑ"Ü79·y±yØ×+Ñ+¨KÑ8¸!ó8�×'Ñ'¨Ó4ô ŸH™H V´2·:±:Ô>�	ÜŸ8™8 IÓ.×2Ñ2Ô4ÐRÐ6RÓRÐ4Ø×/Ñ/°Ó<�Ø—?‘?¤f§o¡o×&<Ñ&<Ò<Ü"$§)¡)§.¡.°À .Ó"DÂQÌÏ
É
À]Ñ"S�KØ¤§¡¨+¸Ñ*<¸kÌ7Ó!SÑS�IØ%.�˜cÑ"Ü79·y±yØ×+Ñ+¨KÑ8¸!ó8�×'Ñ'¨Ñ4ð .;ˆD×Ñ˜kÓ*ñ3	;rˆ   Úupdate_filterÚupdate_modec                 óà  — t        |j                  t        «      r 	 t        j                  |j                  «      }t        |j                  t        «      r†i }|j                  j                  «       D ]K  \  }}|| j                  vrt        d|› �«      ‚t        |t        «      sŒ3t        |«       t        |«      ||<   ŒM |j                  j                  |«       nŠt        | j                  j!                  «       «      }	t        | j"                  j!                  «       «      }
|	r|	dgk7  s|
r|
dgk7  rt        d|	› d|
› �«      ‚| j                  s| j"                  st        d«      ‚t        |j                  t        j                  «      rt        |j                  «      |_        |j                  | j$                  v r²|t&        j(                  j*                  k(  ry | j$                  |j                     }| j,                  |   sZ|�Xi }| j.                  j                  «       D ]  \  }}||   rŒd||<   Œ t1        || j2                  |   | j4                  |   |«      sy | j7                  |«       n/|t&        j(                  j8                  k(  ry | 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 UUIDú-Wrong input: Not existing vector name error: rO   zbWrong input: Unnamed vectors are not allowed when a collection has named vectors or multivectors: z, z+Wrong input: Not existing vector name errorT) r„   r±   r“  r¼  r½  rÄ   rŒ   rË   rj   rv   r   rB   rA   Úupdatert   rf   ru   rp   rx   r   Ú
UpdateModeÚINSERT_ONLYrs   rw   r;   rq   ry   r•  ÚUPDATE_ONLYr›  r{   Úpersist)r}   r¶   rœ  r�  Ú_uuidÚeÚupdated_sparse_vectorsr�   rŒ   Úvector_namesÚmultivector_namesr”   r  rs   s                 r[   Ú_upsert_pointzLocalCollection._upsert_point³	  s—  € ô �e—h‘h¤Ô$ðTÜŸ	™	 %§(¡(Ó+�ô �e—l‘l¤DÔ)Ø%'Ð"Ø',§|¡|×'9Ñ'9Ó';ò UÑ#�˜VØ d×&<Ñ&<Ñ<Ü$Ð'TÐU`ÐTaÐ%bÓcÐcÜ˜f¤lÕ3ä*¨6Ô2ä:LÈVÓ:TÐ*¨;Ò7ðUð �L‰L×ÑÐ 6Õ7ä §¡× 1Ñ 1Ó 3Ó4ˆLÜ $ T×%6Ñ%6×%;Ñ%;Ó%=Ó >ÐÙ °"°Ò!5Ù!Ð&7¸B¸4Ò&?ä ØxØ#�n BÐ'8Ð&9ð;óð ð —<’<¨×(9Ò(9Ü Ð!NÓOÐOä�e—h‘h¤§	¡	Ô*Ü˜5Ÿ8™8“}ˆEŒHà�8‰8�t—x‘xÑØœf×/Ñ/×;Ñ;Ò;ØØ—(‘(˜5Ÿ8™8Ñ$ˆCØ—<‘< Ò$¨Ð)BØ�
Ø,0×,CÑ,C×,IÑ,IÓ,Kò 7Ñ(�K Ø" 3›<Ø26˜
 ;Ò/ð7ô $Ø! 4§<¡<°Ñ#4°d·l±lÀ3Ñ6GÈôð  Ø×Ñ˜uÕ%àœf×/Ñ/×;Ñ;Ò;ØØ�O‰O˜EÔ"à�<‰<Ð#Ø�L‰L× Ñ  Õ'ð $øôe ò TÜ  9¨U¯X©X¨JÐ6JÐ!KÓLÐRSÐSûðTús   œK Ë	K-ËK(Ë(K-rF  c                 ó  — t        |t        «      r|D ]  }| j                  |||¬«       Œ n÷t        |t        j                  «      rÆ|}t        |j
                  t        «      rt        |j
                  i}n|j
                  }t        |j                  «      D ]r  \  }}d }	|j                  �|j                  |   }	|j                  «       D �
�ci c]  \  }
}|
||   “Œ }}
}| j                  t        j                  ||	|¬«      ||¬«       Œt nt        dt        |«      › �«      ‚t        | j                  «      | j                  kD  r9t!        d| j                  d›dt        | j                  «      › d�t"        dd	¬
«       y y c c}}
w )N)rœ  r�  r»  zUnsupported type: z=Local mode is not recommended for collections with more than ú,z% points. Current collection contains zd points. Consider using Qdrant in Docker or Qdrant Cloud for better performance with large datasets.zlarge-local-collectioné   )Úcategoryr”   Ú
stacklevel)r„   rt   rª  r   ÚBatchrf   r‡   r¯   rx   r  rj   ÚPointStructrÄ   rÅ   r´   ÚLARGE_DATA_THRESHOLDr   ÚUserWarning)r}   rF  rœ  r�  r¶   Úbatchrf   r”   r;  rq   r   r¹   rŒ   s                r[   ÚupsertzLocalCollection.upsertò	  s|  € ô �fœdÔ#Øò `�Ø×"Ñ" 5¸ÐS^Ð"Õ_ñ`ä˜¤§¡Ô-ØˆEÜ˜%Ÿ-™-¬Ô.Ü.°·±Ð>‘àŸ-™-�ä!*¨5¯9©9Ó!5ò ‘��XØ�Ø—>‘>Ð-Ø#Ÿn™n¨SÑ1�Gà6=·m±m³o×F©7¨4°˜$  #¡™,ÐF�ÑFà×"Ñ"Ü×&Ñ&Ø#Ø 'Ø%ôð
 #0Ø +ð #õ ñô" Ð1´$°v³,°Ð@ÓAÐAäˆt�x‰x‹=˜4×4Ñ4Ò4ÜØOÐPT×PiÑPiÐjkÐOlð m7Ü7:¸4¿8¹8³}°oð Fnðnô %Ø,Øöð 5ùó Gs   ÃF c                 óB  — |j                  «       D �]  \  }}|| j                  vrt        d|› �«      ‚d| j                  |   |<   t	        |t
        «      r_t        |«       | j                  |   |   }| j                  ||«       t        |«      }|| j                  |   |<   | j                  ||«       Œ¤t        j                  |t        j                  ¬«      }t        j                  |«      j                  «       rJ d«       ‚| j!                  |«      }|| j"                  v rj|j$                  t&        j(                  j*                  k(  r/t        j,                  j/                  |«      }	|	t0        kD  r||	z  n|}|| j"                  |   |<   �Œ||j$                  t&        j(                  j*                  k(  rWt        j,                  j/                  |d¬«      d d …t        j2                  f   }
|t        j4                  |
dk7  |
t0        «      z  }|| j6                  |   |<   �Œ y )NrŸ  r   rc   r‰  r!  rÜ  rQ  )rj   rv   rÄ   rw   r„   r   rB   ri   r—   rA   r•   rk   r³   rn   rŠ  rô   rÌ   rf   r*  r   r   r‹  rŒ  r�  rŽ  rS  r�  rp   )r}   r”   rf   r�   rŒ   Ú
old_vectorÚ
new_vectorr™  r€   r�  r”  s              r[   Ú_update_named_vectorsz%LocalCollection._update_named_vectors
  sÉ  € ð $+§=¡=£?ó 	@ÑˆK˜Ø $×"8Ñ"8Ñ8Ü Ð#PÐQ\ÐP]Ð!^Ó_Ð_à89ˆD×#Ñ# KÑ0°Ñ5ä˜&¤,Ô/Ü& vÔ.Ø!×0Ñ0°Ñ=¸cÑB�
Ø×'Ñ'¨
°KÔ@Ü/°Ó7�
Ø8B�×#Ñ# KÑ0°Ñ5Ø×'Ñ'¨
°KÔ@ØäŸ™ ¬r¯z©zÔ:ˆIÜ—x‘x 	Ó*×.Ñ.Ô0ÐNÐ2NÓNÐ0Ø×+Ñ+¨KÓ8ˆFØ˜dŸl™lÑ*Ø—?‘?¤f§o¡o×&<Ñ&<Ò<ÜŸ9™9Ÿ>™>¨)Ó4�DØ48¼7²N 	¨DÒ 0È	�IØ1:�—‘˜[Ñ)¨#Ó.à—?‘?¤f§o¡o×&<Ñ&<Ò<Ü"$§)¡)§.¡.°À .Ó"DÂQÌÏ
É
À]Ñ"S�KØ¤§¡¨+¸Ñ*<¸kÌ7Ó!SÑS�IØ6?�×!Ñ! +Ñ.¨sÓ3ñ7	@rˆ   c                 ó&  — |D �]  }t        |j                  t        j                  «      rt	        |j                  «      n|j                  }| j
                  |   }|j                  }t        |t        «      r	t        |i}n|}| j                  |   s[|�Yi }| j                  j                  «       D ]  \  }	}
|
|   rŒd||	<   Œ t        || j                  |   | j                  |   |«      s y | j                  ||«       | j!                  |«       �Œ y r  )r„   r±   r¼  r½  r“  rx   rŒ   rt   r‡   rs   rw   rj   r;   rq   ry   r¹  Ú_persist_by_id)r}   rF  rœ  r¶   r;  r”   Úvector_structÚfixed_vectorsr  r�   rs   s              r[   Úupdate_vectorszLocalCollection.update_vectors?
  sù   € ð ó 	*ˆEÜ(2°5·8±8¼T¿Y¹YÔ(G”s˜5Ÿ8™8”}ÈUÏXÉXˆHØ—(‘(˜8Ñ$ˆCØ!ŸL™LˆMÜ˜-¬Ô.Ü!4°mÐ D‘à -�à—<‘< Ò$¨Ð)BØ�
Ø,0×,CÑ,C×,IÑ,IÓ,Kò 7Ñ(�K Ø" 3›<Ø26˜
 ;Ò/ð7ô $Ø! 4§<¡<°Ñ#4°d·l±lÀ3Ñ6GÈôñ  Ø×&Ñ& s¨MÔ:Ø×Ñ Ö)ñ'	*rˆ   Úselectorc                 ó¦   — | j                  |«      }|D ];  }| j                  |   }|D ]  }d| j                  |   |<   Œ | j                  |«       Œ= y r�   )Ú_selector_to_idsrx   rw   r»  )r}   rf   r¿  rx   r;  r”   r�   s          r[   Údelete_vectorszLocalCollection.delete_vectorsW
  sc   € ð ×#Ñ# HÓ-ˆØò 	*ˆHØ—(‘(˜8Ñ$ˆCØ&ò >�Ø<=�×'Ñ'¨Ñ4°SÒ9ð>à×Ñ Õ)ñ		*rˆ   c                 óè   — |D ]/  }|| j                   v sŒ| j                   |   }d| j                  |<   Œ1 | j                  �2|D ],  }|| j                   v sŒ| j                  j                  |«       Œ. y y r�   )rx   rs   r{   Údelete)r}   rx   r;  r”   s       r[   Ú_delete_idszLocalCollection._delete_idsh
  sw   € Øò 	&ˆHØ˜4Ÿ8™8Ò#Ø—h‘h˜xÑ(�Ø$%�—‘˜SÒ!ð	&ð
 �<‰<Ð#Øò 2�Ø˜tŸx™xÒ'Ø—L‘L×'Ñ'¨Õ1ñ2ð $rˆ   Údelete_filterc                 ó˜   — | j                  |«      }| j                  j                  «       D ��cg c]  \  }}||   sŒ|‘Œ }}}|S c c}}w rƒ   )r  rx   rj   )r}   rÆ  r  r;  r”   rx   s         r[   Ú_filter_to_idszLocalCollection._filter_to_idss
  sE   € Ø×1Ñ1°-Ó@ˆØ-1¯X©X¯^©^Ó-=×K™M˜H cÀÀcÃŠxÐKˆÑKØˆ
ùó Ls
   ¯A½Ac                 ó@  — t        |t        «      r5|D �cg c])  }t        |t        j                  «      rt	        |«      n|‘Œ+ c}S t        |t
        j                  «      r| j                  |«      S t        |t
        j                  «      r?|j                  D �cg c])  }t        |t        j                  «      rt	        |«      n|‘Œ+ c}S t        |t
        j                  «      r| j                  |j                  «      S t        dt        |«      › �«      ‚c c}w c c}w )NzUnsupported selector type: )r„   rt   r¼  r½  r“  r   ÚFilterrÈ  ÚPointIdsListrF  ÚFilterSelectorrP  rÄ   rÅ   )r}   r¿  r¿  s      r[   rÁ  z LocalCollection._selector_to_idsx
  sØ   € ô �h¤Ô%ØOWÖXÈ¤
¨3´·	±	Ô :”C˜”HÀÑCÒXÐXÜ˜¤&§-¡-Ô0Ø×&Ñ& xÓ0Ð0Ü˜¤&×"5Ñ"5Ô6ØOWÏÉÖ_È¤
¨3´·	±	Ô :”C˜”HÀÑCÒ_Ð_Ü˜¤&×"7Ñ"7Ô8Ø×&Ñ& x§¡Ó7Ð7äÐ:¼4À»>Ð:JÐKÓLÐLùò Yùò `s   •.DÂ.Dc                 óH   — | j                  |«      }| j                  |«       y rƒ   )rÁ  rÅ  )r}   r¿  rx   s      r[   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»  )r{   rx   r   r±  r  r	  r¤  )r}   r;  r”   r¶   s       r[   r»  zLocalCollection._persist_by_id˜
  sn   € Ø�<‰<Ð#Ø—(‘(˜8Ñ$ˆCÜ×&Ñ&ØØ×)Ñ)¨#¸DÈeÐ)ÓTØ×(Ñ(¨¸4Ð(Ó@ôˆEð
 �L‰L× Ñ  Õ'ð $rˆ   c                 óT  — | j                  |«      }t        t        |«      «      }|�t        |«      nd }|D ]o  }| j                  |   }|€!i | j
                  |   ¥|¥| j
                  |<   n*| j
                  |   �t        | j
                  |   ||¬«       | j                  |«       Œq y )N)rq   rª   ru   )rÁ  r	   r   r8   rx   rq   r>   r»  )	r}   rq   r¿  rÎ   rx   Újsonable_payloadru   r;  r”   s	            r[   Úset_payloadzLocalCollection.set_payload¢
  s®   € ð ×#Ñ# HÓ-ˆÜ#Ô$6°wÓ$?Ó@ÐàBEÀ/¬/¸#Ô*>ÐW[ˆàò 	*ˆHØ—(‘(˜8Ñ$ˆCØˆ|Ø$M t§|¡|°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Á  rx   r	   r   rq   r»  )r}   rq   r¿  rx   r;  r”   s         r[   Úoverwrite_payloadz!LocalCollection.overwrite_payload¼
  s]   € ð ×#Ñ# HÓ-ˆØò 	*ˆHØ—(‘(˜8Ñ$ˆCÜ (Ô);¸GÓ)DÓ EÒ KÈˆD�L‰L˜ÑØ×Ñ Õ)ñ	*rˆ   ru   c                 óâ   — | j                  |«      }|D ]Y  }| j                  |   }|D ]2  }|| j                  |   v sŒ| j                  |   j                  |«       Œ4 | j	                  |«       Œ[ y rƒ   )rÁ  rx   rq   rY  r»  )r}   ru   r¿  rx   r;  r”   rÎ   s          r[   Údelete_payloadzLocalCollection.delete_payloadÌ
  sx   € ð ×#Ñ# HÓ-ˆØò 	*ˆHØ—(‘(˜8Ñ$ˆCØò /�Ø˜$Ÿ,™, sÑ+Ò+Ø—L‘L Ñ%×)Ñ)¨#Õ.ð/ð ×Ñ Õ)ñ	*rˆ   c                 ó’   — | j                  |«      }|D ]1  }| j                  |   }i | j                  |<   | j                  |«       Œ3 y rƒ   )rÁ  rx   rq   r»  )r}   r¿  rx   r;  r”   s        r[   Úclear_payloadzLocalCollection.clear_payloadÞ
  sM   € ð ×#Ñ# HÓ-ˆØò 	*ˆHØ—(‘(˜8Ñ$ˆCØ "ˆD�L‰L˜ÑØ×Ñ Õ)ñ	*rˆ   Úupdate_operationsc                 óú  — |D �]u  }t        |t        j                  «      r±|j                  }t        |t        j                  «      r(| j                  |j
                  |j                  ¬«       Œlt        |t        j                  «      r(| j                  |j                  |j                  ¬«       Œ®t        dt        |j                  «      › �«      ‚t        |t        j                  «      r| j                  |j                  «       �Œt        |t        j                  «      rk|j                  j                  xs |j                  j                  }| j                  |j                  j                   ||j                  j"                  «       �Œ‹t        |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,                  |«       �Œkt        |t        j.                  «      r| j1                  |j0                  «       �Œ¢t        |t        j2                  «      r5|j4                  }| j5                  |j                  |j                  ¬«       �Œñt        |t        j6                  «      rV|j8                  j                  xs |j8                  j                  }| j9                  |j8                  j:                  |«       �Œat        dt        |«      › �«      ‚ y )N)rœ  zUnsupported upsert type: zUnsupported update operation: )r„   r   ÚUpsertOperationrµ  ÚPointsBatchr´  rœ  Ú
PointsListrF  rÄ   rÅ   ÚDeleteOperationrÄ  ÚSetPayloadOperationrÑ  rP  rq   rÎ   ÚOverwritePayloadOperationrÓ  ÚDeletePayloadOperationrÕ  ru   ÚClearPayloadOperationr×  ÚUpdateVectorsOperationr¾  ÚDeleteVectorsOperationrÂ  rŒ   )r}   rØ  Ú	update_opÚupsert_structÚpoints_selectorr¾  s         r[   Úbatch_update_pointsz#LocalCollection.batch_update_pointsí
  s¡  € ð +ó '	UˆIÜ˜)¤V×%;Ñ%;Ô<Ø )× 0Ñ 0�Ü˜m¬V×-?Ñ-?Ô@Ø—K‘K × 3Ñ 3À=×C^ÑC^�KÕ_Ü ¬v×/@Ñ/@ÔAØ—K‘K × 4Ñ 4ÀM×D_ÑD_�KÕ`ä$Ð'@ÄÀi×FVÑFVÓAWÐ@XÐ%YÓZÐZÜ˜I¤v×'=Ñ'=Ô>Ø—‘˜I×,Ñ,Ö-Ü˜I¤v×'AÑ'AÔBØ"+×"7Ñ"7×">Ñ">Ò"^À)×BWÑBW×B^ÑB^�Ø× Ñ Ø×)Ñ)×1Ñ1°?ÀI×DYÑDY×D]ÑD]öô ˜I¤v×'GÑ'GÔHà×/Ñ/×6Ñ6Ò\¸)×:UÑ:U×:\Ñ:\ð  ð ×&Ñ& y×'BÑ'B×'JÑ'JÈOÖ\Ü˜I¤v×'DÑ'DÔEà×,Ñ,×3Ñ3ÒV°y×7OÑ7O×7VÑ7Vð  ð ×#Ñ# I×$<Ñ$<×$AÑ$AÀ?ÖSÜ˜I¤v×'CÑ'CÔDØ×"Ñ" 9×#:Ñ#:Ö;Ü˜I¤v×'DÑ'DÔEØ!*×!9Ñ!9�Ø×#Ñ#Ø"×)Ñ)¸×9UÑ9Uð $ö ô ˜I¤v×'DÑ'DÔEà×,Ñ,×3Ñ3ÒV°y×7OÑ7O×7VÑ7Vð  ð ×#Ñ# I×$<Ñ$<×$CÑ$CÀ_ÖUä Ð#AÄ$ÀyÃ/ÐARÐ!SÓTÐTñO'	Urˆ   Ú
new_configc                 óp   — || j                   vrt        d|› d�«      ‚|| j                  j                   |<   y )NrÉ   z! does not exist in the collection)ri   rÄ   r_   )r}   r�   rè  s      r[   Úupdate_sparse_vectors_configz,LocalCollection.update_sparse_vectors_config  s;   € ð ˜d×1Ñ1Ñ1Ü˜w { mÐ3TÐUÓVÐVà2<ˆ�‰×"Ñ" ;Ò/rˆ   c                 óÎ  — t        j                  t         j                  j                  t         j                  j
                  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 | j                  j&                  ¬«      ¬«      S )Nr   r�   )rf   Úshard_numberÚreplication_factorÚwrite_consistency_factorÚon_disk_payloadri   é   éd   i'  )ÚmÚef_constructÚfull_scan_thresholdé    )Úwal_capacity_mbÚwal_segments_aheadgš™™™™™É?iè  r^   é   )Údeleted_thresholdÚvacuum_min_vector_numberÚdefault_segment_numberÚindexing_thresholdÚflush_interval_secÚmax_optimization_threads)r€   Úhnsw_configÚ
wal_configÚoptimizer_configÚquantization_configÚmetadata)ÚstatusÚoptimizer_statusÚindexed_vectors_countÚpoints_countÚsegments_countÚpayload_schemar_   )r   ÚCollectionInfoÚCollectionStatusÚGREENÚOptimizersStatusOneOfÚOKr£   ÚCollectionConfigÚCollectionParamsr_   rf   rì  rí  rî  rï  ri   Ú
HnswConfigÚ	WalConfigÚOptimizersConfigr  r‹   s    r[   ÚinfozLocalCollection.info"  s  € Ü×$Ñ$Ü×*Ñ*×0Ñ0Ü#×9Ñ9×<Ñ<Ø"#ØŸ™›×+Ñ+ØØÜ×*Ñ*Ü×.Ñ.Ø ŸK™K×/Ñ/Ø!%§¡×!9Ñ!9Ø'+§{¡{×'EÑ'EØ-1¯[©[×-QÑ-QØ$(§K¡K×$?Ñ$?Ø#'§;¡;×#=Ñ#=ôô #×-Ñ-ØØ!$Ø(-ôô
 "×+Ñ+Ø$&Ø'(ôô "(×!8Ñ!8Ø&)Ø-1Ø+,Ø',Ø'(Ø-.ô"ð %)ØŸ™×-Ñ-ô7ô$
ð $	
rˆ   )NF)rQ   N)rO   )T)TT)Frƒ   )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)NN)ŽÚ__name__Ú
__module__Ú__qualname__Ú__doc__r²  r   ÚCreateCollectionr“  rr   r�   ÚstaticmethodrË   r…   r¿   re   rŠ   r   r•   r—   Úclassmethodr‘   r4  rŸ   r­   r|   rt   rÁ   rÂ   rÃ   r   rF   r,   Ú
NumpyArrayrÇ   rÌ   rá   rä   r   r   rè   r   ÚPayloadSelectorrÿ   ÚPayloadr  ÚVectorStructr	  rÊ  rk   rÀ   r  r  r   r=  ÚQueryÚPrefetchrJ  rM  rG  rH  rI  rÈ  ÚDocumentÚImageÚInferenceObjectÚWithLookupInterfacer¤  rª  ÚVectorr    rG   r-   r­  rµ  r¹  r¾  r`  rÎ  r,  rÚ  rã  rç  rì  rñ  r~  rô  rú  rÿ  r  r  r   rù  r  r   rC   r0   r  r#  r€  r&  r5  rx  r+  r£   r(  r)  r†  ÚMmrr{  rL  ra  rb  ÚRelevanceFeedbackInputrˆ  r±  r•  r›  r¡  rª  r°  rµ  r¹  ÚPointVectorsr¾  rÌ  rË  rÂ  rÅ  rÈ  rÁ  rÄ  r»  rÑ  rÓ  rÕ  r×  ÚUpdateOperationrç  ÚSparseVectorParamsrê  r
  r  rÔ   rˆ   r[   r]   r]   ^   sz  „ ñð "Ðð
  $Ø05ñ	0à×'Ñ'ð0ð ˜‘*ð0ð *.ð	0ð
 
ó0ðd ð3Ø�c˜6×.Ñ.Ð.Ñ/ð3à	ˆt�C˜×,Ñ,Ð,Ñ-¨t°C¸×9LÑ9LÐ4LÑ/MÐMÑ	Nò3ó ð3ó(!ð;¨ð ;ÀCð ;ÈDó ;ð;¨ð ;ÀCð ;ÈDó ;ð ð9˜cð 9 cð 9¨eò 9ó ð9ðG <ð G¸cð GÀló GóLCð\ ð/ð �‰KØ�C˜˜e™Ð$Ñ%ñ&à�4˜‘;Ññ ð �C˜˜d 5™kÑ*Ð*Ñ+ñ,ð ×Ññ	 ð
 ×%Ñ%ñ&ð ñð �CÐ)Ð)Ñ*ñ+ð �CÐ*Ð*Ñ+ñ,ð ñ	ð �CÐ)Ð)Ñ*ñ
+ð ×Ññð/ð  
ˆsÐ$Ð'8Ñ8Ð;KÑKÈe×N^ÑN^Ñ^Ð^Ñ	_ò!/ó ð/ðbM cð M¨f×.AÑ.Aó Mð ðE¨Sð E°sð E¸tò Eó ðEð6 ðE¨Sð E°sð E¸tò Eó ðEð àIKñØðØ&.°¨u°d¨{Ñ&;ðØCFðà	òó ðð0 ð FJñ)àð)ð ˜X c™]Ñ*¨U×-BÑ-BÑBð)ð 
�‰ò	)ó ð)ð\ FJØ ñ	QàðQð ˜X c™]Ñ*¨U×-BÑ-BÑBðQð ð	Qð
 
�‰óQð EJñ!Øð!Ø&*¨X°c©]Ñ&:¸TÑ&Að!à	×	Ñ	˜tÑ	#ó!ðL #'ñàŸ™¨Ñ,ðð ˜4‘Zðð 
�‰ó	ð4°ð ¸¸cÀ4¸i¹ó ð2 -1ØØ!ØEIØ-2Ø(,ñ-jð �‰KØ�C˜˜e™Ð$Ñ%ñ&à�4˜‘;Ññ ð �C˜˜d 5™kÑ*Ð*Ñ+ñ,ð ×Ññ	 ð
 ×%Ñ%ñ&ð ñð �CÐ)Ð)Ñ*ñ+ð  ñ ð �CÐ*Ð*Ñ+ñ	,ð ñ
ð �CÐ)Ð)Ñ*ñ+ð ×Ññðjð" —l‘l TÑ)ð#jð$ ð%jð& �d‘
ð'jð( ˜X c™]Ñ*¨U×-BÑ-BÑBð)jð* ˜X c™]Ñ*ð+jð,  ™ð-jð. 
ˆf× Ñ Ñ	!ó/jð\ %)Ø04Ø,0ØØØEIØ-2Ø(,Ø ñ79à�{‰{˜TÑ!ð79ð �u—~‘~Ñ&¨Ñ-ð79ð —l‘l TÑ)ð	79ð
 ð79ð ð79ð ˜X c™]Ñ*¨U×-BÑ-BÑBð79ð ˜X c™]Ñ*ð79ð  ™ð79ð �T‰zð79ð ð79ð 
×	Ñ	ó79ðr$ %§.¡.ð $°T¸%×:KÑ:KÑ5Ló $ðX !Ø,0Ø(,ØEIØ-2ñRà�d˜5×,Ñ,Ñ-Ñ.ðRð �{‰{ðRð ð	Rð
 ðRð �T‰zðRð —l‘l TÑ)ðRð  ™ðRð ˜X c™]Ñ*¨U×-BÑ-BÑBðRð ˜X c™]Ñ*ðRð 
ˆe×ÑÑ	 óRðl %)Ø Ø,0Ø Ø!ØEJØ-2Ø(,ñDà�{‰{˜TÑ!ðDð �T‰zðDð —l‘l TÑ)ð	Dð
 �T‰zðDð �d‘
ðDð ˜X c™]Ñ*¨U×-BÑ-BÑBðDð ˜X c™]Ñ*ðDð  ™ðDð 
ˆe×ÑÑ	 óDðh Ø ØAEØ,0ØØØEIØ-2Ø(,Ø8<Ø;?ñ1W9àðW9ð �M‰MØ�5‰kñà�4˜‘;Ññ ð × Ñ ñ!ð �k‰kñ	ð
 ×Ññð �n‰nñð �k‰kñð ×#Ñ#ñ$ð ñ	ð	W9ð �T‰zðW9ð  —.‘. 4¨¯©Ñ#7Ñ7¸$Ñ>ð!W9ð" —l‘l TÑ)ð#W9ð$ ð%W9ð& ð'W9ð( ˜X c™]Ñ*¨U×-BÑ-BÑBð)W9ð* ˜X c™]Ñ*ð+W9ð,  ™ð-W9ð. ×.Ñ.°Ñ5ð/W9ð0 !9ð1W9ð2 
×	Ñ	ó3W9ðN .2ØØØFJØ-2Ø(,Ø8<Ø;?ñ+I9à˜u‘oØ
ˆt�E‰{Ñ
ñà
Ø�—‘ Ñ*¨_Ñ<¸~ÑMÐPU×P`ÑP`Ñ`Ð`ñ
ñ
ð
 ×
Ñ
ñð ×
!Ñ
!ñ"ð ñð ñð ñ	ð ×
Ñ
ñ
ðI9ð ðI9ð —m‘m dÑ*ðI9ð ðI9ð  ð!I9ð" ˜X c™]Ñ*¨V×-CÑ-CÑCð#I9ð$ ˜X c™]Ñ*ð%I9ð&  ™ð'I9ð( ×.Ñ.°Ñ5ð)I9ð* !9ð+I9ð, 
×	Ñ	ó-I9ð\ -1Øñ	1.àð1.ð —l‘l TÑ)ð1.ð ð	1.ð
 
×	Ñ	ó1.ðl FJØ-2ñ	à�e—m‘mÑ$ðð ˜X c™]Ñ*¨U×-BÑ-BÑBðð ˜X c™]Ñ*ð	ð
 
ˆf�m‰mÑ	óð8 9=Ø8<Ø37Ø,0Ø Ø;?Ø.2ñ_
à˜6×-Ñ-Ñ.°Ñ5ð_
ð ˜6×-Ñ-Ñ.°Ñ5ð_
ð ×)Ñ)¨DÑ0ð	_
ð
 —l‘l TÑ)ð_
ð �T‰zð_
ð !9ð_
ð "% t¡ð_
ð 
ØˆT�%‰[ÑØˆT�%‰[ÑØˆV× Ñ Ñ!ØˆV× Ñ Ñ!ØˆT�$�u‘+ÑÑØˆT�$�u‘+ÑÑØ�‰ð	ñ
ó_
ðB ðØ˜t E™{Ñ+ðØ?CÀDÈÁKÑ?Pðà	×	Ñ	òó ðð  ðØ˜v×2Ñ2Ñ3ðà˜v×2Ñ2Ñ3ðð 
×	Ñ	òó ðð* ð	 Ø˜t D¨¡KÑ0Ñ1ð	 ØEIÈ$ÈtÐTYÉ{ÑJ[ÑE\ð	 à	ˆd�5‰kÑ	ò	 ó ð	 ð 9=Ø8<Ø,0Ø Ø;?Ø.2Ø37ñR1à˜6×-Ñ-Ñ.°Ñ5ðR1ð ˜6×-Ñ-Ñ.°Ñ5ðR1ð —l‘l TÑ)ð	R1ð
 �T‰zðR1ð !9ðR1ð "% t¡ðR1ð ×)Ñ)¨DÑ0ðR1ð 
Ø�OÑ# nÑ4°v×7JÑ7JÑJÈU×M]ÑM]Ñ]Ø�‰ð	ñ
óR1ðl 9=Ø8<Ø,0ØØØEIØ-2Ø(,Ø Ø;?Ø.2Ø37ñ"
à˜6×-Ñ-Ñ.°Ñ5ð"
ð ˜6×-Ñ-Ñ.°Ñ5ð"
ð —l‘l TÑ)ð	"
ð
 ð"
ð ð"
ð ˜X c™]Ñ*¨U×-BÑ-BÑBð"
ð ˜X c™]Ñ*ð"
ð  ™ð"
ð �T‰zð"
ð !9ð"
ð "% t¡ð"
ð ×)Ñ)¨DÑ0ð"
ð 
ˆf× Ñ Ñ	!ó"
ðN 9=Ø8<Ø-1ØØØ(,ØFJØ-2Ø Ø;?Ø.2Ø8<Ø;?Ø37ñ!+
àð+
ð ˜6×-Ñ-Ñ.°Ñ5ð+
ð ˜6×-Ñ-Ñ.°Ñ5ð	+
ð
 —m‘m dÑ*ð+
ð ð+
ð ð+
ð  ™ð+
ð ˜X c™]Ñ*¨V×-CÑ-CÑCð+
ð ˜X c™]Ñ*ð+
ð �T‰zð+
ð !9ð+
ð "% t¡ð+
ð ×.Ñ.°Ñ5ð+
ð !9ð+
ð  ×)Ñ)¨DÑ0ð!+
ð" 
×	Ñ	ó#+
ð^ -1ØØØ ñ 
à—l‘l TÑ)ð 
ð ð 
ð ð	 
ð
 �T‰zð 
ð 
×	*Ñ	*ó 
ðH -1ØØØ ñ
à—l‘l TÑ)ð
ð ð
ð ð	
ð
 �T‰zð
ð 
×	(Ñ	(ó
ð2 -1ØØØ ñ3à—l‘l TÑ)ð3ð ð3ð ð	3ð
 �T‰zð3ð 
ˆt�OÑ$ d¨4°Ñ+<Ñ&=Ð=Ñ	>ó3ðj ðØ×"Ñ" TÑ)ðØ7HðØWZðà	ˆv�}‰}˜eŸm™m¨dÑ2Ð2Ñ	3òó ðð&DcØ˜F×.Ñ.Ñ/ðDcØ=NðDcØ]`ðDcà	Øˆ[Ñ˜4Ð 1Ñ2°DÐ9IÑ4JÈDÐQV×Q^ÑQ^ÑL_Ð_ñ
óDcðP -1Ø7;Ø,0Ø Ø;?Ø.2ñ-
à×"Ñ" TÑ)ð-
ð ˜&×,Ñ,Ñ-°Ñ4ð-
ð —l‘l TÑ)ð	-
ð
 �T‰zð-
ð !9ð-
ð "% t¡ð-
ð 
Ø�‰˜ÑØˆ[ÑØÐÑØÐÑØ�‰ð		ñ
ó-
ðb -1Ø7;Ø,0ØØØEIØ-2Ø Ø;?Ø.2Ø(,ñ>
à×"Ñ" TÑ)ð>
ð ˜&×,Ñ,Ñ-°Ñ4ð>
ð —l‘l TÑ)ð	>
ð
 ð>
ð ð>
ð ˜X c™]Ñ*¨U×-BÑ-BÑBð>
ð ˜X c™]Ñ*ð>
ð �T‰zð>
ð !9ð>
ð "% t¡ð>
ð  ™ð>
ð 
ˆf× Ñ Ñ	!ó>
ð@ ðI V×%;Ñ%;ð IÀÀcÈ3ÀhÁò Ió ðIð .2ØØ)-Ø'+ØEIØ-2ñ"
à—|‘| dÑ*ð"
ð ð"
ð —-‘- $Ñ&ð	"
ð
 —‘ Ñ$ð"
ð ˜X c™]Ñ*¨U×-BÑ-BÑBð"
ð ˜X c™]Ñ*ð"
ð 
ˆt�E—L‘LÑ! 5§=¡=°4Ñ#7Ð7Ñ	8ó"
ñH@ %§,¡,°Ñ"5ð @À×ASÑASó @ð .2ØØ'+ØEIØ-2ñ# à—|‘| dÑ*ð# ð ð# ð —‘ Ñ$ð	# ð
 ˜X c™]Ñ*¨U×-BÑ-BÑBð# ð ˜X c™]Ñ*ð# ð 
ˆt�E—L‘LÑ! 5§=¡=°4Ñ#7Ð7Ñ	8ó# ðP .2ØØEIØ-2ñHà—-‘-ðHð —|‘| dÑ*ðHð ð	Hð
 ˜X c™]Ñ*¨U×-BÑ-BÑBðHð ˜X c™]Ñ*ðHð 
ˆt�E—L‘LÑ! 5§=¡=°4Ñ#7Ð7Ñ	8óHð\ FJØ-2ñ!àð!ð —l‘l TÑ)ð!ð ˜X c™]Ñ*¨U×-BÑ-BÑBð	!ð
 ˜X c™]Ñ*ð!ð 
ˆe×ÑÑ	 ó!ðP -1ØØ!ØEIØ-2Ø(,ñNà˜E‘{ \Ñ1°D¸¸e¹Ñ4EÑEðNð �Y‰YðNð �T‰zð	Nð
 —l‘l TÑ)ðNð ðNð �d‘
ðNð ˜X c™]Ñ*¨U×-BÑ-BÑBðNð ˜X c™]Ñ*ðNð  ™ðNð 
ˆf× Ñ Ñ	!óNð:mHà˜V×/Ñ/Ñ0ðmHð ˜5‘k LÑ0°4¸¸U¹Ñ3DÑDðmHð ð	mHð
 ðmHð ðmHð 
ˆf× Ñ Ñ	!ómHð^4 à×"Ñ"ð4 ð !  f×&8Ñ&8Ñ!9Ñ:ð4 ð ð	4 ð
 ˜X c™]Ñ*¨U×-BÑ-BÑBð4 ð ˜X c™]Ñ*ð4 ð 
ˆf× Ñ Ñ	!ó4 ðt -1ØØ!ØEIØ-2Ø(,ñ3Kà"×9Ñ9ð3Kð �T‰zð3Kð —l‘l TÑ)ð	3Kð
 ð3Kð �d‘
ð3Kð ˜X c™]Ñ*¨U×-BÑ-BÑBð3Kð ˜X c™]Ñ*ð3Kð  ™ð3Kð 
ˆf× Ñ Ñ	!ó3Kðl9 6×#5Ñ#5ð 9¸$ó 9ðva; × 2Ñ 2ð a;°tó a;ðL .2Ø/3ñ	=(à×!Ñ!ð=(ð —|‘| dÑ*ð=(ð ×%Ñ%¨Ñ,ð	=(ð
 
ó=(ðD .2Ø/3ñ	+à˜×+Ñ+Ñ,¨v¯|©|Ñ;ð+ð —|‘| dÑ*ð+ð ×%Ñ%¨Ñ,ð	+ð
 
ó+ðZ@Øð@Ø!% c¨4°©;¸Ñ+EÈÈTÐRWÉ[ÑHYÑ+YÐ&YÑ!Zð@à	ó@ðB Z^ñ*Ø˜u×1Ñ1Ñ2ð*ØCHÇ<Á<ÐRVÑCVð*à	ó*ð0*à˜#‘ð*ð �M‰MØ�6×)Ñ)Ñ*ñ+à×#Ñ#ñ$ð ×!Ñ!ñ"ð	*ð 
ó*ð"	2˜t E§M¡MÑ2ð 	2°tó 	2ð¨E¯L©Lð ¸TÀ&×BXÑBXÑ=Yó ð
Mð �M‰MØ�6×)Ñ)Ñ*ñ+à×#Ñ#ñ$ð ×!Ñ!ñ"ðMð 
ˆf×$Ñ$Ñ	%óMð(
ð �M‰MØ�6×)Ñ)Ñ*ñ+à×#Ñ#ñ$ð ×!Ñ!ñ"ð
ð 
ó
ð( v×'=Ñ'=ð (À$ó (ð& ñ*à—‘ð*ð �M‰MØ�6×)Ñ)Ñ*ñ+à×#Ñ#ñ$ð ×!Ñ!ñ"ð	*ð �4‰Zð*ð 
ó*ð4*à—‘ð*ð �M‰MØ�6×)Ñ)Ñ*ñ+à×#Ñ#ñ$ð ×!Ñ!ñ"ð	*ð 
ó*ð *à�s‰mð*ð �M‰MØ�6×)Ñ)Ñ*ñ+à×#Ñ#ñ$ð ×!Ñ!ñ"ð	*ð 
ó*ð$*ð �M‰MØ�6×)Ñ)Ñ*ñ+à×#Ñ#ñ$ð ×!Ñ!ñ"ð*ð 
ó*ð+Uà# E×$9Ò$9Ñ:ð+Uð 
ó+UðZ=Øð=Ø,2×,EÒ,Eð=à	ó=ð%
�f×+Ò+ô %
rˆ   r]   r  rÌ  c                 óf  — t        |«      dk(  r| S t        j                  |¬«      }| €t        j                  |g¬«      } | S t	        | «      } | €J ‚| j
                  €
|g| _        | S t        | j
                  t        «      r| j
                  j                  |«       | S | j
                  |g| _        | S )Nr   ©Úhas_id)Úmust_not)	r´   r   ÚHasIdConditionrÊ  r	   r0  r„   rt   r¦   )r  rÌ  Úignore_mentioned_idss      r[   rÐ  rÐ  J  sÊ   € ô ˆ=Ó˜QÒØÐä!×0Ñ0¸ÔFÐàÐÜ—}‘}Ð/CÐ.DÔEˆð Ðô   Ó-ˆØÐ'Ð'Ð'Ø× Ñ Ð(Ø%9Ð$:ˆLÔ!ð Ðô ˜×-Ñ-¬tÔ4Ø×!Ñ!×(Ñ(Ð)=Ô>ð Ðð &2×%:Ñ%:Ð<PÐ$QˆLÔ!àÐrˆ   rx   c                 óf  — t        |«      dk(  r| S t        j                  |¬«      }| €t        j                  |g¬«      } | S t	        | «      } | €J ‚| j
                  €
|g| _        | S t        | j
                  t        «      r| j
                  j                  |«       | S | j
                  |g| _        | S )Nr   r.  )Úmust)	r´   r   r1  rÊ  r	   r4  r„   rt   r¦   )r  rx   Úinclude_idss      r[   re  re  b  sÂ   € ô ˆ3ƒx�1‚}ØÐä×'Ñ'¨sÔ3€KàÐÜ—}‘}¨;¨-Ô8ˆð Ðô   Ó-ˆØÐ'Ð'Ð'Ø×ÑÐ$Ø!, ˆLÔð Ðô ˜×)Ñ)¬4Ô0Ø×Ñ×$Ñ$ [Ô1ð Ðð ".×!2Ñ!2°KÐ @ˆLÔàÐrˆ   r‹  c                 óˆ   — t        j                  | j                  dd| j                  | j                  | j
                  ¬«      S )Nr   rD  )r±   r$  r#  rq   rŒ   r4  )rÁ   r   r±   rq   rŒ   r4  )r‹  s    r[   ry  ry  z  s9   € Ü×ÑØ�9‰9ØØØ—‘Ø�}‰}Ø×&Ñ&ôð rˆ   r>  r  c                 ó@  — | g}|r™|j                  «       }t        |t        «      r|j                  |«       Œ4||_        |j
                  }|€ŒJt        |t        «      r|j                  |«       n+t        |t        j                  «      r|j                  |«       |rŒ˜yy)z<Set .limit on all nested Prefetch objects without recursion.N)	rY  r„   rt   Úextendr  r>  rÁ   r"  r¦   )r>  r  rÞ  ÚcurrentÚnesteds        r[   rž  rž  …  s†   € ð ;C¸€Eá
Ø—)‘)“+ˆä�gœtÔ$à�L‰L˜Ô!Øð ˆŒð ×!Ñ!ˆØˆ>Øä�fœdÔ#Ø�L‰L˜Õ Ü˜¤§¡Ô/Ø�L‰L˜Ô ô' rˆ   )zrU   rœ   r¼  Úcollectionsr   r   Útypingr   r   r   r   Úcopyr	   rv  Únumpyrk   Úqdrant_clientr
   Ú$qdrant_client.common.client_warningsr   Úqdrant_client._pydantic_compatr   r   rY   Úqdrant_client.conversionsr   rÁ   Ú&qdrant_client.conversions.common_typesr   Ú$qdrant_client.conversions.conversionr   Úqdrant_client.httpr   Úqdrant_client.http.modelsr   Ú qdrant_client.http.models.modelsr   r   r   r   Úqdrant_client.hybrid.formular   r   Úqdrant_client.hybrid.fusionr   r   Úqdrant_client.local.distancesr   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r�  r+   Ú#qdrant_client.local.multi_distancesr,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   Ú$qdrant_client.local.json_path_parserr7   r8   Úqdrant_client.local.order_byr9   Ú#qdrant_client.local.payload_filtersr:   r;   Ú+qdrant_client.local.payload_value_extractorr<   r=   Ú(qdrant_client.local.payload_value_setterr>   Úqdrant_client.local.persistencer?   Úqdrant_client.local.sparser@   rA   rB   Ú$qdrant_client.local.sparse_distancesrC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   r‡   rŽ  r]   rÊ  rt   rÈ  rÐ  re  r¾  ry  r"  r‘   rž  rÔ   rˆ   r[   ú<module>rT     s�  ðÛ Û Û ß 0÷ó õ Û ã å &Ý Bß _Ý ;Ý FÝ ;Ý %Ý 1ß `Ó `ß Tß _÷÷ ÷ ÷ õ ÷ ÷ ÷ ñ ÷ OÝ 7ß Tß PÝ EÝ A÷ñ ÷
÷ ÷ ó ð Ð Ø
€ðV˜#ð V #ó V÷i+
ñ i+
ðXWØ—,‘, Ñ%ðØ6:¸5¿=¹=Ñ6Iðà
‡\�\óð0Ø—,‘, Ñ%ðØ,0°·±Ñ,?ðà
‡\�\óð0 5§<¡<ð °E×4EÑ4Eó ð!Ø�n‰n˜t E§N¡NÑ3Ñ3ð!Ø<?ð!à	ô!rˆ   