[docs]def__init__(self,knowledge_box:str,local:bool,api_key:Optional[str]=None,backend:Optional[str]=None,)->None:"""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 """try:fromnuclia.sdkimportNucliaAuthexceptImportError:raiseImportError("nuclia python package not found. ""Please install it with `pip install nuclia`.")self._config["LOCAL"]=localzone=os.environ.get("NUCLIA_ZONE","europe-1")self._kb=knowledge_boxiflocal:ifnotbackend:backend="http://localhost:8080"self._config["BACKEND"]=f"{backend}/api/v1"self._config["TOKEN"]=NoneNucliaAuth().nucliadb(url=backend)NucliaAuth().kb(url=self.kb_url,interactive=False)else:self._config["BACKEND"]=f"https://{zone}.nuclia.cloud/api/v1"self._config["TOKEN"]=api_keyNucliaAuth().kb(url=self.kb_url,token=self._config["TOKEN"],interactive=False)
[docs]defadd_texts(self,texts:Iterable[str],metadatas:Optional[List[dict]]=None,**kwargs:Any,)->List[str]:"""Upload texts to NucliaDB"""ids=[]fromnuclia.sdkimportNucliaResourcefactory=NucliaResource()fori,textinenumerate(texts):extra:Dict[str,Any]={"metadata":""}ifmetadatas:extra={"metadata":metadatas[i]}id=factory.create(texts={"text":{"body":text}},extra=extra,url=self.kb_url,api_key=self._config["TOKEN"],)ids.append(id)returnids
[docs]@classmethoddeffrom_texts(cls:Type[VST],texts:List[str],embedding:Embeddings,metadatas:Optional[List[dict]]=None,**kwargs:Any,)->VST:"""Return VectorStore initialized from texts and embeddings."""raiseNotImplementedError