
    '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)
QdrantBase)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 )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.
    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      J/RAG/venv/lib/python3.12/site-packages/qdrant_client/local/qdrant_local.pyr   zQdrantLocal.__init__3   sR     	/N, "j079')48

"    c                     | j                   S N)r%   )r&   s    r(   closedzQdrantLocal.closedE   s    ||r)   kwargsc                    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)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QdrantLocal.closeI   s    **113J%  "jD,,113457( 		 4	+D4D4D4K4K""4#3#34  &&( 5L+  		s   1A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QdrantLocal._load^   sm   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$[#88; <++:*;;s:>>GZF[ \33
 &1'( 5P&  $I+ &. dmmW=ww~~n-KK5nc*a( +5		  %%//+2G2G2T2TTC &% &%4 +* %%33 	!$-- 1P Q 	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QdrantLocal._save   s    ;;^__GGLL0BC	)S!QGG

 @D?O?O?U?U?W(?W ; ,WZ5F5F-GG?W( $(<<
 "!(	 "!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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)	rn   searchvectorfilterrt   ru   rv   with_vectorrx   r&   ra   ro   r-   r;   requests         r(   search_batchzQdrantLocal.search_batch   s     ))/:
 $
 $ $^^$^^mm~~$11$00 ' 7 7   $
 	
 
s   A%A>rr   rs   search_paramsrt   ru   rv   rw   rx   c
           	      T    | j                  |      }|j                  |||||||	      S rq   )rn   ry   )r&   ra   rr   rs   r   rt   ru   rv   rw   rx   r-   r;   s               r(   ry   zQdrantLocal.search   sA    & ))/:
  %%%%+ ! 
 	
r)   sampleusingc                 N    | j                  |      }|j                  ||||      S N)rs   rt   r   r   )rn   search_matrix_offsetsr&   ra   rs   rt   r   r   r-   r;   s           r(   r   z!QdrantLocal.search_matrix_offsets   s5     ))/:
//%U6 0 
 	
r)   c                 N    | j                  |      }|j                  ||||      S r   )rn   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)
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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 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;QdrantLocal._resolve_query_input.<locals>.input_into_vectorH  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 QdrantLocal._resolve_query_input&  sP    <G!7!7O))*@A
).):@S &;+=+=+I & 	 
 9 99z666!+!:!:!+!8!8!+!3!3 -0E	$++	$	$ 	$* e[556-emm<EMN m##K {99:''3HMH`H`,H`%l3H`,( ''3HMH`H`,H`%l3H`,(> m##7 {889$5enn6K6K$LENN! enn44d; &&nn,,-  "&
 "D	 ''.t}}=.t}}= "&ENN"( m## {778%/t%DEMM5==/E "
 "D	 ''.t}}=.t}}= "EM m##	 {778 m## {667m##G,,&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%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   r{   r5   r   r   )r&   r   ra   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   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QdrantLocal.query_points  s      ))/:
#'#<#<{$ E= 7|T-EXYL11(OL&&%+;Q%% ' 

 
	
r)   c                 0   |D cg c]  }| j                  ||j                  |j                  |j                  |j                  xs d|j
                  |j                  |j                  |j                  |j                  |j                         c}S c c}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QdrantLocal.query_batch_points  s    ( $
 $  /mm ))$^^mm)r~~$11$00 ' 7 7mm#//   $
 	
 
s   BBc                 <   | j                  |      }|,| j                  ||||      \  }}t        |t        |            }d }|=t	        |t
              r| j                  |      }n| j                  |j                        }|j                  |||||||	|
||||      S )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QdrantLocal.query_points_groups  s    : ))/:
#'#<#<{$ 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   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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   )rn   r   r;   rz   )r&   ra   r   r   rs   r   rt   ru   rv   rw   rx   r   r   r   r-   r;   s                   r(   r   zQdrantLocal.recommendK  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   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QdrantLocal.recommend_groupsn  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   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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   )rn   r   r   r   r{   rt   ru   rv   r|   r   r   r;   rz   r}   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   rt   r   ru   rv   rw   )rn   scroll)
r&   ra   r   rt   r   ru   rv   rw   r-   r;   s
             r(   r   zQdrantLocal.scroll  s>     ))/:
  '%% ! 
 	
r)   count_filterexactc                 H    | j                  |      }|j                  |      S )N)r   )rn   count)r&   ra   r   r   r-   r;   s         r(   r   zQdrantLocal.count  s(     ))/:
\::r)   keyfacet_filterc                 L    | j                  |      }|j                  |||      S )N)r   r   rt   )rn   facet)r&   ra   r   r   rt   r   r-   r;   s           r(   r   zQdrantLocal.facet  s,     ))/:
Cl%PPr)   pointsc                 f    | j                  |      }|j                  |       | j                         S r+   )rn   upsert_default_update_resultr&   ra   r   r-   r;   s        r(   r   zQdrantLocal.upsert  s1     ))/:
&!**,,r)   c                 f    | j                  |      }|j                  |       | j                         S r+   )rn   update_vectorsr   r   s        r(   r   zQdrantLocal.update_vectors  s1     ))/:
!!&)**,,r)   r   c                 h    | j                  |      }|j                  ||       | j                         S r+   )rn   delete_vectorsr   )r&   ra   r   r   r-   r;   s         r(   r   zQdrantLocal.delete_vectors  s3     ))/:
!!'62**,,r)   rU   c                 J    | j                  |      }|j                  |||      S r+   )rn   retrieve)r&   ra   rU   rv   rw   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   UpdateResultrQ   UpdateStatus	COMPLETED)clsr   s     r(   r   z"QdrantLocal._default_update_result,  s'    !!%++55
 	
r)   points_selectorc                 f    | j                  |      }|j                  |       | j                         S r+   )rn   deleter   r&   ra   r   r-   r;   s        r(   r   zQdrantLocal.delete3  s1     ))/:
/***,,r)   payloadc                 l    | j                  |      }|j                  |||       | j                         S )N)r   selectorr   )rn   set_payloadr   )r&   ra   r   r   r   r-   r;   s          r(   r  zQdrantLocal.set_payload:  s8     ))/:
wSI**,,r)   c                 j    | j                  |      }|j                  ||       | j                         S )N)r   r  )rn   overwrite_payloadr   )r&   ra   r   r   r-   r;   s         r(   r  zQdrantLocal.overwrite_payloadF  s6     ))/:
$$Wv$F**,,r)   r6   c                 j    | j                  |      }|j                  ||       | j                         S )N)r6   r  )rn   delete_payloadr   )r&   ra   r6   r   r-   r;   s         r(   r  zQdrantLocal.delete_payloadQ  s6     ))/:
!!tf!=**,,r)   c                 h    | j                  |      }|j                  |       | j                         S )N)r  )rn   clear_payloadr   r   s        r(   r  zQdrantLocal.clear_payload\  s4     ))/:
  / :**,,r)   update_operationsc                     | j                  |      }|j                  |       | j                         gt        |      z  S r+   )rn   batch_update_pointsr   rT   )r&   ra   r	  r-   r;   s        r(   r  zQdrantLocal.batch_update_pointsc  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   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%QdrantLocal.update_collection_aliasesm  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 	

r)   c           
          | j                   rt        d      t        j                  | j                  j                         D cg c]!  \  }}||k(  rt        j                  ||      # c}}      S c c}}w Nrg   )r  ra   )r"   r,   r]   r   CollectionsAliasesResponser"   rP   rQ   AliasDescription)r&   ra   r-   r  names        r(   get_collection_aliasesz"QdrantLocal.get_collection_aliases  s{     ;;^__// )-(:(:(<
 )=$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  sq    ;;^__// )-(:(:(<
 )=$J	 ,,)$( )=
 	
s   !A.
c           	          | j                   rt        d      t        j                  | j                  j                         D cg c]  \  }}t        j                  |       c}}      S c c}}w )Nrg   )r!  )r!   )r,   r]   r   CollectionsResponser!   rP   rQ   CollectionDescription)r&   r-   r!  _s       r(   get_collectionszQdrantLocal.get_collections  sh    ;;^__((  $//5577GD! 11t<7
 	
s    A-
c                 D    | j                  |      }|j                         S r+   )rn   info)r&   ra   r-   r;   s       r(   get_collectionzQdrantLocal.get_collection  s    ))/:
  r)   c                 F    	 | j                  |       y# t        $ r Y yw xY wNTF)rn   rl   r&   ra   r-   s      r(   collection_existszQdrantLocal.collection_exists  s*    	  1 		s    	  sparse_vectors_configc                     | j                  |      }|+|j                         D ]  \  }}|j                  ||        yyr.  )rn   rP   update_sparse_vectors_config)r&   ra   r1  r-   _collectionr   vector_paramss          r(   update_collectionzQdrantLocal.update_collection  sK     **?; ,.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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 )Nrg   T)ignore_errors)
r,   r]   r!   r  r"   rP   rS   shutilrmtreerh   )r&   ra   r-   r4  r  r!  rd   s          r(   delete_collectionzQdrantLocal.delete_collection  s    ;;^__&&**?DA %)LL$6$6$8
$8 
D& $8

 //@&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                  |xs i |      || j                        }	|	| j                  |<   |r\|rZd}
| j                  |d	d
      \  }}| j!                  ||       |-| j                  |||
d      \  }}| j!                  ||       |-| j#                          y)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   r=  r>  r1  r-   src_collectionfrom_collection_namerd   r;   
batch_sizerecordsnext_offsets                r(   create_collectionzQdrantLocal.create_collection  si    ;;^__# '	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+   )r<  rH  )r&   ra   r=  r>  r1  r-   s         r(   recreate_collectionzQdrantLocal.recreate_collection  s/     	/%%^Y8M
 	
r)   c                 (    | j                  ||       y r+   _upload_points)r&   ra   r   r-   s       r(   upload_pointszQdrantLocal.upload_points  s     	OV4r)   rF  c                 (    | j                  ||       y r+   rL  )r&   ra   rF  r-   s       r(   rB  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idrz   r   )rn   r   rQ   PointStructrR  rz   r   )r&   ra   r   r;   points        r(   rM  zQdrantLocal._upload_points)  sr    
 ))/:
 $ $E ''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   rD   r)   r(   uuid_generatorz5QdrantLocal.upload_collection.<locals>.uuid_generatorE  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>J  s     ,aP`1Z2::-FP`s   $&r      z8Each named vector should have the same number of vectorsrQ  )r   r   rn   r   dictanyr3   rT   r   shapenextiterranger6   r   r   zip	itertoolscyclerQ   rS  r   r   )r&   ra   r   r   rU   r-   rW  r;   arrnum_vectorsir!  r   rz   s                 r(   upload_collectionzQdrantLocal.upload_collection:  s   	#	#tT/ : 	# ))/:
gt$,aPWP^P^P`,a)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+>+M4yt4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                 H    t        dt        dd       | j                         S )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   rj  rk  rl  r-   s         r(   create_payload_indexz QdrantLocal.create_payload_indexe  s)     	 .		
 **,,r)   c                 H    t        dt        dd       | j                         S )Nrn  zdelete-local-payload-indexesrC   ro  rp  )r&   ra   rj  r-   s       r(   delete_payload_indexz QdrantLocal.delete_payload_indexu  s)     	 .		
 **,,r)   c                     g S r+   rD   r/  s      r(   list_snapshotszQdrantLocal.list_snapshots  	     	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_snapshot  s     "s
 	
r)   snapshot_namec                     t        d      rx  ry  )r&   ra   r|  r-   s       r(   delete_snapshotzQdrantLocal.delete_snapshot      !s
 	
r)   c                     g S r+   rD   r&   r-   s     r(   list_full_snapshotszQdrantLocal.list_full_snapshots  s    	r)   c                     t        d      rx  ry  r  s     r(   create_full_snapshotz QdrantLocal.create_full_snapshot  r  r)   c                     t        d      rx  ry  )r&   r|  r-   s      r(   delete_full_snapshotz QdrantLocal.delete_full_snapshot  r  r)   c                     t        d      rx  ry  )r&   ra   r   r-   s       r(   recover_snapshotzQdrantLocal.recover_snapshot  r  r)   shard_idc                     g S r+   rD   r&   ra   r  r-   s       r(   list_shard_snapshotsz QdrantLocal.list_shard_snapshots  rv  r)   c                     t        d      Nz`Snapshots are not supported in the local Qdrant. Please use server Qdrant if you need snapshots.ry  r  s       r(   create_shard_snapshotz!QdrantLocal.create_shard_snapshot       "n
 	
r)   c                     t        d      r  ry  )r&   ra   r  r|  r-   s        r(   delete_shard_snapshotz!QdrantLocal.delete_shard_snapshot  r  r)   c                     t        d      r  ry  )r&   ra   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.ry  )r&   r  r-   s      r(   lock_storagezQdrantLocal.lock_storage      !o
 	
r)   c                     t        d      r  ry  r  s     r(   unlock_storagezQdrantLocal.unlock_storage  r  r)   c                 0    t        j                  d d      S )NF)error_messagerL   )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.ry  )r&   ra   r  r  r  r  r-   s          r(   create_shard_keyzQdrantLocal.create_shard_key  s     "k
 	
r)   c                     t        d      r  ry  )r&   ra   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  rQ   VersionInfo)r&   r  s     r(   r+  zQdrantLocal.info  s2    $$,,_=&&174
 	
r)   )F)r   N)NNr   NTFN)N   r   N)NNr   r\  TFNN)NNNNNr   NTFNN)NNNNNr   r  TFNNN)NNNNr   r   TFNNNN)NNNNr   r\  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&  r)  CollectionInfor,  r0  r   SparseVectorParamsr6  rS   r<  VectorParamsInitFromrH  rJ  r   rS  rN  rB  rM  r]  VectorStructri  PayloadSchemaTyperq  rs  SnapshotDescriptionru  r{  r~  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 */b*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`$`$ $`$ }	`$
 e223`$ 
u{{C..	/`$D
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$
 $
 
		$
L

 5--.
 	

 
e!!	"
L #FJ/36:JN38+/;?6:57
7
 7
 MMKeKKNNKK!!	
	7
  }!7
" U^^(<dBC#7
$ u||,%7
&   2 23'7
( )7
* +7
, D(3-1F1FFG-7
. D(3-/0/7
0 "%17
2 e77837
4 e22357
6 77
8 
		97
r

 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 	
 
     , .2RV33 !%$$gc53E3E.E&FFG
3 ENN+3  (U5M5M0M(NO3 3 
3r /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  rd  rM   rE   r:  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.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     sf       	   	 	 	    P 2 0 ; 4 =  ! F
* F
r)   