
    'Xh                        d dl Zd dlZd dl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mZmZmZmZmZmZ d dlmZ d dlZd dlZd dlmZ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* dZ+ G d de      Z,y)    N)deepcopy)TextIOWrapper)Any	GeneratorIterableMappingOptionalSequenceUnionget_args)uuid4)show_warningshow_warning_once)to_dict)AsyncQdrantBase)common_types)models)RecommendExample)LocalCollectionDEFAULT_VECTOR_NAMEignore_mentioned_ids_filterz	meta.jsonc            #           e Zd ZdZdZddededdf fdZedefd       Z	d	e
ddfd
ZddZddZdedefdZdedeej$                     d	e
deeej(                        fdZ	 	 	 	 	 	 	 ddedeej.                  ee   eeee   f   ej4                  ej6                  f   deej:                     deej<                     dedee   deeee   ej@                  f   deeee   f   dee   d	e
deej(                     fdZ!	 	 	 	 ddedeej:                     dededee   d	e
dejD                  fdZ#	 	 	 	 ddedeej:                     dededee   d	e
dejH                  fdZ%	 	 	 	 	 	 	 	 ddedeej.                  ee   eeee   f   ej4                  f   dedee&j:                     dee&j<                     dededeeee   e&j@                  f   deeee   f   dee   d eejN                     d	e
dejP                  fd!Z)ded"eejT                     dee   d#eejV                     deejT                  e,ejZ                     f   f
d$Z.d%eeeej^                     ej^                  f      dedeej^                     fd&Z0d%ej^                  dedej^                  fd'Z1	 	 	 	 	 	 	 	 	 	 	 dded"eejT                     dee   d%eej^                  eej^                     df   deej:                     deej<                     dedee   deeee   ej@                  f   deeee   f   dee   d#eejV                     d	e
dejd                  fd(Z3dedeejh                     d	e
deejd                     fd)Z5	 	 	 	 	 	 	 	 	 	 	 	 ddeded"eejZ                  ee   eee      ejl                  ejT                  ej.                  ejn                  ejp                  ejr                  df
   dee   d%eej^                  eej^                     df   deej:                     deej<                     dededeeee   ej@                  f   deeee   f   dee   d eejN                     d#eejV                     d	e
dejP                  f d*Z:dedeejv                     d	e
deeej(                        fd+Z<	 	 	 	 	 	 	 	 	 	 	 	 dded,eee=      d-eee=      deej:                     deej<                     dededeeee   ej@                  f   deeee   f   dee   dee   d#eejV                     d.eej|                     d	e
deej(                     fd/Z?	 	 	 	 	 	 	 	 	 	 	 	 	 ddeded,eeeejZ                  ee   f         d-eeeejZ                  ee   f         deej:                     deej<                     dededee   deeee   ej@                  f   deeee   f   dee   d#eejV                     d eejN                     d.eej|                     d	e
dejP                  f"d0Z@	 	 	 	 	 	 	 	 	 	 	 	 dded1eej                     d2eeej                        deej:                     deej<                     dededeeee   ej@                  f   deeee   f   dee   d#eejV                     d3eej                     d4ee   d	e
deej(                     fd5ZDdedeej                     d	e
deeej(                        fd6ZF	 	 	 	 	 	 dded7eej:                     ded8eej                     deejZ                     deeee   ej@                  f   deeee   f   d	e
deeej                     eejZ                     f   fd9ZI	 	 dded:eej:                     d;ed	e
dej                  f
d<ZK	 	 	 dded=ed>eej:                     ded;ed	e
dej                  fd?ZMded@ej                  d	e
dej                  fdAZPded@eej                     d	e
dej                  fdBZRdedCee   d@ej                  d	e
dej                  f
dDZT	 	 ddedEeejZ                     deeee   ej@                  f   deeee   f   d	e
deej                     fdFZUeVddGedej                  fdH       ZWdedIej                  d	e
dej                  fdJZX	 ddedKej                  d@ej                  d=ee   d	e
dej                  fdLZZdedKej                  d@ej                  d	e
dej                  f
dMZ[dedNee   d@ej                  d	e
dej                  f
dOZ\dedIej                  d	e
dej                  fdPZ]dedQeej                     d	e
deej                     fdRZ_dSeej                     d	e
defdTZaded	e
dej                  fdUZcd	e
dej                  fdVZdd	e
dej                  fdWZfded	e
dej                  fdXZhded	e
defdYZi	 ddedZeejeej                  f      d	e
defd[Zldedee   fd\Zmded	e
defd]Zn	 	 	 dded^eeej                  ejeej                  f   f      d_eej                     dZeejeej                  f      d	e
defd`Zq	 	 dded^eej                  ejeej                  f   f   d_eej                     dZeejeej                  f      d	e
defdaZrded@esej                     d	e
ddfdbZudedcesej                     d	e
ddfddZvded@eseej                  ej                  f      ddfdeZw	 	 ddedCeexeej.                  f   ej.                  esej                     f   dKeesexe
e
f         dEeesejZ                        d	e
ddfdfZz	 	 ddedgedheej                     dieej                     d	e
dej                  fdjZ|dedged	e
dej                  fdkZ}ded	e
deej                     fdlZded	e
deej                     fdmZdedned	e
defdoZd	e
deej                     fdpZd	e
dej                  fdqZdned	e
defdrZdeded	e
defdsZdedted	e
deej                     fduZdedted	e
deej                     fdvZdedtedned	e
def
dwZdedteded	e
def
dxZdyed	e
dej                  fdzZd	e
dej                  fd{Zd	e
dej                  fd|Z	 	 	 dded}ej                  d~ee   dee   deee      d	e
defdZded}ej                  d	e
defdZdej"                  fdZ xZS )AsyncQdrantLocalaD  
    Everything Qdrant server can do, but locally.

    Use this implementation to run vector search without running a Qdrant server.
    Everything that works with local Qdrant will work with server Qdrant as well.

    Use for small-scale data, demos, and tests.
    If you need more speed or size, use Qdrant server.
    i N  locationforce_disable_check_same_threadreturnNc                     t         |           || _        || _        |dk7  | _        i | _        i | _        d| _        | j                          d| _	        y)a$  
        Initialize local Qdrant.

        Args:
            location: Where to store data. Can be a path to a directory or `:memory:` for in-memory storage.
            force_disable_check_same_thread: Disable SQLite check_same_thread check. Use only if you know what you are doing.
        z:memory:NF)
super__init__r   r   
persistentcollectionsaliases_flock_file_load_closed)selfr   r   	__class__s      P/RAG/venv/lib/python3.12/site-packages/qdrant_client/local/async_qdrant_local.pyr   zAsyncQdrantLocal.__init__3   sR     	/N, "j079')48

"    c                     | j                   S N)r%   )r&   s    r(   closedzAsyncQdrantLocal.closedE   s    ||r)   kwargsc                   K   d| _         | j                  j                         D ]K  }||j                          t	        dt        | j                  j                                t        d       M 	 | j                  Q| j                  j                  s:t        j                  | j                         | j                  j                          y y y # t        $ r Y y w xY ww)NTzLCollection appears to be None before closing. The existing collections are:    )messagecategory
stacklevel)r%   r!   valuescloser   listkeysUserWarningr#   r,   portalockerunlock	TypeError)r&   r-   
collections      r(   r4   zAsyncQdrantLocal.closeI   s     **113J%  "jkopt  qA  qA  qF  qF  qH  lI  kJ  K( 	 4	+T5E5E5L5L""4#3#34  &&( 6M+  		s+   A0C 3AC C 	CC CC c                    | j                   sy t        j                  j                  | j                  t
              }t        j                  j                  |      s^t        j                  | j                  d       t        |d      5 }|j                  t        j                  i i d             d d d        nt        |d      5 }t        j                  |      }|d   j                         D ]  \  }}t        j                  di |}| j!                  |      }t#        ||| j$                        }|| j&                  |<   t)        |j*                        | j,                  kD  svt/        d| j,                  d	d
| dt)        |j*                         dt0        d        |d   | _        d d d        t        j                  j                  | j                  d      }	t        j                  j                  |	      sGt        j                  | j                  d       t        |	d      5 }|j                  d       d d d        t        |	d      | _        	 t7        j8                  | j4                  t6        j:                  j<                  t6        j:                  j>                  z         y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# t6        j@                  jB                  $ r tE        d| j                   d      w xY w)NTexist_okwr!   r"   rr!   )r   z=Local mode is not recommended for collections with more than ,z points. Collection <z> contains zd points. Consider using Qdrant in Docker or Qdrant Cloud for better performance with large datasets.   )r1   r2   r"   z.lockztmp lock filezr+zStorage folder zw is already accessed by another instance of Qdrant client. If you require concurrent access, use Qdrant server instead. )#r    ospathjoinr   META_INFO_FILENAMEexistsmakedirsopenwritejsondumpsloaditemsrest_modelsCreateCollection_collection_pathr   r   r!   lenidsLARGE_DATA_THRESHOLDr   r7   r"   r#   r8   lock	LockFlags	EXCLUSIVENON_BLOCKING
exceptionsLockExceptionRuntimeError)
r&   	meta_pathfmetacollection_nameconfig_jsonconfigcollection_pathr;   lock_file_paths
             r(   r$   zAsyncQdrantLocal._load[   s   GGLL0BC	ww~~i(KK5i%

2"#EFG &% i%yy|484G4M4M4O0O[(99HKHF&*&;&;O&LO!0'8<8\8\"J
 9CD$$_5:>>*T-F-FF$[\`\u\uvw[x  yN  O^  N_  _j  kn  oy  o}  o}  k~  j  c  d%0'( 5P  $I# &$ dmmW=ww~~n-KK5nc*a( +5	  %%//+2G2G2T2TT9 &% &%* +* %%33 	!$--  1h  i 	s9   (J(BJ4$AJ4(KAK (J14J>K
7Lc                    | j                   sy | j                  rt        d      t        j                  j                  | j                  t              }t        |d      5 }|j                  t        j                  | j                  j                         D ci c]  \  }}|t        |j                         c}}| j                   d             d d d        y c c}}w # 1 sw Y   y xY w)N=QdrantLocal instance is closed. Please create a new instance.r?   r@   )r    r,   r]   rE   rF   rG   r   rH   rK   rL   rM   rN   r!   rP   r   rc   r"   )r&   r^   r_   ra   r;   s        r(   _savezAsyncQdrantLocal._save   s    ;;^__GGLL0BC	)S!QGG

 BFAQAQAWAWAY(AY =* ,WZ5F5F-GGAY( $(<<
 "!(	 "!s   8C C7CCC(ra   c                     | j                   rt        d      || j                  v r| j                  |   S || j                  v r| j                  | j                  |      S t	        d| d      )Nrg   Collection 
 not found)r,   r]   r!   r"   
ValueErrorr&   ra   s     r(   _get_collectionz AsyncQdrantLocal._get_collection   so    ;;^__d...##O44dll*##DLL$ABB;&7zBCCr)   requestsc                   K   | j                  |      }|D cg c]`  }|j                  |j                  |j                  |j                  |j
                  |j                  |j                  |j                        b c}S c c}w wN)query_vectorquery_filterlimitoffsetwith_payloadwith_vectorsscore_threshold)	rn   searchvectorfilterrt   ru   rv   with_vectorrx   r&   ra   ro   r-   r;   requests         r(   search_batchzAsyncQdrantLocal.search_batch   s      ))/:
 $
 $ $^^$^^mm~~$11$00 ' 7 7   $
 	
 
s   BA%B =Brr   rs   search_paramsrt   ru   rv   rw   rx   c
           	      \   K   | j                  |      }|j                  |||||||	      S wrq   )rn   ry   )r&   ra   rr   rs   r   rt   ru   rv   rw   rx   r-   r;   s               r(   ry   zAsyncQdrantLocal.search   sE     & ))/:
  %%%%+ ! 
 	
s   *,sampleusingc                 V   K   | j                  |      }|j                  ||||      S wN)rs   rt   r   r   )rn   search_matrix_offsetsr&   ra   rs   rt   r   r   r-   r;   s           r(   r   z&AsyncQdrantLocal.search_matrix_offsets   s9      ))/:
//%U6 0 
 	
   ')c                 V   K   | j                  |      }|j                  ||||      S wr   )rn   search_matrix_pairsr   s           r(   r   z$AsyncQdrantLocal.search_matrix_pairs   s9      ))/:
--%U6 . 
 	
r   group_by
group_sizewith_lookupc                    K   | j                  |      }d }|=t        |t              r| j                  |      }n| j                  |j                        }|j	                  |||||||	|
||
      S w)N)
rr   rs   rt   r   r   rv   rw   rx   r   with_lookup_collection)rn   
isinstancestrr;   search_groups)r&   ra   rr   r   rs   r   rt   r   rv   rw   rx   r   r-   r;   r   s                  r(   r   zAsyncQdrantLocal.search_groups   s     " ))/:
!%"+s+)-)=)=k)J&)-)=)=k>T>T)U&''%%!%%+##9 ( 
 	
s   A.A0querylookup_fromc           	      @   |r|j                   n| j                        ||nt        }||j                  |j                  n|j                  v }j
                  v }|rj                  n|rj
                  nj                  t               dt        j                  dt        j                  ffd}t        |      }t        |t        j                        r ||j                        |_        |fS t        |t        j                        r|j                   j"                  9|j                   j"                  D 	cg c]
  }	 ||	       c}	|j                   _        |j                   j$                  9|j                   j$                  D 	cg c]
  }	 ||	       c}	|j                   _        |fS t        |t        j&                        r ||j(                  j*                        |j(                  _        t        |j(                  j,                  t.              r|j(                  j,                  n|j(                  j,                  g}
|
D cg c]9  }t        j0                   ||j$                         ||j"                              ; c}|j(                  _        |fS t        |t        j2                        rt        |j,                  t.              r|j,                  n|j,                  g}
|
D cg c]9  }t        j0                   ||j$                         ||j"                              ; c}|_        |fS t        |t        j4                        r	 |fS t        |t        j6                        r	 |fS c c}	w c c}	w c c}w c c}w )z
        Resolves any possible ids into vectors and returns a new query object, along with a set of the mentioned
        point ids that should be filtered when searching.
        vector_inputr   c                 f   t        | t        t        j                              r| }|j                  vrt        d| d      j                  |   }	v r		   |   }nt        d	 d      t        |t        j                        r|j                         }k(  rj                  |       |S | S )NzPoint z is not found in the collectionzVector rk   )
r   r   typesPointIdrU   rl   npndarraytolistadd)
r   point_ididxvecr;   ra   collection_vectorslookup_collection_namementioned_idsvector_names
       r(   input_into_vectorz@AsyncQdrantLocal._resolve_query_input.<locals>.input_into_vector/  s    ,(?@':>>1$vhZ7V%WXX nnX."44,[9#>C$w{m:%FGGc2::.**,C"&<<!%%h/
##r)   )positivenegative)r;   rn   r   rz   sparse_vectorsmultivectorsvectorssetr   VectorInputr   r   rQ   NearestQuerynearestRecommendQuery	recommendr   r   DiscoverQuerydiscovertargetcontextr5   ContextPairContextQueryOrderByQueryFusionQuery)r&   ra   r   r   r   search_in_vector_namesparsemultir   r   pairspairr;   r   r   r   r   s    `          @@@@@r(   _resolve_query_inputz%AsyncQdrantLocal._resolve_query_input  sL    <G!7!7O))*@A
).):@S &;+=+=+I & 	
 
 9 99z666!+!:!:!+!8!8!+!3!3,/E	$E,=,= 	$%BSBS 	$ 	$$ e[556-emm<EMJ }%%I {99:''3HMH`H`,H`%l3H`,( ''3HMH`H`,H`%l3H`,(< }%%7 {889$5enn6K6K$LENN! enn44d; &&nn,,-  "&
 "D	 ''.t}}=.t}}= "&ENN"( }%% {778%/t%DEMM5==/E "
 "D	 ''.t}}=.t}}= "EM }%%	 {778 }%% {667}%%E,,&s   N N>N>Nprefetchc                    |g S t        |t              rt        |      dk(  rg S g }t        |t        j                        rF|g}|j                  t        |j                  t              r|j                  n|j                  g       nt        |t              rt        |      }|D cg c]  }|| j                  ||       c}S c c}w )Nr   )	r   r5   rT   r   Prefetchextendr   r
   _resolve_prefetch_input)r&   r   ra   
prefetchess       r(   _resolve_prefetches_inputz*AsyncQdrantLocal._resolve_prefetches_inputj  s    
 Ih%#h-1*<I
h/"J%/0A0A4%H!!xO`O`Na (+hJ '
&# ((?C&
 	
 
s   &Cc                 :   |j                   |S t        |      }| j                  ||j                   |j                  |j                        \  }}||_         t        |j                  t        |            |_        | j                  |j                  |      |_	        |S r+   )
r   r   r   r   r   r   r{   r5   r   r   )r&   r   ra   r   r   s        r(   r   z(AsyncQdrantLocal._resolve_prefetch_input  s     >>!OH%!%!:!:X^^X^^X=Q=Q"
 5hootMGZ[ ::8;L;Lo^r)   c                    K   | j                  |      }|,| j                  ||||      \  }}t        |t        |            }| j	                  ||      }|j                  |||||||xs d|	|
	      S w)Nr   )	r   r   rs   r   rx   rt   ru   rv   rw   )rn   r   r   r5   r   query_points)r&   ra   r   r   r   rs   r   rt   ru   rv   rw   rx   r   r-   r;   r   s                   r(   r   zAsyncQdrantLocal.query_points  s       ))/:
%)%>%>{&"UM 7|T-EXYL11(OL&&%+;Q%% ' 

 
	
s   A0A2c                 L  K   |D cg c]  }| j                  ||j                  |j                  |j                  |j                  xs d|j
                  |j                  |j                  |j                  |j                  |j                         d {    c}S 7 	c c}w w)N
   )ra   r   r   rs   rt   ru   rv   rw   rx   r   r   )r   r   r   r{   rt   ru   rv   r|   rx   r   r   )r&   ra   ro   r-   r~   s        r(   query_batch_pointsz#AsyncQdrantLocal.query_batch_points  s     " $
 $ ## /mm ))$^^mm)r~~$11$00 ' 7 7mm#// $    $
 	

s)   B$BBB
BB$BB$c                 D  K   | j                  |      }|,| j                  ||||      \  }}t        |t        |            }d }|=t	        |t
              r| j                  |      }n| j                  |j                        }|j                  |||||||	|
||||      S w)N)r   rs   r   r   rt   r   r   rv   rw   rx   r   r   )rn   r   r   r5   r   r   r;   query_groups)r&   ra   r   r   r   r   rs   r   rt   r   rv   rw   rx   r   r   r-   r;   r   r   s                      r(   query_points_groupsz$AsyncQdrantLocal.query_points_groups  s     : ))/:
%)%>%>{&"UM 7|T-EXYL!%"+s+)-)=)=k)J&)-)=)=k>T>T)U&&&%!%%+##9 ' 
 	
   BB c                   K   | j                  |      }|D cg c]  }|j                  |j                  |j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  |j                  r%| j                  |j                  j                        nd |j                  r|j                  j                  nd |j                         c}S c c}w wN)r   r   rs   rt   ru   rv   rw   rx   r   lookup_from_collectionlookup_from_vector_namestrategy)rn   r   r   r   r{   rt   ru   rv   r|   rx   r   r   r;   rz   r   r}   s         r(   recommend_batchz AsyncQdrantLocal.recommend_batch  s      ))/:
( $'
& $%    )) ))$^^mm~~$11$00 ' 7 7mm&& (,';';G<O<O<Z<Z'[&& )0(;(;(B(B ))! ! $ $'
 	
 
s   C;CC63C;r   r   r   c                    K   | j                  |      }|j                  |||||||	|
||r| j                  |j                        nd |r|j                  |      S d |      S wr   )rn   r   r;   rz   )r&   ra   r   r   rs   r   rt   ru   rv   rw   rx   r   r   r   r-   r;   s                   r(   r   zAsyncQdrantLocal.recommend  s     " ))/:
##%%%+ $(#7#78N8N#O:EK$6$6 $ 
 	
 LP $ 
 	
s   A A"c                 D  K   | j                  |      }d }|=t        |t              r| j                  |      }n| j                  |j                        }|j	                  |||||||
||	||r| j                  |j                        nd |r|j
                  nd |||      S w)N)r   r   r   r   rs   rt   rv   rw   rx   r   r   r   r   r   r   )rn   r   r   r;   recommend_groupsrz   )r&   ra   r   r   r   rs   r   rt   r   rx   rv   rw   r   r   r   r   r-   r;   r   s                      r(   r   z!AsyncQdrantLocal.recommend_groups;  s     & ))/:
!%"+s+)-)=)=k)J&)-)=)=k>T>T)U&**!%%%+ $(#7#78N8N#O:EK$6$64##9# + 
 	
r   r   r   consistencytimeoutc                    K   | j                  |      }|j                  |||||||	|
|r| j                  |j                        nd |r|j                  
      S d 
      S wN)
r   r   rs   rt   ru   rv   rw   r   r   r   )rn   r   r;   rz   )r&   ra   r   r   rs   r   rt   ru   rv   rw   r   r   r   r   r-   r;   s                   r(   r   zAsyncQdrantLocal.discoveri  s     " ))/:
""%%% $(#7#78N8N#O:EK$6$6 # 
 	
 LP # 
 	
s   AAc                   K   | j                  |      }|D cg c]  }|j                  |j                  |j                  |j                  |j
                  |j                  |j                  |j                  |j                  |j                  r%| j                  |j                  j                        nd |j                  r|j                  j                  nd 
       c}S c c}w wr   )rn   r   r   r   r{   rt   ru   rv   r|   r   r   r;   rz   r}   s         r(   discover_batchzAsyncQdrantLocal.discover_batch  s      ))/:
$ $#
" $! ~~$^^mm~~$11$00mm&& (,';';G<O<O<Z<Z'[&& )0(;(;(B(B     $#
 	
 
s   C%CC C%scroll_filterorder_byc                 Z   K   | j                  |      }	|	j                  ||||||      S w)N)r   rt   r   ru   rv   rw   )rn   scroll)
r&   ra   r   rt   r   ru   rv   rw   r-   r;   s
             r(   r   zAsyncQdrantLocal.scroll  sB      ))/:
  '%% ! 
 	
s   )+count_filterexactc                 P   K   | j                  |      }|j                  |      S w)N)r   )rn   count)r&   ra   r   r   r-   r;   s         r(   r   zAsyncQdrantLocal.count  s,      ))/:
\::   $&keyfacet_filterc                 T   K   | j                  |      }|j                  |||      S w)N)r   r   rt   )rn   facet)r&   ra   r   r   rt   r   r-   r;   s           r(   r   zAsyncQdrantLocal.facet  s0      ))/:
Cl%PPs   &(pointsc                 n   K   | j                  |      }|j                  |       | j                         S wr+   )rn   upsert_default_update_resultr&   ra   r   r-   r;   s        r(   r   zAsyncQdrantLocal.upsert  s5      ))/:
&!**,,   35c                 n   K   | j                  |      }|j                  |       | j                         S wr+   )rn   update_vectorsr   r   s        r(   r   zAsyncQdrantLocal.update_vectors  s5      ))/:
!!&)**,,r   r   c                 p   K   | j                  |      }|j                  ||       | j                         S wr+   )rn   delete_vectorsr   )r&   ra   r   r   r-   r;   s         r(   r   zAsyncQdrantLocal.delete_vectors  s7      ))/:
!!'62**,,   46rU   c                 R   K   | j                  |      }|j                  |||      S wr+   )rn   retrieve)r&   ra   rU   rv   rw   r-   r;   s          r(   r   zAsyncQdrantLocal.retrieve  s-      ))/:
""3lCCs   %'operation_idc                 `    t        j                  |t        j                  j                        S )N)r   status)r   UpdateResultrQ   UpdateStatus	COMPLETED)clsr   s     r(   r   z'AsyncQdrantLocal._default_update_result  s&    !!%k.F.F.P.P
 	
r)   points_selectorc                 n   K   | j                  |      }|j                  |       | j                         S wr+   )rn   deleter   r&   ra   r   r-   r;   s        r(   r  zAsyncQdrantLocal.delete  s5      ))/:
/***,,r   payloadc                 t   K   | j                  |      }|j                  |||       | j                         S w)N)r  selectorr   )rn   set_payloadr   )r&   ra   r  r   r   r-   r;   s          r(   r  zAsyncQdrantLocal.set_payload  s<      ))/:
wSI**,,s   68c                 r   K   | j                  |      }|j                  ||       | j                         S w)N)r  r  )rn   overwrite_payloadr   )r&   ra   r  r   r-   r;   s         r(   r	  z"AsyncQdrantLocal.overwrite_payload
  s:      ))/:
$$Wv$F**,,   57r6   c                 r   K   | j                  |      }|j                  ||       | j                         S w)N)r6   r  )rn   delete_payloadr   )r&   ra   r6   r   r-   r;   s         r(   r  zAsyncQdrantLocal.delete_payload  s:      ))/:
!!tf!=**,,r
  c                 p   K   | j                  |      }|j                  |       | j                         S w)N)r  )rn   clear_payloadr   r  s        r(   r  zAsyncQdrantLocal.clear_payload   s8      ))/:
  / :**,,r   update_operationsc                    K   | j                  |      }|j                  |       | j                         gt        |      z  S wr+   )rn   batch_update_pointsr   rT   )r&   ra   r  r-   r;   s        r(   r  z$AsyncQdrantLocal.batch_update_points'  sD      ))/:
&&'89++-.5F1GGG   A Achange_aliases_operationsc                   K   |D ]A  }t        |t        j                        r]| j                  |j                  j
                         |j                  j
                  | j                  |j                  j                  <   {t        |t        j                        r1| j                  j                  |j                  j                  d        t        |t        j                        rV|j                  j                  }|j                  j                  }| j                  j                  |      | j                  |<   6t        d|        | j!                          yw)NzUnknown operation: T)r   rQ   CreateAliasOperationrn   create_aliasra   r"   
alias_nameDeleteAliasOperationpopdelete_aliasRenameAliasOperationrename_aliasnew_alias_nameold_alias_namerl   rh   )r&   r  r-   	operationnew_nameold_names         r(   update_collection_aliasesz*AsyncQdrantLocal.update_collection_aliases1  s     3I)[%E%EF$$Y%;%;%K%KL**:: Y33>>? I{'G'GH  !7!7!B!BDII{'G'GH$11@@$11@@)-)9)9()CX& #6yk!BCC 3 	

s   EEc           
         K   | j                   rt        d      t        j                  | j                  j                         D cg c]!  \  }}||k(  rt        j                  ||      # c}}      S c c}}w wNrg   )r  ra   )r"   r,   r]   r   CollectionsAliasesResponser"   rP   rQ   AliasDescription)r&   ra   r-   r  names        r(   get_collection_aliasesz'AsyncQdrantLocal.get_collection_aliasesE  sx      ;;^__// +/,,*<*<*>*>&Z?* ,,
TXY*>
 	
s   AA;&A5
,A;c           
         K   | j                   rt        d      t        j                  | j                  j                         D cg c]  \  }}t        j                  ||       c}}      S c c}}w wr$  r%  )r&   r-   r  r(  s       r(   get_aliaseszAsyncQdrantLocal.get_aliasesR  sn     ;;^__// +/,,*<*<*>*>&Z ,,
TXY*>
 	
s   AA6!A0
'A6c           	         K   | j                   rt        d      t        j                  | j                  j                         D cg c]  \  }}t        j                  |       c}}      S c c}}w w)Nrg   )r(  )r!   )r,   r]   r   CollectionsResponser!   rP   rQ   CollectionDescription)r&   r-   r(  _s       r(   get_collectionsz AsyncQdrantLocal.get_collections\  sl     ;;^__(( "&!1!1!7!7!9!9IT1 11t<!9
 	
s   AA5 A/
&A5c                 L   K   | j                  |      }|j                         S wr+   )rn   info)r&   ra   r-   r;   s       r(   get_collectionzAsyncQdrantLocal.get_collectionf  s#     ))/:
  s   "$c                 N   K   	 | j                  |       y# t        $ r Y yw xY wwNTF)rn   rl   r&   ra   r-   s      r(   collection_existsz"AsyncQdrantLocal.collection_existsj  s-     	  1 		s   % %	"%"%sparse_vectors_configc                    K   | j                  |      }|+|j                         D ]  \  }}|j                  ||        yywr5  )rn   rP   update_sparse_vectors_config)r&   ra   r8  r-   _collectionr   vector_paramss          r(   update_collectionz"AsyncQdrantLocal.update_collectionq  sM      **?; ,.C.I.I.K*]88mT /Lr  c                 r    | j                   r+t        j                  j                  | j                  d|      S y )Nr;   )r    rE   rF   rG   r   rm   s     r(   rS   z!AsyncQdrantLocal._collection_path~  s'    ??77<<|_MMr)   c                 d  K   | j                   rt        d      | j                  j                  |d       }~| j                  j                         D ci c]  \  }}||k7  r|| c}}| _        | j                  |      }|t        j                  |d       | j                          yc c}}w w)Nrg   T)ignore_errors)
r,   r]   r!   r  r"   rP   rS   shutilrmtreerh   )r&   ra   r-   r;  r  r(  rd   s          r(   delete_collectionz"AsyncQdrantLocal.delete_collection  s     ;;^__&&**?DA '+ll&8&8&:
&:"T& &:

 //@&MM/>


s   AB0B*&A
B0vectors_config	init_fromc                   K   | j                   rt        d      d }d }|/t        |t              r|n|j                  }| j                  |      }|| j                  v rt        d| d      | j                  |      }|t        j                  |d       t        t        j                  |xs i |      || j                        }	|	| j                  |<   |rl|rjd}
| j                  |d	d
       d {   \  }}| j!                  ||       |5| j                  |||
d       d {   \  }}| j!                  ||       |5| j#                          y7 a7 /w)Nrg   rj   z already existsTr=   )r   r   )r   r   d      )rt   rw   )ru   rt   rw   )r,   r]   r   r   r;   rn   r!   rl   rS   rE   rJ   r   rQ   rR   r   r   upload_recordsrh   )r&   ra   rD  rE  r8  r-   src_collectionfrom_collection_namerd   r;   
batch_sizerecordsnext_offsets                r(   create_collectionz"AsyncQdrantLocal.create_collection  s     ;;^__# '	37	Y=Q=Q ! "112FGNd...{?*;?KLL//@&KK$7$((&,"=R %,0,P,P

 -7)2J+/;;$AD ,7 , &"Wk 9)/3{{(J]a 0; 0 *&+ ##OW=	 )
 	

&
*s*   C1E3E43E'E(EEEc                 |   K   | j                  |       d {    | j                  ||||       d {   S 7  7 wr+   )rC  rO  )r&   ra   rD  rE  r8  r-   s         r(   recreate_collectionz$AsyncQdrantLocal.recreate_collection  sI      $$_555++^Y8M
 
 	
 	6
s   <8<:<<c                 (    | j                  ||       y r+   _upload_points)r&   ra   r   r-   s       r(   upload_pointszAsyncQdrantLocal.upload_points  s     	OV4r)   rM  c                 (    | j                  ||       y r+   rS  )r&   ra   rM  r-   s       r(   rI  zAsyncQdrantLocal.upload_records  s     	OW5r)   c                     | j                  |      }|j                  |D cg c]@  }t        j                  |j                  |j
                  xs i |j                  xs i       B c}       y c c}w )Nidrz   r  )rn   r   rQ   PointStructrY  rz   r  )r&   ra   r   r;   points        r(   rT  zAsyncQdrantLocal._upload_points  sq     ))/:

 $	 $E ''xx(:EMMDWUW $		
s   AA.c                    dt         t        d d f   fd}| j                  |      }t        |t              rt        d |j                         D              rt        t        |j                         D cg c]  }|j                  d    c}            dk(  sJ d       t        t        |j                                     j                  d   }	t        |	      D 
cg c]5  }
|j                         D ci c]  }|||   |
   j                          c}7 }}
}|j                  t!        |xs  |       t        |      |xs t#        j$                  i g            D cg c]P  \  }}}t'        j(                  |t        |t*        j,                        r|j                         n|xs i |xs i       R c}}}       y c c}w c c}w c c}}
w c c}}}w )Nr   c               3   8   K   	 t        t                      wr+   )r   r   rD   r)   r(   uuid_generatorz:AsyncQdrantLocal.upload_collection.<locals>.uuid_generator  s     %'l"    c              3   P   K   | ]  }t        |t        j                           y wr+   )r   r   r   ).0vs     r(   	<genexpr>z5AsyncQdrantLocal.upload_collection.<locals>.<genexpr>  s     A0@1Z2::&0@r   r      z8Each named vector should have the same number of vectorsrX  )r   r   rn   r   dictanyr3   rT   r   shapenextiterranger6   r   r   zip	itertoolscyclerQ   rZ  r   r   )r&   ra   r   r  rU   r-   r^  r;   arrnum_vectorsir(  r   rz   s                 r(   upload_collectionz"AsyncQdrantLocal.upload_collection  s   	#	#tT/ : 	# ))/:
gt$A0@A*
 C1AB1A#11ABCDIJIJItGNN$456<<Q?K {++A >E\\^L^Twt}Q'..00^L+   	 47+>+T']G<\yXZW[G\4	4/Xvw ''/9&"**/MFMMOSY`^`#Mr
4		
 C M
	s%   2F<G1GGAGG
field_namefield_schema
field_typec                 P   K   t        dt        dd       | j                         S w)NiPayload indexes have no effect in the local Qdrant. Please use server Qdrant if you need payload indexes.zcreate-local-payload-indexesrC   r0   r1   r   r2   r   r7   r   )r&   ra   rr  rs  rt  r-   s         r(   create_payload_indexz%AsyncQdrantLocal.create_payload_index  s-      	 .		
 **,,r   c                 P   K   t        dt        dd       | j                         S w)Nrv  zdelete-local-payload-indexesrC   rw  rx  )r&   ra   rr  r-   s       r(   delete_payload_indexz%AsyncQdrantLocal.delete_payload_index  s-      	 .		
 **,,r   c                    K   g S wr+   rD   r6  s      r(   list_snapshotszAsyncQdrantLocal.list_snapshots(        	   c                     K   t        d      wNzeSnapshots are not supported in the local Qdrant. Please use server Qdrant if you need full snapshots.NotImplementedErrorr6  s      r(   create_snapshotz AsyncQdrantLocal.create_snapshot-        "s
 	
   snapshot_namec                     K   t        d      wr  r  )r&   ra   r  r-   s       r(   delete_snapshotz AsyncQdrantLocal.delete_snapshot4  r  r  c                    K   g S wr+   rD   r&   r-   s     r(   list_full_snapshotsz$AsyncQdrantLocal.list_full_snapshots;  s     	r  c                     K   t        d      wr  r  r  s     r(   create_full_snapshotz%AsyncQdrantLocal.create_full_snapshot>       !s
 	
r  c                     K   t        d      wr  r  )r&   r  r-   s      r(   delete_full_snapshotz%AsyncQdrantLocal.delete_full_snapshotC  r  r  c                     K   t        d      wr  r  )r&   ra   r   r-   s       r(   recover_snapshotz!AsyncQdrantLocal.recover_snapshotH  r  r  shard_idc                    K   g S wr+   rD   r&   ra   r  r-   s       r(   list_shard_snapshotsz%AsyncQdrantLocal.list_shard_snapshotsM  r~  r  c                     K   t        d      wNz`Snapshots are not supported in the local Qdrant. Please use server Qdrant if you need snapshots.r  r  s       r(   create_shard_snapshotz&AsyncQdrantLocal.create_shard_snapshotR        "n
 	
r  c                     K   t        d      wr  r  )r&   ra   r  r  r-   s        r(   delete_shard_snapshotz&AsyncQdrantLocal.delete_shard_snapshotY  r  r  c                     K   t        d      wr  r  )r&   ra   r  r   r-   s        r(   recover_shard_snapshotz'AsyncQdrantLocal.recover_shard_snapshot`  r  r  reasonc                     K   t        d      wNzaLocks are not supported in the local Qdrant. Please use server Qdrant if you need full snapshots.r  )r&   r  r-   s      r(   lock_storagezAsyncQdrantLocal.lock_storageg       !o
 	
r  c                     K   t        d      wr  r  r  s     r(   unlock_storagezAsyncQdrantLocal.unlock_storagel  r  r  c                 8   K   t        j                  d d      S w)NF)error_messagerL   )r   LocksOptionr  s     r(   	get_lockszAsyncQdrantLocal.get_locksq  s       t5AAr_  	shard_keyshards_numberreplication_factor	placementc                     K   t        d      wNz]Sharding is not supported in the local Qdrant. Please use server Qdrant if you need sharding.r  )r&   ra   r  r  r  r  r-   s          r(   create_shard_keyz!AsyncQdrantLocal.create_shard_keyt  s      "k
 	
r  c                     K   t        d      wr  r  )r&   ra   r  r-   s       r(   delete_shard_keyz!AsyncQdrantLocal.delete_shard_key  s      "k
 	
r  c                 x   K   t         j                  j                  d      }t        j                  d|d       S w)Nzqdrant-clientzqdrant - vector search engine)titleversioncommit)	importlibmetadatar  rQ   VersionInfo)r&   r  s     r(   r2  zAsyncQdrantLocal.info  s6     $$,,_=&&174
 	
s   8:)F)r   N)NNr   NTFN)N   r   N)NNr   rd  TFNN)NNNNNr   NTFNN)NNNNNr   r  TFNNN)NNNNr   r   TFNNNN)NNNNr   rd  NTFNNNN)Nr   NNTF)NT)Nr   F)TF)r   r+   )NNN)NN)__name__
__module____qualname____doc__rV   r   boolr   propertyr,   r   r4   r$   rh   r   rn   r
   r   SearchRequestr5   ScoredPointr   r   
NumpyArrayfloattupleNamedVectorNamedSparseVectorr	   FilterSearchParamsintPayloadSelectorry   SearchMatrixOffsetsResponser   SearchMatrixPairsResponser   rQ   WithLookupInterfaceGroupsResultr   QueryLookupLocationr   r   r   r   r   r   QueryResponser   QueryRequestr   SparseVectorDocumentImageInferenceObjectr   RecommendRequestr   r   RecommendStrategyr   r   TargetVectorContextExamplePairReadConsistencyr   DiscoverRequestr   OrderByRecordr   CountResultr   FacetResponser   Pointsr   r   PointVectorsr   PointsSelectorr   r   classmethodr   r  Payloadr  r	  r  r  UpdateOperationr  AliasOperationsr"  r&  r)  r+  r-  r0  CollectionInfor3  r7  r   SparseVectorParamsr=  rS   rC  VectorParamsInitFromrO  rQ  r   rZ  rU  rI  rT  re  VectorStructrq  PayloadSchemaTypery  r{  SnapshotDescriptionr}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ShardKeyr  r  r  r2  __classcell__)r'   s   @r(   r   r   &   s    !# #t #X\ #$   C D $)V&Ds D D
"
.6u7J7J.K
WZ
	d5$$%	&
6 046: $JN38+/!

 UO#tE{"###	%

 u||,
   2 23
 
 
 D(3-1F1FFG
 D(3-/0
  "%!
" #
$ 
e	 %
B 04#

 u||,
 	

 
 }
 
 
	*	*
" 04#

 u||,
 	

 
 }
 
 
	(	(
* 6:<@PT38+/;?#
#
 huouS$u+5E/FHYHYY
#
 #
 {112#
   8 89#
 #
 #
 D(3-1L1LLM#
 D(3-/0#
 "%#
 e778#
 #
  
		!#
JV&V& $V& }	V&
 e223V& 
u{{C..	/V&p
5%..!95>>!IJK
 
 
enn		
.9<	" (,#FJ/36: $JN38+/6:!
!
 $!
 }	!

 U^^(<dBC!
 u||,!
   2 23!
 !
 !
 D(3-1F1FFG!
 D(3-/0!
 "%!
 e223!
 !
 
		!
F
"
.6u7I7I.J
VY
	e!!	"
F #FJ/36:JN38+/;?6:56
6
 6
 MMKeKKNNKK!!	
	6
  }!6
" U^^(<dBC#6
$ u||,%6
&   2 23'6
( )6
* +6
, D(3-1F1FFG-6
. D(3-/0/6
0 "%16
2 e77836
4 e22356
6 76
8 
		96
p
"
.6u7M7M.N
Z]
	d5$$%	&
: :>9=/36:FJ/4+/#6:6:!
!
 8$456!
 8$456	!

 u||,!
   2 23!
 !
 !
 D$s)U-B-BBC!
 D$s)O,!
 "%!
 }!
 e223!
 5223!
 !
  
e	 !!
N KOJN/36:+/JN38#6:;?6:!,
,
 ,
 8E%--e*D$EFG	,

 8E%--e*D$EFG,
 u||,,
   2 23,
 ,
 ,
 "%,
 D(3-1F1FFG,
 D(3-/0,
 },
 e223,
 e778,
  5223!,
" #,
$ 
		%,
b 04@D/36:FJ/4#6:7;!%

 ++,
 (5#;#;<=	

 u||,
   2 23
 
 
 D$s)U-B-BBC
 D$s)O,
 }
 e223
 e334
 #
 
  
e	 !
B
"
.6u7L7L.M
Y\
	d5$$%	&
6 15,0*.JN38

  -
 	

 5==)
 '
 D(3-1F1FFG
 D(3-/0
 
 
tELL!8EMM#::	;
0 04	;; u||,; 	;
 ; 
		; 04
Q
Q 
Q u||,	
Q
 
Q 
Q 
Q 
		
Q-"-,1LL-DG-			--"-,4U5G5G,H-TW-			-	-	- #	- $$		-
 	- 
			- KO38	D	D emm$	D D(3-1F1FFG		D
 D(3-/0	D 	D 
ell		D 
# 
e>P>P 
 

-"-5:5I5I-UX-			- "
-
- 
- $$	
-
 c]
- 
- 
		
-	-	- 	- $$		-
 	- 
			-	-	- sm	- $$		-
 	- 
			--"-5:5I5I-UX-			-HH $E$9$9:H 	H
 
e  	!H)1%2G2G)HTW	(
"
.1
		)	)

# 
%2R2R 

c 
e6O6O 
!C !3 !5K_K_ !s c d  SW  (U5M5M0M(NO 	
 
  s c d * .2RV,, !%$$gc53E3E.E&FFG
, ENN+,  (U5M5M0M(NO, , 
,d /3RV

 e00'#u?Q?Q:Q2RRS
 ENN+	

  (U5M5M0M(NO
 
 

5"5,4U5F5F,G5SV5	5
6"6-5ell-C6OR6	6

"
,4U5;L;Lell;Z5[,\
	
& 7;15%
%
 e&&&')9)98EDVDV;WW
%
 (4S>23%
 hu}}-.%
 %
 
%
V ;?8<-- - u667	-
 U445- - 
		- 	-"	-03	-?B	-				-".1	e''	(

"
.1
	%++	,

"
36
BE
	
# $u?X?X:Y 
3 
5;T;T 


 
s 
t 


c 
S 
TW 
\` 

".1=@	e''	(

"
.1
=@
	%++	,

"
.1
BE
QT
	

"
.1
=@
LO
	

 
 
@Q@Q 


S 
U5F5F 

B B0A0A B (,,0)-

 >>
  }	

 %SM
 DI&
 
 


"
/4~~
IL
	

E-- 
r)   r   )-importlib.metadatar  rl  rM   rE   rA  copyr   ior   typingr   r   r   r   r	   r
   r   r   uuidr   numpyr   r8   $qdrant_client.common.client_warningsr   r   qdrant_client._pydantic_compatr   qdrant_client.async_client_baser   qdrant_client.conversionsr   r   qdrant_client.httpr   rQ    qdrant_client.http.models.modelsr   $qdrant_client.local.local_collectionr   r   r   rH   r   rD   r)   r(   <module>r      s`       	    Y Y Y    P 2 ; ; 4 =  ! f
 f
r)   