Source code for langchain_community.docstore.in_memory
"""Simple in memory docstore in the form of a dict."""fromtypingimportDict,List,Optional,Unionfromlangchain_core.documentsimportDocumentfromlangchain_community.docstore.baseimportAddableMixin,Docstore
[docs]classInMemoryDocstore(Docstore,AddableMixin):"""Simple in memory docstore in the form of a dict."""
[docs]def__init__(self,_dict:Optional[Dict[str,Document]]=None):"""Initialize with dict."""self._dict=_dictif_dictisnotNoneelse{}
[docs]defadd(self,texts:Dict[str,Document])->None:"""Add texts to in memory dictionary. Args: texts: dictionary of id -> document. Returns: None """overlapping=set(texts).intersection(self._dict)ifoverlapping:raiseValueError(f"Tried to add ids that already exist: {overlapping}")self._dict={**self._dict,**texts}
[docs]defdelete(self,ids:List)->None:"""Deleting IDs from in memory dictionary."""overlapping=set(ids).intersection(self._dict)ifnotoverlapping:raiseValueError(f"Tried to delete ids that does not exist: {ids}")for_idinids:self._dict.pop(_id)
[docs]defsearch(self,search:str)->Union[str,Document]:"""Search via direct lookup. Args: search: id of a document to search for. Returns: Document if found, else error message. """ifsearchnotinself._dict:returnf"ID {search} not found."else:returnself._dict[search]