langchain_core.stores.BaseStore

class langchain_core.stores.BaseStore[source]

键值存储的抽象接口。

这是一个旨在抽象不同键值存储细节的接口。它提供了一种简单的接口来获取、设置和删除键值对。

基本方法包括 mgetmsetmdelete,用于一次性获取、设置和删除多个键值对。使用 yield_keys 方法来遍历匹配给定前缀的键。

还提供了这些方法的异步版本,旨在在异步上下文中使用。异步方法以 a 前缀命名,例如 amgetamsetamdeleteayield_keys

默认情况下,amgetamsetamdeleteayield_keys 方法使用同步方法实现。如果存储可以原生支持异步操作,它应该覆盖这些方法。

按设计,这些方法只接受键和值的批次,而不是单个键或值。这是为了强制用户代码与批次一起工作,通常更有效,因为它可以节省往返到存储的行程。

示例

from langchain.storage import BaseStore

class MyInMemoryStore(BaseStore[str, int]):

    def __init__(self):
        self.store = {}

    def mget(self, keys):
        return [self.store.get(key) for key in keys]

    def mset(self, key_value_pairs):
        for key, value in key_value_pairs:
            self.store[key] = value

    def mdelete(self, keys):
        for key in keys:
            if key in self.store:
                del self.store[key]

    def yield_keys(self, prefix=None):
        if prefix is None:
            yield from self.store.keys()
        else:
            for key in self.store.keys():
                if key.startswith(prefix):
                    yield key

方法

__init__()

amdelete(keys)

异步删除指定的键及其关联的值。

amget(keys)

异步获取与给定键关联的值。

amset(key_value_pairs)

异步设置给定键的值。

ayield_keys(*[, prefix])

异步获取匹配给定前缀的键的迭代器。

mdelete(keys)

删除指定的键及其关联的值。

mget(keys)

获取与给定键关联的值。

mset(key_value_pairs)

为给定键设置值。

yield_keys(*[, prefix])

获取匹配给定前缀的键的迭代器。

__init__()
async amdelete(keys: Sequence[K]) None[source]

异步删除指定的键及其关联的值。

参数

keys (Sequence[K]) – 要删除的键的序列。

返回类型

None

async amget(keys: Sequence[K]) List[Optional[V]][source]

异步获取与给定键关联的值。

参数

keys (Sequence[K]) – 一组键。

返回

与键关联的值的序列。如果找不到键,相应的值将为 None。

返回类型

List[Optional[V]]

async amset(key_value_pairs: Sequence[Tuple[K, V]]) None[source]

异步设置给定键的值。

参数

key_value_pairs (Sequence[Tuple[K, V]]) – 一组键值对。

返回类型

None

async ayield_keys(*, prefix: Optional[str] = None) Union[AsyncIterator[K], AsyncIterator[str]][source]

异步获取匹配给定前缀的键的迭代器。

参数

prefix (str) – 匹配的前缀。

产出

Iterator[K | str] – 对匹配给定前缀的键的迭代器。该方法允许返回 K 或 str 的迭代器,具体取决于对给定存储更合理。

返回类型

Union[AsyncIterator[K], AsyncIterator[str]]

abstract mdelete(keys: Sequence[K]) None[source]

删除指定的键及其关联的值。

参数

keys (Sequence[K]) – 要删除的键的序列。

返回类型

None

(抽象方法) mget(keys: Sequence[K]) List[Optional[V]][源代码]

获取与给定键关联的值。

参数

keys (Sequence[K]) – 一组键。

返回

与键关联的值的序列。如果找不到键,相应的值将为 None。

返回类型

List[Optional[V]]

(抽象方法) mset(key_value_pairs: Sequence[Tuple[K, V]]) None[源代码]

为给定键设置值。

参数

key_value_pairs (Sequence[Tuple[K, V]]) – 一组键值对。

返回类型

None

(抽象方法) yield_keys(..., prefix: Optional[str] = None) Union[Iterator[K], Iterator[str]][源代码]

获取匹配给定前缀的键的迭代器。

参数

prefix (str) – 匹配的前缀。

产出

Iterator[K | str] – 对匹配给定前缀的键的迭代器。该方法允许返回 K 或 str 的迭代器,具体取决于对给定存储更合理。

返回类型

Union[Iterator[K], Iterator[str]]

使用BaseStore的示例