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

方法

amdelete(keys)

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

amget(keys)

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

amset(key_value_pairs)

异步设置给定键的值。

ayield_keys(*[, prefix])

异步获取一个迭代器,用于遍历与给定前缀匹配的键。

mdelete(keys)

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

mget(keys)

获取与给定键关联的值。

mset(key_value_pairs)

为给定的键设置值。

yield_keys(*[, prefix])

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

async amdelete(keys: Sequence[K]) None[来源]#

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

Parameters:

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

Return type:

async amget(keys: Sequence[K]) list[V | None][来源]#

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

Parameters:

keys (Sequence[K]) – 一个键的序列。

Returns:

与键相关联的一系列可选值。 如果未找到键,则对应的值将为None。

Return type:

列表[V | 无]

async amset(key_value_pairs: Sequence[tuple[K, V]]) None[来源]#

异步设置给定键的值。

Parameters:

key_value_pairs (Sequence[Tuple[K, V]]) – 一个键值对的序列。

Return type:

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

异步获取一个迭代器,用于遍历与给定前缀匹配的键。

Parameters:

prefix (str) – 要匹配的前缀。

Yields:

Iterator[K | str] – 一个遍历匹配给定前缀的键的迭代器。 此方法允许返回一个遍历 K 或 str 的迭代器, 具体取决于给定存储的哪种方式更有意义。

Return type:

AsyncIterator[K] | AsyncIterator[str]

abstract mdelete(keys: Sequence[K]) None[来源]#

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

Parameters:

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

Return type:

abstract mget(keys: Sequence[K]) list[V | None][source]#

获取与给定键关联的值。

Parameters:

keys (Sequence[K]) – 一个键的序列。

Returns:

与键相关联的一系列可选值。 如果未找到键,则对应的值将为None。

Return type:

列表[V | 无]

abstract mset(key_value_pairs: Sequence[tuple[K, V]]) None[来源]#

为给定的键设置值。

Parameters:

key_value_pairs (Sequence[Tuple[K, V]]) – 一个键值对的序列。

Return type:

abstract yield_keys(*, prefix: str | None = None) Iterator[K] | Iterator[str][来源]#

获取一个迭代器,用于遍历与给定前缀匹配的键。

Parameters:

prefix (str) – 要匹配的前缀。

Yields:

Iterator[K | str] – 一个遍历与给定前缀匹配的键的迭代器。 此方法允许返回一个遍历 K 或 str 的迭代器,具体取决于给定存储的更有意义的方式。

Return type:

Iterator[K] | Iterator[str]

使用 BaseStore 的示例