Source code for langchain_community.docstore.arbitrary_fn

from typing import Callable, Union

from langchain_core.documents import Document

from langchain_community.docstore.base import Docstore


[docs]class DocstoreFn(Docstore): """Docstore via arbitrary lookup function. This is useful when: * it's expensive to construct an InMemoryDocstore/dict * you retrieve documents from remote sources * you just want to reuse existing objects """
[docs] def __init__( self, lookup_fn: Callable[[str], Union[Document, str]], ): self._lookup_fn = lookup_fn
[docs] def search(self, search: str) -> Document: """Search for a document. Args: search: search string Returns: Document if found, else error message. """ r = self._lookup_fn(search) if isinstance(r, str): # NOTE: assume the search string is the source ID return Document(page_content=r, metadata={"source": search}) elif isinstance(r, Document): return r raise ValueError(f"Unexpected type of document {type(r)}")