Skip to main content

Overview

LangChain provides a key-value store interface for storing and retrieving data by key. The key-value store interface in LangChain is primarily used for caching embeddings.

Interface

All BaseStores support the following interface:
  • mget(key: Sequence[str]) -> List[Optional[bytes]]: get the contents of multiple keys, returning None if the key does not exist
  • mset(key_value_pairs: Sequence[Tuple[str, bytes]]) -> None: set the contents of multiple keys
  • mdelete(key: Sequence[str]) -> None: delete multiple keys
  • yield_keys(prefix: Optional[str] = None) -> Iterator[str]: yield all keys in the store, optionally filtering by a prefix
Base stores are designed to work multiple key-value pairs at once for efficiency. This saves on network round-trips and may allow for more efficient batch operations in the underlying store.

Built-in stores for local development

InMemoryByteStore

LocalFileStore

Custom stores

You can also implement your own custom store by extending the BaseStore class. See the store interface documentation for more details.

All key-value stores

AstraDBByteStore

CassandraByteStore

ElasticsearchEmbeddingsCache

RedisStore

UpstashRedisByteStore

BigtableByteStore