
    Ig	                     
   d dl Z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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# 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Dict	GeneratorIterableListMappingOptionalSequenceTupleUnionget_argsSet)uuid4)to_dict)
QdrantBase)common_types)models)RecommendExample)LocalCollectionDEFAULT_VECTOR_NAMEignore_mentioned_ids_filterz	meta.jsonc            #           e 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j2                  ej4                  f   deej8                     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j8                     dededee   de	dejB                  fdZ"	 	 	 	 ddedeej8                     dededee   de	dejF                  fdZ$	 	 	 	 	 	 	 	 ddedeej,                  ee   eeee   f   ej2                  f   dedee%j8                     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jL                     de	dejN                  fd Z(ded!eejR                     dee   d"eejT                     deejR                  e+ejX                     f   f
d#Z-d$eeeej\                     ej\                  f      dedeej\                     fd%Z/d$ej\                  dedej\                  fd&Z0	 	 	 	 	 	 	 	 	 	 	 dded!eejR                     dee   d$eej\                  eej\                     df   deej8                     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jT                     de	dejb                  fd'Z2dedeejf                     de	deejb                     fd(Z4	 	 	 	 	 	 	 	 	 	 	 	 ddeded!eejX                  ee   eee      ejj                  ejR                  ej,                  ejl                  df   dee   d$eej\                  eej\                     df   deej8                     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jL                     d"eejT                     de	dejN                  f d)Z7dedeejp                     de	deeej&                        fd*Z9	 	 	 	 	 	 	 	 	 	 	 	 dded+eee:      d,eee:      deej8                     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jT                     d-eejv                     de	deej&                     fd.Z<	 	 	 	 	 	 	 	 	 	 	 	 	 ddeded+eeeejX                  ee   f         d,eeeejX                  ee   f         deej8                     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jT                     deejL                     d-eejv                     de	dejN                  f"d/Z=	 	 	 	 	 	 	 	 	 	 	 	 dded0eej|                     d1eeej~                        deej8                     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jT                     d2eej                     d3ee   de	deej&                     fd4ZAdedeej                     de	deeej&                        fd5ZC	 	 	 	 	 	 dded6eej8                     ded7eej                     deejX                     deeee   ej>                  f   deeee   f   de	deeej                     eejX                     f   fd8ZF	 	 dded9eej8                     d:ede	dej                  f
d;ZH	 	 	 dded<ed=eej8                     ded:ede	dej                  fd>ZJded?ej                  de	dej                  fd@ZMded?eej                     de	dej                  fdAZOdedBee   d?ej                  de	dej                  f
dCZQ	 	 ddedDeejX                     deeee   ej>                  f   deeee   f   de	deej                     fdEZReSddFedej                  fdG       ZTdedHej                  de	dej                  fdIZU	 ddedJej                  d?ej                  d<ee   de	dej                  fdKZWdedJej                  d?ej                  de	dej                  f
dLZXdedMee   d?ej                  de	dej                  f
dNZYdedHej                  de	dej                  fdOZZdedPeej                     de	deej                     fdQZ\dReej                     de	defdSZ^dede	dej                  fdTZ`de	dej                  fdUZade	dej                  fdVZcdede	dej                  fdWZedede	defdXZf	 ddedYeegeej                  f      de	defdZZidedee   fd[Zjdede	defd\Zk	 	 dded]eej                  egeej                  f   f   d^eej                     dYeegeej                  f      de	defd_Zn	 	 dded]eej                  egeej                  f   f   d^eej                     dYeegeej                  f      de	defd`Zoded?epej                     de	ddfdaZrdedbepej                     de	ddfdcZsded?epeej                  ej                  f      ddfddZt	 	 ddedBeeueej,                  f   ej,                  epej                     f   dJeepeue	e	f         dDeepejX                        de	ddfdeZw	 	 ddedfedgeej                     dheej                     de	dej                  fdiZydedfede	dej                  fdjZzdede	deej                     fdkZ|dede	deej                     fdlZ}dedmede	defdnZ~de	deej                     fdoZde	dej                  fdpZdmede	defdqZdedede	defdrZdedsede	deej                     fdtZdedsede	deej                     fduZdedsedmede	def
dvZdedsedede	def
dwZdxede	dej                  fdyZde	dej                  fdzZde	dej                  fd{Z	 	 	 dded|ej                  d}ee   d~ee   de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 )QdrantLocalaD  
    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.
    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      ]/var/www/html/answerous/venv/lib/python3.12/site-packages/qdrant_client/local/qdrant_local.pyr!   zQdrantLocal.__init__5   sR     	/N, "j079')48

"    c                     | j                   S N)r'   )r(   s    r*   closedzQdrantLocal.closedG   s    ||r+   kwargsc                    d| _         | j                  j                         D ]N  }||j                          t	        j
                  dt        | j                  j                                       P 	 | j                  Q| j                  j                  s:t        j                  | j                         | j                  j                          y y y # t        $ r Y y w xY w)NTzLCollection appears to be None before closing. The existing collections are: )r'   r#   valuescloseloggingwarninglistkeysr%   r.   portalockerunlock	TypeError)r(   r/   
collections      r*   r2   zQdrantLocal.closeK   s    **113 	J%  "bD,,113457			+D4D4D4K4K""4#3#34  &&( 5L+  		s   4AC 	CCc                 P   | 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 ]P  \  }}t        j                  di |}| j!                  |      }t#        ||| j$                        | j&                  |<   R |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      | _        	 t-        j.                  | j*                  t,        j0                  j2                  t,        j0                  j4                  z         y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# t,        j6                  j8                  $ r t;        d| j                   d      w xY w)NTexist_okwr#   r$   rr#   )r   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#   r$   r%   r7   lock	LockFlags	EXCLUSIVENON_BLOCKING
exceptionsLockExceptionRuntimeError)	r(   	meta_pathfmetacollection_nameconfig_jsonconfigcollection_pathlock_file_paths	            r*   r&   zQdrantLocal._load^   s&   GGLL0BC	ww~~i(KK5i% H

2"#EFGH H i% 
/yy|484G4M4M4O 0O[(99HKHF&*&;&;O&LO8G'8<8\8\9D$$_5  $I
/ dmmW=ww~~n-KK5nc* )a()5		  %%//+2G2G2T2TT-H H
/ 
/) ) %%33 	!$-- 1P Q 	s2   (I	BI	I"5AI. 	II"I+.7J%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.   rW   rB   rC   rD   r   rE   rH   rI   rJ   rK   r#   rM   r   r]   r$   )r(   rX   rY   r[   r:   s        r*   _savezQdrantLocal._save   s    ;;^__GGLL0BC	)S! 	QGG

 @D?O?O?U?U?W( ; ,WZ5F5F-GG( $(<<
	 	(		 	s   8C C7CCC(r[   c                     | j                   rt        d      || j                  v r| j                  |   S || j                  v r| j                  | j                  |      S t	        d| d      )Nra   Collection 
 not found)r.   rW   r#   r$   
ValueErrorr(   r[   s     r*   _get_collectionzQdrantLocal._get_collection   so    ;;^__d...##O44dll*##DLL$ABB;&7zBCCr+   requestsc                    | j                  |      }|D cg c]`  }|j                  |j                  |j                  |j                  |j
                  |j                  |j                  |j                        b c}S c c}w N)query_vectorquery_filterlimitoffsetwith_payloadwith_vectorsscore_threshold)	rh   searchvectorfilterrn   ro   rp   with_vectorrr   r(   r[   ri   r/   r:   requests         r*   search_batchzQdrantLocal.search_batch   s     ))/:
 $
  $^^$^^mm~~$11$00 ' 7 7  
 	
 
s   A%A>rl   rm   search_paramsrn   ro   rp   rq   rr   c
           	      T    | j                  |      }|j                  |||||||	      S rk   )rh   rs   )r(   r[   rl   rm   rz   rn   ro   rp   rq   rr   r/   r:   s               r*   rs   zQdrantLocal.search   sA    & ))/:
  %%%%+ ! 
 	
r+   sampleusingc                 N    | j                  |      }|j                  ||||      S N)rm   rn   r|   r}   )rh   search_matrix_offsetsr(   r[   rm   rn   r|   r}   r/   r:   s           r*   r   z!QdrantLocal.search_matrix_offsets   s5     ))/:
//%U6 0 
 	
r+   c                 N    | j                  |      }|j                  ||||      S r   )rh   search_matrix_pairsr   s           r*   r   zQdrantLocal.search_matrix_pairs   s5     ))/:
--%U6 . 
 	
r+   group_by
group_sizewith_lookupc                     | j                  |      }d }|=t        |t              r| j                  |      }n| j                  |j                        }|j	                  |||||||	|
||
      S )N)
rl   rm   rn   r   r   rp   rq   rr   r   with_lookup_collection)rh   
isinstancestrr:   search_groups)r(   r[   rl   r   rm   rz   rn   r   rp   rq   rr   r   r/   r:   r   s                  r*   r   zQdrantLocal.search_groups   s    ( ))/:
!%"+s+)-)=)=k)J&)-)=)=k>T>T)U&''%%!%%+##9 ( 
 	
r+   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 re   )
r   r   typesPointIdidsrf   npndarraytolistadd)
r   point_ididxvecr:   r[   collection_vectorslookup_collection_namementioned_idsvector_names
       r*   input_into_vectorz;QdrantLocal._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:   rh   r   rt   sparse_vectorsmultivectorsvectorssetr   VectorInputr   r   rN   NearestQuerynearestRecommendQuery	recommendr   r   DiscoverQuerydiscovertargetcontextr5   ContextPairContextQueryOrderByQueryFusionQuery)r(   r[   r   r}   r   search_in_vector_namesparsemultir   r   pairspairr:   r   r   r   r   s    `          @@@@@r*   _resolve_query_inputz QdrantLocal._resolve_query_input  s9    <G!7!7O))*@A
).):@S &;+=+=+I & 	 
 9 99z666!+!:!:!+!8!8!+!3!3 -0E	$++	$	$ 	$* e[556-emm<EMP m##M {99:''3HMH`H`,8D%l3,( ''3HMH`H`,8D%l3,(@ m##9 {889$5enn6K6K$LENN! enn44d; &&nn,,-  "&
 	 ''.t}}=.t}}=&ENN"* m## {778%/t%DEMM5==/E "
 	 ''.t}}=.t}}=EM m## {778 m## {667m##I,,&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   lenr   Prefetchextendr   r   _resolve_prefetch_input)r(   r   r[   
prefetchess       r*   _resolve_prefetches_inputz%QdrantLocal._resolve_prefetches_input~  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   ru   r5   r   r   )r(   r   r[   r   r   s        r*   r   z#QdrantLocal._resolve_prefetch_input  s     >>!OH%#88NNNN  	 
} 5hootMGZ[ ::8;L;Lo^r+   c                     | j                  |      }|,| j                  ||||      \  }}t        |t        |            }| j	                  ||      }|j                  |||||||xs d|	|
	      S )Nr   )	r   r   rm   r}   rr   rn   ro   rp   rq   )rh   r   r   r5   r   query_points)r(   r[   r   r}   r   rm   rz   rn   ro   rp   rq   rr   r   r/   r:   r   s                   r*   r   zQdrantLocal.query_points  s      ))/:
#'#<#<{$ E= 7|T-EXYL11(OL&&%+;Q%% ' 

 
	
r+   c                    | j                  |      }|D cg c]  }|j                  |j                  |j                  |j                  |j
                  |j                  xs d|j                  |j                  |j                  |j                  |j                  r%| j                  |j                  j                        nd |j                  r|j                  j                  nd        c}S c c}w )Nr   )r   r   rm   rn   ro   rp   rq   rr   r}   lookup_from_collectionlookup_from_vector_name)rh   r   r   r   ru   rn   ro   rp   rv   rr   r}   r   r:   rt   rw   s         r*   query_batch_pointszQdrantLocal.query_batch_points  s     ))/:
( $%
$ # ##mm ))$^^mm~~*$11$00 ' 7 7mm&& (,';';G<O<O<Z<Z'[&& )0(;(;(B(B $ 
 	
 
s   CC-c                 <   | j                  |      }|,| j                  ||||      \  }}t        |t        |            }d }|=t	        |t
              r| j                  |      }n| j                  |j                        }|j                  |||||||	|
||||      S )N)r   rm   r}   r   rn   r   r   rp   rq   rr   r   r   )rh   r   r   r5   r   r   r:   query_groups)r(   r[   r   r   r}   r   rm   rz   rn   r   rp   rq   rr   r   r   r/   r:   r   r   s                      r*   query_points_groupszQdrantLocal.query_points_groups  s    6 ))/:
#'#<#<{$ E= 7|T-EXYL!%"+s+)-)=)=k)J&)-)=)=k>T>T)U&&&%!%%+##9 ' 
 	
r+   c                    | 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 N)r   r   rm   rn   ro   rp   rq   rr   r}   r   r   strategy)rh   r   r   r   ru   rn   ro   rp   rv   rr   r}   r   r:   rt   r   rw   s         r*   recommend_batchzQdrantLocal.recommend_batch&  s     ))/:
* $'
& %    )) ))$^^mm~~$11$00 ' 7 7mm&& (,';';G<O<O<Z<Z'[&& )0(;(;(B(B ))! ! 
 	
 
s   CC4r   r   r   c                     | j                  |      }|j                  |||||||	|
||r| j                  |j                        nd |r|j                  |      S d |      S r   )rh   r   r:   rt   )r(   r[   r   r   rm   rz   rn   ro   rp   rq   rr   r}   r   r   r/   r:   s                   r*   r   zQdrantLocal.recommendD  s    " ))/:
##%%%+ $(#7#78N8N#O:EK$6$6 $ 
 	
 LP $ 
 	
r+   c                 <   | j                  |      }d }|=t        |t              r| j                  |      }n| j                  |j                        }|j	                  |||||||
||	||r| j                  |j                        nd |r|j
                  nd |||      S )N)r   r   r   r   rm   rn   rp   rq   rr   r}   r   r   r   r   r   )rh   r   r   r:   recommend_groupsrt   )r(   r[   r   r   r   rm   rz   rn   r   rr   rp   rq   r}   r   r   r   r/   r:   r   s                      r*   r   zQdrantLocal.recommend_groupsg  s    & ))/:
!%"+s+)-)=)=k)J&)-)=)=k>T>T)U&**!%%%+ $(#7#78N8N#O:EK$6$64##9# + 
 	
r+   r   r   consistencytimeoutc                     | j                  |      }|j                  |||||||	|
|r| j                  |j                        nd |r|j                  
      S d 
      S N)
r   r   rm   rn   ro   rp   rq   r}   r   r   )rh   r   r:   rt   )r(   r[   r   r   rm   rz   rn   ro   rp   rq   r}   r   r   r   r/   r:   s                   r*   r   zQdrantLocal.discover  s    " ))/:
""%%% $(#7#78N8N#O:EK$6$6 # 
 	
 LP # 
 	
r+   c                    | 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 r   )rh   r   r   r   ru   rn   ro   rp   rv   r}   r   r:   rt   rw   s         r*   discover_batchzQdrantLocal.discover_batch  s     ))/:
& $#
" ! ~~$^^mm~~$11$00mm&& (,';';G<O<O<Z<Z'[&& )0(;(;(B(B   
 	
 
s   CCscroll_filterorder_byc                 R    | j                  |      }	|	j                  ||||||      S )N)r   rn   r   ro   rp   rq   )rh   scroll)
r(   r[   r   rn   r   ro   rp   rq   r/   r:   s
             r*   r   zQdrantLocal.scroll  s>     ))/:
  '%% ! 
 	
r+   count_filterexactc                 H    | j                  |      }|j                  |      S )N)r   )rh   count)r(   r[   r   r   r/   r:   s         r*   r   zQdrantLocal.count  s(     ))/:
\::r+   keyfacet_filterc                 L    | j                  |      }|j                  |||      S )N)r   r   rn   )rh   facet)r(   r[   r   r   rn   r   r/   r:   s           r*   r   zQdrantLocal.facet  s,     ))/:
Cl%PPr+   pointsc                 f    | j                  |      }|j                  |       | j                         S r-   )rh   upsert_default_update_resultr(   r[   r   r/   r:   s        r*   r   zQdrantLocal.upsert  s1     ))/:
&!**,,r+   c                 f    | j                  |      }|j                  |       | j                         S r-   )rh   update_vectorsr   r   s        r*   r   zQdrantLocal.update_vectors  s1     ))/:
!!&)**,,r+   r   c                 h    | j                  |      }|j                  ||       | j                         S r-   )rh   delete_vectorsr   )r(   r[   r   r   r/   r:   s         r*   r   zQdrantLocal.delete_vectors  s3     ))/:
!!'62**,,r+   r   c                 J    | j                  |      }|j                  |||      S r-   )rh   retrieve)r(   r[   r   rp   rq   r/   r:   s          r*   r   zQdrantLocal.retrieve  s)     ))/:
""3lCCr+   operation_idc                 `    t        j                  |t        j                  j                        S )N)r   status)r   UpdateResultrN   UpdateStatus	COMPLETED)clsr   s     r*   r   z"QdrantLocal._default_update_result%  s'    !!%++55
 	
r+   points_selectorc                 f    | j                  |      }|j                  |       | j                         S r-   )rh   deleter   r(   r[   r   r/   r:   s        r*   r   zQdrantLocal.delete,  s1     ))/:
/***,,r+   payloadc                 l    | j                  |      }|j                  |||       | j                         S )N)r   selectorr   )rh   set_payloadr   )r(   r[   r   r   r   r/   r:   s          r*   r   zQdrantLocal.set_payload3  s8     ))/:
wSI**,,r+   c                 j    | j                  |      }|j                  ||       | j                         S )N)r   r   )rh   overwrite_payloadr   )r(   r[   r   r   r/   r:   s         r*   r   zQdrantLocal.overwrite_payload?  s6     ))/:
$$Wv$F**,,r+   r6   c                 j    | j                  |      }|j                  ||       | j                         S )N)r6   r   )rh   delete_payloadr   )r(   r[   r6   r   r/   r:   s         r*   r  zQdrantLocal.delete_payloadJ  s6     ))/:
!!tf!=**,,r+   c                 h    | j                  |      }|j                  |       | j                         S )N)r   )rh   clear_payloadr   r   s        r*   r  zQdrantLocal.clear_payloadU  s4     ))/:
  / :**,,r+   update_operationsc                     | j                  |      }|j                  |       | j                         gt        |      z  S r-   )rh   batch_update_pointsr   r   )r(   r[   r  r/   r:   s        r*   r  zQdrantLocal.batch_update_points\  s@     ))/:
&&'89++-.5F1GGGr+   change_aliases_operationsc                    |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)NzUnknown operation: T)r   rN   CreateAliasOperationrh   create_aliasr[   r$   
alias_nameDeleteAliasOperationpopdelete_aliasRenameAliasOperationrename_aliasnew_alias_nameold_alias_namerf   rb   )r(   r  r/   	operationnew_nameold_names         r*   update_collection_aliasesz%QdrantLocal.update_collection_aliasesf  s
    3 	DI)[%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	D 	

r+   c           
          | j                   rt        d      t        j                  | j                  j                         D cg c]!  \  }}||k(  rt        j                  ||      # c}}      S c c}}w Nra   )r  r[   )r$   r.   rW   r   CollectionsAliasesResponser$   rM   rN   AliasDescription)r(   r[   r/   r  names        r*   get_collection_aliasesz"QdrantLocal.get_collection_aliasesz  ss     ;;^__// )-(:(:(<
 %J?* ,,)$(	
 		
s   &A3
c           
          | j                   rt        d      t        j                  | j                  j                         D cg c]  \  }}t        j                  ||       c}}      S c c}}w r  r  )r(   r/   r  r  s       r*   get_aliaseszQdrantLocal.get_aliases  si    ;;^__// )-(:(:(<
 %J	 ,,)$(
 	
s   !A.
c           	          | j                   rt        d      t        j                  | j                  j                         D cg c]  \  }}t        j                  |       c}}      S c c}}w )Nra   )r  )r#   )r.   rW   r   CollectionsResponser#   rM   rN   CollectionDescription)r(   r/   r  _s       r*   get_collectionszQdrantLocal.get_collections  sc    ;;^__((  $//557D! 11t<
 	
s    A-
c                 D    | j                  |      }|j                         S r-   )rh   info)r(   r[   r/   r:   s       r*   get_collectionzQdrantLocal.get_collection  s    ))/:
  r+   c                 F    	 | j                  |       y# t        $ r Y yw xY wNTF)rh   rf   r(   r[   r/   s      r*   collection_existszQdrantLocal.collection_exists  s*    	  1 		s    	  sparse_vectors_configc                     | j                  |      }|+|j                         D ]  \  }}|j                  ||        yyr)  )rh   rM   update_sparse_vectors_config)r(   r[   r,  r/   _collectionr   vector_paramss          r*   update_collectionzQdrantLocal.update_collection  sQ     **?; ,.C.I.I.K U*]88mTU r+   c                 r    | j                   r+t        j                  j                  | j                  d|      S y )Nr:   )r"   rB   rC   rD   r   rg   s     r*   rP   zQdrantLocal._collection_path  s'    ??77<<|_MMr+   c                 \   | 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 )Nra   T)ignore_errors)
r.   rW   r#   r  r$   rM   rP   shutilrmtreerb   )r(   r[   r/   r/  r  r  r^   s          r*   delete_collectionzQdrantLocal.delete_collection  s    ;;^__&&**?DA %)LL$6$6$8
 
D& 

 //@&MM/>


s   B(vectors_config	init_fromc                 ~   | 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                  ||      || j                        }	|	| j                  |<   |r\|rZd}
| j                  |d	d
      \  }}| j!                  ||       |-| j                  |||
d      \  }}| j!                  ||       |-| j#                          y)Nra   rd   z already existsTr<   )r   r   )r   r   d      )rn   rq   )ro   rn   rq   )r.   rW   r   r   r:   rh   r#   rf   rP   rB   rG   r   rN   rO   r   r   upload_recordsrb   )r(   r[   r8  r9  r,  r/   src_collectionfrom_collection_namer^   r:   
batch_sizerecordsnext_offsets                r*   create_collectionzQdrantLocal.create_collection  sd    ;;^__# '	37	Y=Q=Q ! "112FGNd...{?*;?KLL//@&KK$7$((&4 %,0,P,P

 -7)2J#';;/C1[_;#` G[ )'+{{(J]a (3 ($ ##OW=	 ) 	

r+   c                 L    | j                  |       | j                  ||||      S r-   )r7  rC  )r(   r[   r8  r9  r,  r/   s         r*   recreate_collectionzQdrantLocal.recreate_collection  s/     	/%%^Y8M
 	
r+   c                 (    | j                  ||       y r-   _upload_points)r(   r[   r   r/   s       r*   upload_pointszQdrantLocal.upload_points  s     	OV4r+   rA  c                 (    | j                  ||       y r-   rG  )r(   r[   rA  r/   s       r*   r=  zQdrantLocal.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idrt   r   )rh   r   rN   PointStructrM  rt   r   )r(   r[   r   r:   points        r*   rH  zQdrantLocal._upload_points   sk    
 ))/:
 $  ''xx <<-2!MM/R		
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   rA   r+   r*   uuid_generatorz5QdrantLocal.upload_collection.<locals>.uuid_generator<  s     %'l" s   c              3   P   K   | ]  }t        |t        j                           y wr-   )r   r   r   ).0vs     r*   	<genexpr>z0QdrantLocal.upload_collection.<locals>.<genexpr>A  s     ,a1Z2::-F,as   $&r      z8Each named vector should have the same number of vectorsrL  )r   r   rh   r   dictanyr1   r   r   shapenextiterranger6   r   r   zip	itertoolscyclerN   rN  r   r   )r(   r[   r   r   r   r/   rR  r:   arrnum_vectorsir  r   rt   s                 r*   upload_collectionzQdrantLocal.upload_collection1  s   	#	#tT/ : 	# ))/:
gt$,aPWP^P^P`,a)aC1AB#1BCDIJIJI tGNN$456<<Q?K {+ >E\\^LTwt}Q'..00LG 
 	 47+>+M4yt44  0Xvw ''/9&"**/MFMMOSY`^`#Mr	
 C Ms%   2F<G1GGAGG
field_namefield_schema
field_typec                 L    t        j                  d       | j                         S NziPayload indexes have no effect in the local Qdrant. Please use server Qdrant if you need payload indexes.r3   r4   r   )r(   r[   re  rf  rg  r/   s         r*   create_payload_indexz QdrantLocal.create_payload_index\  s$     	w	
 **,,r+   c                 L    t        j                  d       | j                         S ri  rj  )r(   r[   re  r/   s       r*   delete_payload_indexz QdrantLocal.delete_payload_indexi  s$     	w	
 **,,r+   c                     g S r-   rA   r*  s      r*   list_snapshotszQdrantLocal.list_snapshotsq  	     	r+   c                     t        d      NzeSnapshots are not supported in the local Qdrant. Please use server Qdrant if you need full snapshots.NotImplementedErrorr*  s      r*   create_snapshotzQdrantLocal.create_snapshotv  s     "s
 	
r+   snapshot_namec                     t        d      rr  rs  )r(   r[   rv  r/   s       r*   delete_snapshotzQdrantLocal.delete_snapshot}      !s
 	
r+   c                     g S r-   rA   r(   r/   s     r*   list_full_snapshotszQdrantLocal.list_full_snapshots  s    	r+   c                     t        d      rr  rs  r{  s     r*   create_full_snapshotz QdrantLocal.create_full_snapshot  ry  r+   c                     t        d      rr  rs  )r(   rv  r/   s      r*   delete_full_snapshotz QdrantLocal.delete_full_snapshot  ry  r+   c                     t        d      rr  rs  )r(   r[   r   r/   s       r*   recover_snapshotzQdrantLocal.recover_snapshot  ry  r+   shard_idc                     g S r-   rA   r(   r[   r  r/   s       r*   list_shard_snapshotsz QdrantLocal.list_shard_snapshots  rp  r+   c                     t        d      Nz`Snapshots are not supported in the local Qdrant. Please use server Qdrant if you need snapshots.rs  r  s       r*   create_shard_snapshotz!QdrantLocal.create_shard_snapshot       "n
 	
r+   c                     t        d      r  rs  )r(   r[   r  rv  r/   s        r*   delete_shard_snapshotz!QdrantLocal.delete_shard_snapshot  r  r+   c                     t        d      r  rs  )r(   r[   r  r   r/   s        r*   recover_shard_snapshotz"QdrantLocal.recover_shard_snapshot  s     "n
 	
r+   reasonc                     t        d      NzaLocks are not supported in the local Qdrant. Please use server Qdrant if you need full snapshots.rs  )r(   r  r/   s      r*   lock_storagezQdrantLocal.lock_storage      !o
 	
r+   c                     t        d      r  rs  r{  s     r*   unlock_storagezQdrantLocal.unlock_storage  r  r+   c                 0    t        j                  d d      S )NF)error_messagerI   )r   LocksOptionr{  s     r*   	get_lockszQdrantLocal.get_locks  s      
 	
r+   	shard_keyshards_numberreplication_factor	placementc                     t        d      Nz]Sharding is not supported in the local Qdrant. Please use server Qdrant if you need sharding.rs  )r(   r[   r  r  r  r  r/   s          r*   create_shard_keyzQdrantLocal.create_shard_key  s     "k
 	
r+   c                     t        d      r  rs  )r(   r[   r  r/   s       r*   delete_shard_keyzQdrantLocal.delete_shard_key  s     "k
 	
r+   c                 p    t         j                  j                  d      }t        j                  d|d       S )Nzqdrant-clientzqdrant - vector search engine)titleversioncommit)	importlibmetadatar  rN   VersionInfo)r(   r  s     r*   r&  zQdrantLocal.info  s2    $$,,_=&&174
 	
r+   )F)r   N)NN
   NTFN)N   r  N)NNr  rW  TFNN)NNNNNr  NTFNN)NNNNNr  r  TFNNN)NNNNr  r   TFNNNN)NNNNr  rW  NTFNNNN)Nr  NNTF)NT)Nr  F)TF)r   r-   )NN)NNN)__name__
__module____qualname____doc__r   boolr!   propertyr.   r   r2   r&   rb   r   rh   r   r   SearchRequestr	   ScoredPointry   r   
NumpyArrayfloatr   NamedVectorNamedSparseVectorr   FilterSearchParamsintPayloadSelectorrs   SearchMatrixOffsetsResponser   SearchMatrixPairsResponser   rN   WithLookupInterfaceGroupsResultr   QueryLookupLocationr   r   r   r   r   r   QueryResponser   QueryRequestr   SparseVectorDocumentr   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!  r$  CollectionInfor'  r+  r
   SparseVectorParamsr1  rP   r7  VectorParamsInitFromrC  rE  r   rN  rI  r=  rH  r   VectorStructrd  PayloadSchemaTyperk  rm  SnapshotDescriptionro  ru  rx  r|  r~  r  r  r  r  r  r  r  r  r  r  ShardKeyr  r  r  r&  __classcell__)r)   s   @r*   r   r   *   s   # #t #X\ #$   c d &$L*Ds D D

 5../
 	

 
d5$$%	&
> 046: $JN38+/!

 UO#tE{"###	%

 u||,
   2 23
 
 
 D(3-1F1FFG
 D(3-/0
  "%!
" #
$ 
e	 %
B 04#

 u||,
 	

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

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

 U^^(<dBC#
 u||,#
   2 23#
 #
 #
 D(3-1F1FFG#
 D(3-/0#
 "%#
 e223#
 #
 
		#
J

 5--.
 	

 
e!!	"
T #FJ/36:JN38+/;?6:15
5
 5
 MMKeKKNN	
	5
 }5
 U^^(<dBC5
  u||,!5
"   2 23#5
$ %5
& '5
( D(3-1F1FFG)5
* D(3-/0+5
, "%-5
. e778/5
0 e22315
2 35
4 
		55
n

 5112
 	

 
d5$$%	&
B :>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!-
" #-
$ 
		%-
d 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

 5001
 	

 
d5$$%	&
> 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-			--- ++,- 	-
 
		-	-	- #	- $$		-
 	- 
			- 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
		)	)
"
C 
E,L,L 
	
 	
0I0I 	
!c !S !UEYEY !    SW  (U5M5M0M(NO 	
 
     * /3RV11 e00'#u?Q?Q:Q2RRS1 ENN+	1
  (U5M5M0M(NO1 1 
1n /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

 u00%,,>?@
 
	
. 7;15)
)
 e&&&')9)98EDVDV;WW
)
 (4S>23)
 hu}}-.)
 )
 
)
^ ;?8<-- - u667	-
 U445- - 
		--"-03-?B-			-".1	e''	(

"
.1
	%++	,

s 
3 
RU 
Z^ 

C D9R9R4S 
S 
U5N5N 


# 
 
 


 
s 
c 
VZ 

".1=@	e''	(

"
.1
=@
	%++	,

"
.1
BE
QT
	
	
	
 	
 		

 	
 
	

3 
# 
%:K:K 


s 
u/@/@ 


# 
%*;*; 
 (,,0)-

 >>
  }	

 %SM
 DI&
 
 



 >>
 	

 


e'' 
r+   r   )/importlib.metadatar  r_  rJ   r3   rB   r5  copyr   ior   typingr   r   r   r   r	   r
   r   r   r   r   r   r   uuidr   numpyr   r7   qdrant_client._pydantic_compatr   qdrant_client.client_baser   qdrant_client.conversionsr   r   qdrant_client.httpr   rN    qdrant_client.http.models.modelsr   $qdrant_client.local.local_collectionr   r   r   rE   r   rA   r+   r*   <module>r     sk        	          2 0 ; 4 =  ! s
* s
r+   