
    dhM                        S SK Jr  S SKrS SKrS SKrS SKJrJrJrJ	r	J
r
JrJrJr  S SKrS SKJr  S SKJr  S SKJr  \(       a  S SKrSr " S S	\5      rg)
    )annotationsN)TYPE_CHECKINGAnyDictIterableListOptionalTupleType)Document)
Embeddings)VectorStore   c                  >   \ rS rSrSrSrSrS\\\4             SS jjr\SS j5       r	\
S\\\4                 SS	 jj5       r\
SS\\\4                   SS
 jj5       rSSSS.SSS./4     SS jjr S    S!S jjr S"       S#S jjrS$S jr\
S\\\4             S%S jj5       r\4       S&S jjr\4       S'S jjr\4       S(S jjr S)       S(S jjr S"     S*S jjr S"     S+S jjrSrg),Vearch   langchain_vearchcluster_client_db   Nstrc                    U(       a  SSK nOSSKn U(       a|  Uc  [        S5      eU(       dD  U R                  nUS-  nU[        [        R                  " 5       5      R                  S5      S   -  nX@l	        X l
        WR                  U5      U l        OUc&  [        R                  " 5       R                  SS	5      n	OUn	[        R                  R!                  U	5      (       d  [        R"                  " U	5        [        R                  R%                  U	S
5      n
[        R                  R!                  U
5      (       d  [        R"                  " U
5        WR&                  " X5      U l        Xl        U(       dD  U R*                  nUS-  nU[        [        R                  " 5       5      R                  S5      S   -  nX0l        Xl        XPl        g! [         a    [        S5      ef = f)zCInitialize vearch vector store
flag 1 for cluster,0 for standalone
r   NzhCould not import suitable python package. Please install it with `pip install vearch or vearch_cluster`.zPlease input url of cluster_-\/log)vearch_clustervearchImportError
ValueError_DEFAULT_CLUSTER_DB_NAMEr   uuiduuid4splitusing_db_nameurlVearchClusterosgetcwdreplacepathisdirmakedirsjoinEngineusing_metapath_DEFAULT_TABLE_NAMEusing_table_nameembedding_funcflag)selfembedding_functionpath_or_url
table_namedb_namer5   kwargsr   r   metadata_pathlog_paths              _/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/vectorstores/vearch.py__init__Vearch.__init__   s   		% " !>??7733tzz|,2237;;!("H(66{CDK " "		 3 3D# > +77==//M*ww||M59H77==**H% --@DK"/11J#J#djjl+11#6r::J *0	G  	Q 	s   G G G&c                    U R                   $ N)r4   r6   s    r>   
embeddingsVearch.embeddingsN   s    """    c                    U Vs/ sH  oR                   PM     n	nU Vs/ sH  oR                  PM     n
nU R                  " SU	UU
UUUUS.UD6$ s  snf s  snf )Return Vearch VectorStore)texts	embedding	metadatasr8   r9   r:   r5    )page_contentmetadata
from_texts)cls	documentsrJ   r8   r9   r:   r5   r;   drI   rK   s              r>   from_documentsVearch.from_documentsR   sm     *33A3)23AZZ	3~~ 	
#!	
 	
 		
 43s
   AAc           	     :    U " UUUUUUS9n	U	R                  XS9  U	$ )rH   )r7   rJ   r8   r:   r9   r5   )rI   rK   )	add_texts)
rP   rI   rJ   rK   r8   r9   r:   r5   r;   	vearch_dbs
             r>   rO   Vearch.from_textsm   s9     (#!
	 	%=rF      text)fieldtyperN   c                   [         R                  R                  [         R                  R                  S.nSSSSS.S.nU Vs/ sH"  n[         R                  " US   X5S	      5      PM$     nn[         R
                  " S
[         R                  R                  SUSSSS0SS9nU R                   R                  UU R                  UUS9nU$ s  snf )z
Create VectorStore Table
Args:
    dim:dimension of vector
    fields_list: the field you want to store
Return:
    code,0 for success,1 for failed
)intr   i'  IVFPQi       )
ncentroids
nsubvector)
index_sizeretrieval_typeretrieval_paramr[   r\   text_embeddingT 
MemoryOnly
cache_sizeF)namer\   is_index	dimensionmodel_id
store_typestore_param
has_source)rj   fieldsvector_field)	r   dataTypeINTSTRINGGammaFieldInfoGammaVectorInfoVECTORcreate_tabler3   )	r6   dim
field_list	type_dictengine_infofirq   rr   response_codes	            r>   _create_tableVearch._create_table   s    " #OO//8N8NO	%.2"E
 !
  !!"W+yF/DE  	 
 --!''#%u-	
 00&&%	 1 
 )
s   (C
c                    U R                   SSSSSSS0S.SS0SS0S	S
USS.S.S.nU R                  R                  U R                  U5      nU$ )zi
Create VectorStore space
Args:
    dim:dimension of vector
Return:
    code,0 failed for ,1 for success
r   gammaFLATmetric_typeL2)rj   rc   rd   re   r\   stringvectorTrh   )r\   indexrl   rn   )rZ   rN   rf   )rj   partition_numreplica_numengine
properties)r3   r   create_spacer&   )r6   rz   space_configr   s       r>   _create_spaceVearch._create_space   s     ))"(!4$	 H H %!!$".	#
6 001C1C\RrF   c                x   SnU R                   b$  U R                   R                  [        U5      5      nUc  [        S5      eU R                  (       Ga  U R
                  R                  5       nU R                  U;  a7  U R
                  R                  U R                  5      nU(       d  [        S5      eU R
                  R                  U R                  5      nU R                  U;  a/  U R                  [        US   5      5      nU(       d  [        S5      e/ n	UGb  UGb  [        XU5       H  u  pn0 nXS'   US   US'   [        R                  " U5      nS	U[        R                   R#                  U5      -  R%                  5       0US
'   U R
                  R'                  U R                  U R                  U5      nUS   S:X  a  U	R)                  US   5        M  U R
                  R'                  U R                  U R                  U5      nU	R)                  US   5        M     U	$ [*        R,                  R/                  U R0                  U R                  S-   5      n[*        R,                  R3                  U5      (       d1  [        US   5      nU R5                  U5      nU(       a  [        S5      eUGb  Ub  / n[        XU5       Ha  u  pn0 nU
US'   US   US'   [        R                  " U5      nU[        R                   R#                  U5      -  US
'   UR)                  U5        Mc     U R
                  R7                  U5      n	Sn[        U	5      [        U5      :w  a<  [8        R:                  " S5        US:  a  OUS-  n[        U	5      [        U5      :w  a  M<  U R
                  R=                  5         W	$ )zF
Returns:
    List of ids from adding the texts into the vectorstore.
Nzembeddings is Nonezcreate db failed!!!r   zcreate space failed!!!rZ   sourcerN   featurerf   status   _id.schemazcreate table failed!!!g      ?   r   )r4   embed_documentslistr!   r5   r   list_dbsr&   	create_dblist_spacesr3   r   lenzipnparraylinalgnormtolist
insert_oneappendr)   r,   r/   r1   existsr   addtimesleepdump)r6   rI   rK   r;   rD   dbs_listcreate_db_code
space_listcreate_space_codedocidrZ   rN   embedprofilesembed_np
insert_resretry_insert
table_pathrz   r   	doc_items
profiles_vt_times                          r>   rV   Vearch.add_texts   sK    
*,,<<T%[IJ122999{{++-H!!1!%!6!6t7I7I!J%$%:;;001C1CDJ$$J6$($6$6s:a=7I$J!($%=>>E%)*?-0:-N)DE/1H'+V$+3H+=HZ(!xxH!Hryy~~h/G$G#O#O#Q2H-. "&!7!7**D,A,A8"J "(+s2Z%67 '+{{'='= ..0E0Ex( \%%89 ' .O^ 5 ##T%:%:Y%FJ 77>>*--*Q-( $ 2 23 7 $%=>>%)*?	-0:-N)DE13J)-Jv&-5h-?Jz*!xxH3;biinnX>V3VJ/0$$Z0 .O 	2%jC
O3JJsOzaKF	 %jC
O3
   "rF   c                8    U R                   R                  5         g)z*
load vearch engine for standalone vearch
N)r   loadrC   s    r>   _loadVearch._load*  s     	rF   c                $   U(       d  [        S5      eU(       d  [        S5      e[        R                  R                  X#S-   5      n[        R                  R	                  U5      (       d  [        S5      eU " UUUUUS9nUR                  5         U$ )zzLoad the local specified table of standalone vearch.
Returns:
    Success or failure of loading the local specified table
zNo metadata path!!!zNo table name!!!r   z$vearch vectorbase table not exist!!!)r7   r8   r9   r:   r5   )r!   r)   r,   r/   r   r   )	rP   rJ   r8   r9   r:   r5   r;   r   rW   s	            r>   
load_localVearch.load_local0  s     233/00WW\\+I/EF
ww~~j))CDD(#!
	 	rF   c                    U R                   c  [        S5      eU R                   R                  U5      nU R                  XB5      nU$ )z%
Return docs most similar to query.

embedding_func is None!!!)r4   r!   embed_querysimilarity_search_by_vector)r6   querykr;   rD   docss         r>   similarity_searchVearch.similarity_searchP  sG     &899((44U;
//
>rF   c                   [         R                  " U5      nU R                  (       av  SSU[         R                  R	                  U5      -  R                  5       S./0USS/S.nU R                  R                  U R                  U R                  U5      nUS   S   nORSU[         R                  R	                  U5      -  S.// SS	S
S.US.nU R                  R                  U5      nUS   S   n/ nU HY  n	Sn
0 nU R                  (       a  U	S   n	U	 H  nUS:X  a  X   n
M  US:X  d  M  X   US'   M      UR                  [        XS95        M[     U$ )_  The most k similar documents and scores of the specified query.
Args:
    embeddings: embedding vector of the query.
    k: The k most similar documents to the text query.
    min_score: the score of similar documents to the text query
Returns:
    The k most similar documents to the specified text query.
    0 is dissimilar, 1 is the most similar.
sumrf   r[   r   rZ   rN   r   sizerq   hitsr   InnerProduct   r   nprober   rq   is_brute_searchre   topnr   result_itemsrg   _sourcer   rM   rN   )r   r   r5   r   r   r   r   searchr&   r3   r   r   )r6   rJ   r   r;   r   
query_dataquery_resultresr   itemcontent	meta_dataitem_keys                r>   r   "Vearch.similarity_search_by_vector`  st    #99 %5(-		u0E(E'M'M'O !:.J  ;;--""D$9$9:L v&v.C
 "2#(299>>%+@#@ #$3AR#PJ  ;;--j9Lq/.1CDGIyyI v%"nGz)*..Ih' ! KKgJK  rF   c                Z   U R                   c  [        S5      eU R                   R                  U5      n[        R                  " U5      nU R
                  (       av  SSU[        R                  R                  U5      -  R                  5       S./0U/ SQS.nU R                  R                  U R                  U R                  U5      nUS   S   nORSU[        R                  R                  U5      -  S.// SS	S
S.US.nU R                  R                  U5      nUS   S   n/ n	U H  n
Sn0 nU R
                  (       a
  U
S   nU
S   n
U
 H<  nUS:X  a  X   nM  US:X  a	  X   US'   M  U R
                  S:w  d  M0  US:X  d  M8  X   nM>     [        XS9W4nU	R                  U5        M     U	$ )r   r   r   rf   r   )rf   rZ   rN   r   r   r   r   r   r   r   r   r   rg   _scorer   rZ   rN   r   scorer   )r4   r!   r   r   r   r5   r   r   r   r   r   r&   r3   r   r   )r6   r   r   r;   rD   r   r   r   r   resultsr   r   r   r   r   tmp_ress                   r>   similarity_search_with_score#Vearch.similarity_search_with_score  s    &899((44U;
$99 %5(-		u0E(E'M'M'O @J  ;;--""D$9$9:L v&v.C
 "2#(299>>%+@#@ #$3AR#PJ  ;;--j9Lq/.1C02DGIyyXI v%"nGz)*..Ih'99>h'&9 NE !  WI5QGNN7## $ rF   c                (    U R                   " X40 UD6$ rB   )r   )r6   r   r   r;   s       r>   (_similarity_search_with_relevance_scores/Vearch._similarity_search_with_relevance_scores  s     00DVDDrF   c                T   Sn/ nUb  UR                  5       S:X  a  U$ U Hr  nU R                  (       a2  U R                  R                  U R                  U R
                  U5      nOU R                  R                  U5      nUR                  U5        Mt     [        S U 5       5      nU$ )a  Delete the documents which have the specified ids.

Args:
    ids: The ids of the embedding vectors.
    **kwargs: Other keyword arguments that subclasses might use.
Returns:
    Optional[bool]: True if deletion is successful.
    False otherwise, None if not implemented.
Nr   c              3  (   #    U H	  oS :H  v   M     g7f)r   NrL   ).0is     r>   	<genexpr> Vearch.delete.<locals>.<genexpr>	  s     *'Qq&'s   )	__len__r5   r   deleter&   r3   del_docr   all)r6   idsr;   retr   r   s         r>   r   Vearch.delete  s     #;#++-1,JCyykk((););T=R=RTWXkk))#.NN3  *'**
rF   c                <   0 nUb  UR                  5       S:X  a  U$ U R                  (       a  SSU00nU R                  R                  U R                  U R
                  U5      nU HN  nUS   SL a  M  Sn0 nUS    H&  n	U	S:X  a
  US   U	   nM  U	S	:X  d  M  US   U	   US
'   M(     [        XxS9X6S   '   MP     U$ U H\  n
U R                  R                  U
5      nU0 :X  a  M&  Sn0 nU H  n	U	S:X  a  XY   nM  U	S	:X  d  M  XY   US
'   M      [        XxS9X5S   '   M^     U$ )zReturn docs according ids.

Args:
    ids: The ids of the embedding vectors.
Returns:
    Documents which satisfy the input conditions.
r   r   r   foundFrg   r   rZ   rN   r   r   r   )r   r5   r   mget_by_idsr&   r3   r   get_doc_by_id)r6   r   r;   r   r   docs_detailrecordr   	meta_infor[   ids              r>   get
Vearch.get  sm    (*;#++-1,N99!E3<0J++11""D$9$9:K &'?e+	#I.E"("3E": *,.4Y.?.F	(+  / *2!(*u& &@ ! "kk77;"$	(E"-"4 *,.9.@	(+  ) /7!(/E*+   rF   )r4   r5   r'   r&   r1   r3   r   )r7   r   r8   Optional[str]r9   r   r:   r   r5   r^   r;   r   returnNone)r  zOptional[Embeddings])rP   Type[Vearch]rQ   List[Document]rJ   r   r8   r  r9   r   r:   r   r5   r^   r;   r   r  r   )rP   r
  rI   	List[str]rJ   r   rK   Optional[List[dict]]r8   r  r9   r   r:   r   r5   r^   r;   r   r  r   )rz   r^   r{   z
List[dict]r  r^   )rY   )rz   r^   r  r^   rB   )rI   zIterable[str]rK   r  r;   r   r  r  )r  r	  )rJ   r   r8   r  r9   r   r:   r   r5   r^   r;   r   r  r   )r   r   r   r^   r;   r   r  r  )rJ   zList[float]r   r^   r;   r   r  r  )r   r   r   r^   r;   r   r  zList[Tuple[Document, float]])r   )r   Optional[List[str]]r;   r   r  zOptional[bool])r   r  r;   r   r  zDict[str, Document])__name__
__module____qualname____firstlineno__r2   r"   _DEFAULT_VERSIONr?   propertyrD   classmethodrS   rO   r   r   rV   r   r   DEFAULT_TOPNr   r   r   r   r   r  __static_attributes__rL   rF   r>   r   r      s   ,2
 &*-/$4&4 #4 	4
 4 4 4 
4l # # 
 &*-/$

!
 
 #	

 
 
 
 
 

 
4 
 +/%)-/$  (	
 #     
 4 e, %0"
++ + 
+^ (( 
(Z +/KK (K 	K
 
KZ  &*-/$ # 	
    
 D   	
 
& >> > 	>
 
>F FF F 	F
 
&FV EE E 	E
 
&E $(   
	< $(5 5 5 
	5 5rF   r   )
__future__r   r)   r   r#   typingr   r   r   r   r   r	   r
   r   numpyr   langchain_core.documentsr   langchain_core.embeddingsr   langchain_core.vectorstoresr   r   r  r   rL   rF   r>   <module>r     s?    " 	   R R R  - 0 3n[ nrF   