
    dh                     v    S SK r S SKJrJrJrJrJrJr  S SKJ	r	  S SK
Jr  S SKJrJr  SSSS	.r " S
 S\5      rg)    N)AnyDictIterableListOptionalType)Document)
Embeddings)VSTVectorStorefilestextslinks)ftlc                   h   \ rS rSr% Sr0 r\\\4   \	S'     SS\S\
S\\   S\\   S	S4
S
 jjr\S	\4S j5       r\S	\4S j5       r SS\\   S\\\      S\S	\\   4S jjrSS\\\      S\S	\\
   4S jjr SS\S\S\S	\\   4S jjr\ SS\\   S\\   S\S\\\      S\S	\4S jj5       rSrg)NucliaDB   zNucliaDB vector store._configNknowledge_boxlocalapi_keybackendreturnc                     SSK Jn  X R                  S'   [        R
                  R                  SS5      nXl        U(       a^  U(       d  SnU S3U R                  S	'   S
U R                  S'   U" 5       R                  US9  U" 5       R                  U R                  SS9  g
SU S3U R                  S	'   X0R                  S'   U" 5       R                  U R                  U R                  S   SS9  g
! [         a    [        S5      ef = f)a=  Initialize the NucliaDB client.

Args:
    knowledge_box: the Knowledge Box id.
    local: Whether to use a local NucliaDB instance or Nuclia Cloud
    api_key: A contributor API key for the kb (needed when local is False)
    backend: The backend url to use when local is True, defaults to
    http://localhost:8080
r   )
NucliaAuthzMnuclia python package not found. Please install it with `pip install nuclia`.LOCALNUCLIA_ZONEzeurope-1zhttp://localhost:8080z/api/v1BACKENDNTOKEN)urlF)r"   interactivezhttps://z.nuclia.cloud/api/v1)r"   tokenr#   )
nuclia.sdkr   ImportErrorr   osenvironget_kbnucliadbkbkb_url)selfr   r   r   r   r   zones          a/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/vectorstores/nucliadb.py__init__NucliaDB.__init__   s     	- !&Wzz~~mZ8 1)0	&9DLL#$(DLL!L!!g!.LOOO?(06J&KDLL#$+LL!LOOKKt||G'<%  %  	? 	s   C0 0Dc                      U R                   S   $ )Nr   )r   r.   s    r0   is_localNucliaDB.is_local<   s    ||G$$    c                 >    U R                   S    SU R                   3$ )Nr    z/kb/)r   r*   r4   s    r0   r-   NucliaDB.kb_url@   s!    ,,y)*$txxj99r7   r   	metadataskwargsc                     / nSSK Jn  U" 5       n[        U5       HT  u  pxSS0n	U(       a  SX'   0n	UR                  SSU00U	U R                  U R
                  S   S9n
UR                  U
5        MV     U$ )	zUpload texts to NucliaDBr   NucliaResourcemetadata textbodyr!   )r   extrar"   r   )r%   r>   	enumeratecreater-   r   append)r.   r   r:   r;   idsr>   factoryirA   rC   ids              r0   	add_textsNucliaDB.add_textsD   s     - " 'GA%/$4E#Y\2~.KKW-	   B JJrN ( 
r7   rG   c                    U(       d  g SSK Jn  U" 5       n/ nU H<  n UR                  X`R                  U R                  S   S9  UR                  S5        M>     [        U5      $ ! [         a    UR                  S5         Mi  f = f)Nr   r=   r!   )ridr"   r   TF)r%   r>   deleter-   r   rF   
ValueErrorall)r.   rG   r;   r>   rH   resultsrJ   s          r0   rO   NucliaDB.delete\   sy    - " B&2;;W@UVt$  7|  &u%&s   8A%%BBquerykc                 &   SSK Jn  SSKJnJn  U" UUUR
                  UR                  /S9nU" 5       nUR                  XpR                  U R                  S   S9n	/ n
U	R                  R                  5        H  nUR                  R                  5        H  nUR                  R                  5        H  u  pUR                  S5      n[         R#                  US   S 5      nUS	   nU(       d  M=  [%        UR&                  U0 5      R#                  US 5      nU
R)                  UR*                  [%        [%        US
0 5      SS 5      US.UR,                  S.5        M     M     M     [/        U
S S9nU Vs/ sH  n[1        US   US   S9PM     sn$ s  snf )Nr   )NucliaSearch)FindRequestResourceProperties)rT   	page_sizeshowr!   )rT   r"   r   /      rC   r?   )rC   value)rA   r?   orderc                     U S   $ )Nr`    )xs    r0   <lambda>,NucliaDB.similarity_search.<locals>.<lambda>   s    QwZr7   )keyrA   )page_contentr?   )r%   rW   nucliadb_models.searchrX   rY   VALUESEXTRAfindr-   r   	resourcesvaluesfields
paragraphsitemssplitFIELD_TYPESr)   getattrdatarF   rA   r`   sortedr	   )r.   rT   rU   r;   rW   rX   rY   requestsearchrR   ro   resourcefieldparagraph_id	paragraphinfo
field_typefield_idr_   sorted_paragraphss                       r0   similarity_searchNucliaDB.similarity_searchk   s    	,J$++-?-E-EF

 ++{{DLL4I  
 
))002H!//1/4/?/?/E/E/G+L'--c2D!,a$!?J#AwH% #HMM:rBFFxQUVE%%$-NN)0$+Hgr$BJPT*" */	) &/__	 0H 2 3* #:3GH /
.	 )F"3i
>ST.
 	
 
s   2Fcls	embeddingc                     [         e)z9Return VectorStore initialized from texts and embeddings.)NotImplementedError)r   r   r   r:   r;   s        r0   
from_textsNucliaDB.from_texts   s
     "!r7   )r*   )NN)N)   )__name__
__module____qualname____firstlineno____doc__r   r   strr   __annotations__boolr   r1   propertyr5   r-   r   r   dictrK   rO   intr	   r   classmethodr   r   r
   r   __static_attributes__rb   r7   r0   r   r      s     GT#s(^  "&!%&& & #	&
 #& 
&P %# % % : : : +/} DJ' 	
 
c0(49-  QU   $%)
)
 )
03)
	h)
V 
 +/	"#Y"Cy" " DJ'	"
 " 
" "r7   r   )r'   typingr   r   r   r   r   r   langchain_core.documentsr	   langchain_core.embeddingsr
   langchain_core.vectorstoresr   r   rr   r   rb   r7   r0   <module>r      s7    	 < < - 0 8 
		P"{ P"r7   