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 are generic and support the following interface, where K represents the key type and V represents the value type:
  • mget(keys: K[]): Promise<(V | undefined)[]>: get the values for multiple keys, returning undefined if a key does not exist
  • mset(keyValuePairs: [K, V][]): Promise<void>: set the values for multiple keys
  • mdelete(keys: K[]): Promise<void>: delete multiple keys
  • yieldKeys(prefix?: string): AsyncGenerator<K | string>: asynchronously yield all keys in the store, optionally filtering by a prefix
The generic nature of the interface allows you to use different types for keys and values. For example, BaseStore<string, BaseMessage> would store messages with string keys, while BaseStore<string, number[]> would store arrays of numbers.
Base stores are designed to work with 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

Custom stores

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

All integrations


Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I