
    h2                        d Z ddlmZ ddlmZmZmZmZmZm	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  G d	 d
e      Zy)z$Wrapper around Vald vector database.    )annotations)AnyIterableListOptionalTupleTypeN)Document)
Embeddings)VectorStore)maximal_marginal_relevancec                  6   e Zd ZdZ	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 ddZedd       ZddZ	 	 	 d	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 d	 	 	 	 	 	 	 	 	 ddZ		 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ
	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd	Z	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd
Z	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZe	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d d       Zy)!Valda  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                h    || _         |dz   t        |      z   | _        || _        || _        || _        y )N:)
_embeddingstrtargetgrpc_optionsgrpc_use_securegrpc_credentials)self	embeddinghostportr   r   r   s          c/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/langchain_community/vectorstores/vald.py__init__zVald.__init__%   s7     $Sj3t9,(. 0    c                    | j                   S N)r   )r   s    r   
embeddingszVald.embeddings7   s    r   c                   	 dd l }| j                  r2|j                  | j                  | j
                  | j                        S |j                  | j                  | j                        S # t        $ r t        d      w xY w)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_channelzVald._get_channel;   s    	 ## T22D<M<M   	

 &&t{{D<M<M&N	
  	? 	s   A+ +B c                *   	 ddl m} ddlm} | j                         }|j                  |      }	|j                  j                  |      }
g }| j                  j                  t        |            }t        ||      D ]k  \  }}|j                  j                  ||      }|	j                  |j                  j                  ||
      |      }|j!                  |j"                         m |j%                          |S # t        $ r t	        d      w xY w)	d
        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r2   configmetadata)vald.v1.payloadr,   vald.v1.valdr-   r%   r(   
UpsertStubUpsertConfigr   embed_documentslistzipObjectVectorRequestappenduuidclose)r   texts	metadatasgrpc_metadatar0   kwargsr,   r-   channelstubcfgidsembstextembvecress                    r   	add_textszVald.add_textsK   s   	34 ##% ))'2  ''@W'X..tE{;UD) 	!ID#$$++tC+@C++""**#c*B&  C JJsxx 	! 	
1  	K 	s   C= =Dc                   	 ddl m} ddlm} |t        d      | j                         }|j                  |      }|j                  j                  |      }	|D ]L  }
|j                  j                  |
      }|j                  |j                  j                  ||	      |	      }N |j                          y
# t        $ r t	        d      w xY w)r*   r   r+   )remove_pb2_grpcr.   zNo ids provided to deleter/   r1   )r1   r4   r5   T)r7   r,   r8   rT   r%   
ValueErrorr(   
RemoveStubRemover;   r?   IDrA   rD   )r   rL   r0   rG   rH   r,   rT   rI   rJ   rK   _idoid_s                r   deletezVald.deletet   s    	34 ;899##% ))'2  ''@W'X 	C$$''3'/C""**c#*>  A	 	/  	K 	s   B: :Cc                l    | j                  ||||||      }g }	|D ]  \  }
}|	j                  |
        |	S r    )similarity_search_with_scorerB   )r   querykradiusepsilontimeoutrG   rH   docs_and_scoresdocsdocr\   s               r   similarity_searchzVald.similarity_search   sN     ;;1fgw
 % 	FCKK	 r   c                h    | j                   j                  |      }| j                  ||||||      }	|	S r    )r   embed_query&similarity_search_with_score_by_vector)
r   r`   ra   rb   rc   rd   rG   rH   rO   re   s
             r   r_   z!Vald.similarity_search_with_score   s=     oo))%0EEFGWm
 r   c                l    | j                  ||||||      }g }	|D ]  \  }
}|	j                  |
        |	S r    )rk   rB   )r   r   ra   rb   rc   rd   rG   rH   re   rf   rg   r\   s               r   similarity_search_by_vectorz Vald.similarity_search_by_vector   sN     EEq&'7M
 % 	FCKK	 r   c                   	 ddl m} ddlm}	 | j                         }
|	j                  |
      }|j                  j                  ||||      }|j                  |j                  j                  ||      |      }g }|j                  D ]3  }|j                  t        |j                        |j                  f       5 |
j                          |S # t        $ r t	        d      w xY w)	Nr   r+   )search_pb2_grpcr.   )numrb   rc   rd   r3   r5   )page_content)r7   r,   r8   ro   r%   r(   
SearchStubSearchr;   rA   resultsrB   r
   r1   distancerD   )r   r   ra   rb   rc   rd   rG   rH   r,   ro   rI   rJ   rK   rQ   re   results                   r   rk   z+Vald.similarity_search_with_score_by_vector   s    	34 ##% ))'2  ''&'7 ( 
 kk&&i&D"  

 kk 	XF""H&))$Dfoo#VW	X 	3  	K 	s   C C'c	           
     n    | j                   j                  |      }
| j                  |
|||||||      }|S )N)ra   fetch_krb   rc   rd   lambda_multrG   )r   rj   'max_marginal_relevance_search_by_vector)r   r`   ra   rx   ry   rb   rc   rd   rG   rH   rO   rf   s               r   max_marginal_relevance_searchz"Vald.max_marginal_relevance_search   sL     oo))%0;;#' < 	
 r   c	                f   	 ddl m}
 ddlm} | j                         }|j                  |      }| j                  ||||||      }g }g }|D ]  \  }}|j                  |
j                  j                  |
j                  j                  |j                              |      }|j                  |j                         |j                  |        t        t!        j"                  |      |||      }|j%                          |D cg c]  }||   	 c}S # t        $ r t	        d      w xY wc c}w )	Nr   r+   )object_pb2_grpcr.   )rx   rb   rc   rd   rG   rU   r5   )ry   ra   )r7   r,   r8   r}   r%   r(   
ObjectStubrk   	GetObjectr?   VectorRequestrY   rq   rB   r2   r   nparrayrD   )r   r   ra   rx   ry   rb   rc   rd   rG   rH   r,   r}   rI   rJ   re   rf   rM   rg   r\   rP   mmris                         r   rz   z,Vald.max_marginal_relevance_search_by_vector  sM   	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           
     N     | d||||||d|}|j                  |||	|
       |S )r*   )r   r   r   r   r   r   )rE   rF   rG   r0    )rR   )clsrE   r   rF   r   r   r   r   r   rG   r0   rH   valds                r   
from_textszVald.from_textsO  sU    ,  
%+-
 
 	'$;	 	 	
 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)rE   zIterable[str]rF   Optional[List[dict]]rG   r   r0   r   rH   r   r   	List[str])NFN)
rL   zOptional[List[str]]r0   r   rG   r   rH   r   r   zOptional[bool])         {Gz?    ^e N)r`   r   ra   r   rb   floatrc   r   rd   r   rG   r   rH   r   r   List[Document])r`   r   ra   r   rb   r   rc   r   rd   r   rG   r   rH   r   r   List[Tuple[Document, float]])r   List[float]ra   r   rb   r   rc   r   rd   r   rG   r   rH   r   r   r   )r   r   ra   r   rb   r   rc   r   rd   r   rG   r   rH   r   r   r   )r      g      ?r   r   r   N)r`   r   ra   r   rx   r   ry   r   rb   r   rc   r   rd   r   rG   r   rH   r   r   r   )r   r   ra   r   rx   r   ry   r   rb   r   rc   r   rd   r   rG   r   rH   r   r   r   )Nr   r   r   FNNF)r   z
Type[Vald]rE   r   r   r   rF   r   r   r   r   r   r   r   r   r   r   r   rG   r   r0   r   rH   r   r   r   )__name__
__module____qualname____doc__r   propertyr!   r(   rR   r]   rh   r_   rm   rk   r{   rz   classmethodr   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   