
    dh2                        S r SSKJr  SSK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  SSKJr   " S	 S
\5      rg)z$Wrapper around Vald vector database.    )annotations)AnyIterableListOptionalTupleTypeN)Document)
Embeddings)VectorStore)maximal_marginal_relevancec                  j   \ rS rSrSr     S           SS jjr\SS j5       rSS jr   S           SS jjr	   S         SS jjr
     S               SS	 jjr     S               SS
 jjr     S               SS jjr     S               SS jjr       S                   SS jjr       S                   S S jjr\        S!                         S"S jj5       rSrg)#Vald   a[  Vald vector database.

To use, you should have the ``vald-client-python`` python package installed.

Example:
    .. code-block:: python

        from langchain_community.embeddings import HuggingFaceEmbeddings
        from langchain_community.vectorstores import Vald

        model_name = "sentence-transformers/all-mpnet-base-v2"
        texts = ['foo', 'bar', 'baz']
        vald = Vald.from_texts(
            texts=texts,
            embedding=HuggingFaceEmbeddings(model_name=model_name),
            host="localhost",
            port=8080,
            skip_strict_exist_check=False,
         )
Nc                `    Xl         US-   [        U5      -   U l        X@l        XPl        X`l        g )N:)
_embeddingstrtargetgrpc_optionsgrpc_use_securegrpc_credentials)self	embeddinghostportr   r   r   s          ]/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/vectorstores/vald.py__init__Vald.__init__%   s/     $Sj3t9,(. 0    c                    U R                   $ N)r   )r   s    r   
embeddingsVald.embeddings7   s    r    c                    SS K nU R                  (       a/  UR                  U R                  U R
                  U R                  S9$ UR                  U R                  U R                  S9$ ! [         a    [        S5      ef = f)Nr   zTCould not import grpcio python package. Please install it with `pip install grpcio`.)options)grpcImportErrorr   secure_channelr   r   r   insecure_channel)r   r'   s     r   _get_channelVald._get_channel;   s    	 ## T22D<M<M   	

 &&t{{D<M<M&N	
  	? 	s   A* *B c                    SSK Jn  SSKJn  U R                  5       nUR                  U5      n	UR                  R                  US9n
/ nU R                  R                  [        U5      5      n[        X5       H`  u  pUR                  R                  XS9nU	R                  UR                  R                  XS9US9nUR!                  UR"                  5        Mb     UR%                  5         U$ ! [         a    [	        S5      ef = f)	L
Args:
    skip_strict_exist_check: Deprecated. This is not used basically.
r   payload_pb2)upsert_pb2_grpclCould not import vald-client-python python package. Please install it with `pip install vald-client-python`.skip_strict_exist_check)idvectorr6   configmetadata)vald.v1.payloadr0   vald.v1.valdr1   r(   r+   
UpsertStubUpsertConfigr   embed_documentslistzipObjectVectorRequestappenduuidclose)r   texts	metadatasgrpc_metadatar4   kwargsr0   r1   channelstubcfgidsembstextembvecress                    r   	add_textsVald.add_textsK   s   	34 ##% ))'2  ''@W'X..tE{;U)ID$$++t+@C++""**#*B&  C JJsxx  * 	
1  	K 	s   C/ /Dc                    SSK Jn  SSKJn  Uc  [        S5      eU R                  5       nUR                  U5      nUR                  R                  US9n	U HC  n
UR                  R                  U
S9nUR                  UR                  R                  XS9US	9nME     UR                  5         g
! [         a    [	        S5      ef = f)r.   r   r/   )remove_pb2_grpcr2   zNo ids provided to deleter3   r5   )r5   r8   r9   T)r;   r0   r<   rY   r(   
ValueErrorr+   
RemoveStubRemover?   rC   IDrE   rH   )r   rP   r4   rK   rL   r0   rY   rM   rN   rO   _idoid_s                r   deleteVald.deletet   s    	34 ;899##% ))'2  ''@W'XC$$''3'/C""**c*>  A  	/  	K 	s   B0 0Cc                h    U R                  XX4XV5      n/ n	U H  u  pU	R                  U
5        M     U	$ r"   )similarity_search_with_scorerF   )r   querykradiusepsilontimeoutrK   rL   docs_and_scoresdocsdocra   s               r   similarity_searchVald.similarity_search   sA     ;;fw
 %FCKK & r    c                b    U R                   R                  U5      nU R                  XX4XV5      n	U	$ r"   )r   embed_query&similarity_search_with_score_by_vector)
r   rf   rg   rh   ri   rj   rK   rL   rS   rk   s
             r   re   !Vald.similarity_search_with_score   s7     oo))%0EEFW
 r    c                h    U R                  XX4XV5      n/ n	U H  u  pU	R                  U
5        M     U	$ r"   )rr   rF   )r   r   rg   rh   ri   rj   rK   rL   rk   rl   rm   ra   s               r   similarity_search_by_vector Vald.similarity_search_by_vector   sA     EE&7
 %FCKK & r    c                    SSK Jn  SSKJn	  U R                  5       n
U	R                  U
5      nUR                  R                  X#XES9nUR                  UR                  R                  XS9US9n/ nUR                   H1  nUR                  [        UR                  S9UR                  45        M3     U
R                  5         U$ ! [         a    [	        S5      ef = f)	Nr   r/   )search_pb2_grpcr2   )numrh   ri   rj   r7   r9   )page_content)r;   r0   r<   rx   r(   r+   
SearchStubSearchr?   rE   resultsrF   r
   r5   distancerH   )r   r   rg   rh   ri   rj   rK   rL   r0   rx   rM   rN   rO   rU   rk   results                   r   rr   +Vald.similarity_search_with_score_by_vector   s    	34 ##% ))'2  ''' ( 
 kk&&i&D"  

 kkF""H&))$Dfoo#VW " 	3  	K 	s   C Cc	                h    U R                   R                  U5      n
U R                  U
UUUUUUUS9nU$ )N)rg   fetch_krh   ri   rj   lambda_multrK   )r   rq   'max_marginal_relevance_search_by_vector)r   rf   rg   r   r   rh   ri   rj   rK   rL   rS   rl   s               r   max_marginal_relevance_search"Vald.max_marginal_relevance_search   sL     oo))%0;;#' < 	
 r    c	           	     T    SSK Jn
  SSKJn  U R                  5       nUR                  U5      nU R                  UUUUUUS9n/ n/ nU Hz  u  nnUR                  U
R                  R                  U
R                  R                  UR                  S9S9US9nUR                  UR                  5        UR                  U5        M|     [        [         R"                  " U5      UUUS9nUR%                  5         U Vs/ sH  nUU   PM
     sn$ ! [         a    [	        S5      ef = fs  snf )	Nr   r/   )object_pb2_grpcr2   )r   rh   ri   rj   rK   rZ   r9   )r   rg   )r;   r0   r<   r   r(   r+   
ObjectStubrr   	GetObjectrC   VectorRequestr^   rz   rF   r6   r   nparrayrH   )r   r   rg   r   r   rh   ri   rj   rK   rL   r0   r   rM   rN   rk   rl   rQ   rm   ra   rT   mmris                         r   r   ,Vald.max_marginal_relevance_search_by_vector  sL   	34 ##% ))'2EE' F 
 %FC..""00")),,0@0@,A 1  '	 ! C KK

#KK & )HHY#	
 	!$%AQ%%Q  	K 	P &s   D ;D%D"c           
     H    U " SUUUUUUS.UD6nUR                  UUU	U
S9  U$ )r.   )r   r   r   r   r   r   )rI   rJ   rK   r4    )rV   )clsrI   r   rJ   r   r   r   r   r   rK   r4   rL   valds                r   
from_textsVald.from_textsO  sU    ,  
%+-
 
 	'$;	 	 	
 r    )r   r   r   r   r   )	localhost  )zgrpc.keepalive_time_ms'  )zgrpc.keepalive_timeout_msr   FN)r   r   r   r   r   intr   r   r   boolr   Optional[Any])returnzOptional[Embeddings])r   r   )NNF)rI   zIterable[str]rJ   Optional[List[dict]]rK   r   r4   r   rL   r   r   	List[str])NFN)
rP   zOptional[List[str]]r4   r   rK   r   rL   r   r   zOptional[bool])         {Gz?    ^e N)rf   r   rg   r   rh   floatri   r   rj   r   rK   r   rL   r   r   List[Document])rf   r   rg   r   rh   r   ri   r   rj   r   rK   r   rL   r   r   List[Tuple[Document, float]])r   List[float]rg   r   rh   r   ri   r   rj   r   rK   r   rL   r   r   r   )r   r   rg   r   rh   r   ri   r   rj   r   rK   r   rL   r   r   r   )r      g      ?r   r   r   N)rf   r   rg   r   r   r   r   r   rh   r   ri   r   rj   r   rK   r   rL   r   r   r   )r   r   rg   r   r   r   r   r   rh   r   ri   r   rj   r   rK   r   rL   r   r   r   )Nr   r   r   FNNF)r   z
Type[Vald]rI   r   r   r   rJ   r   r   r   r   r   r   r   r   r   r   r   rK   r   r4   r   rL   r   r   r   )__name__
__module____qualname____firstlineno____doc__r   propertyr#   r+   rV   rb   rn   re   ru   rr   r   r   classmethodr   __static_attributes__r   r    r   r   r      s>   0  
 !&*.11 1 	1
 1 1 (1$  
& +/'+(-'' (' %	'
 "&' ' 
'V $((-'+	% % "&% %	%
 % 
%T !'+  	
   %  
. !'+  	
   %  
&( !'+  	
   %  
. !'+&& & 	&
 & & %& & 
&&V  !'+  	
     %  
:  !'+7&7& 7& 	7&
 7& 7& 7& 7& %7& 7& 
7&r 
 +/
 !&*.'+(-$$$ $ (	$
 $ $ $ $ ($ %$ "&$ $  
!$ $r    r   )r   
__future__r   typingr   r   r   r   r   r	   numpyr   langchain_core.documentsr
   langchain_core.embeddingsr   langchain_core.vectorstoresr   &langchain_community.vectorstores.utilsr   r   r   r    r   <module>r      s4    * " = =  - 0 3 Me; eP 1r    