跳转到内容

存储

langchain-classic 文档

本文档涵盖 langchain-classic 包。该包将持续维护安全漏洞至 2026 年 12 月。我们鼓励用户迁移到 langchain 包以获取最新的功能和改进。查看 langchain 的文档

langchain_classic.storage

键值存储和存储辅助工具的实现。

模块提供了符合简单键值接口的各种键值存储的实现。

这些存储的主要目标是支持缓存的实现。

EncoderBackedStore

基类:BaseStore[K, V]

使用键和值的编码器/解码器包装一个存储。

使用 JSON 进行编码/解码的示例

import json


def key_encoder(key: int) -> str:
    return json.dumps(key)


def value_serializer(value: float) -> str:
    return json.dumps(value)


def value_deserializer(serialized_value: str) -> float:
    return json.loads(serialized_value)


# Create an instance of the abstract store
abstract_store = MyCustomStore()

# Create an instance of the encoder-backed store
store = EncoderBackedStore(
    store=abstract_store,
    key_encoder=key_encoder,
    value_serializer=value_serializer,
    value_deserializer=value_deserializer,
)

# Use the encoder-backed store methods
store.mset([(1, 3.14), (2, 2.718)])
values = store.mget([1, 2])  # Retrieves [3.14, 2.718]
store.mdelete([1, 2])  # Deletes the keys 1 and 2
方法 描述
__init__

初始化一个 EncodedStore

mget

获取与给定键关联的值。

amget

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

mset

为给定的键设置值。

amset

异步为给定的键设置值。

mdelete

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

amdelete

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

yield_keys

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

ayield_keys

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

__init__

__init__(
    store: BaseStore[str, Any],
    key_encoder: Callable[[K], str],
    value_serializer: Callable[[V], bytes],
    value_deserializer: Callable[[Any], V],
) -> None

初始化一个 EncodedStore

参数 描述
store

要包装的底层字节存储。

类型: BaseStore[str, Any]

key_encoder

将类型为 K 的键编码为字符串的函数。

类型: Callable[[K], str]

value_serializer

将类型为 V 的值序列化为字节的函数。

类型: Callable[[V], bytes]

value_deserializer

将字节反序列化回类型 V 的函数。

类型: Callable[[Any], V]

mget

mget(keys: Sequence[K]) -> list[V | None]

获取与给定键关联的值。

参数 描述
keys

一个键的序列。

类型: Sequence[K]

返回 描述
list[V | None]

与键相关联的可选值序列。

list[V | None]

如果未找到某个键,则相应的值将为 `None`。

amget async

amget(keys: Sequence[K]) -> list[V | None]

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

参数 描述
keys

一个键的序列。

类型: Sequence[K]

返回 描述
list[V | None]

与键相关联的可选值序列。

list[V | None]

如果未找到某个键,则相应的值将为 `None`。

mset

mset(key_value_pairs: Sequence[tuple[K, V]]) -> None

为给定的键设置值。

参数 描述
key_value_pairs

键值对序列。

类型: Sequence[tuple[K, V]]

amset async

amset(key_value_pairs: Sequence[tuple[K, V]]) -> None

异步为给定的键设置值。

参数 描述
key_value_pairs

键值对序列。

类型: Sequence[tuple[K, V]]

mdelete

mdelete(keys: Sequence[K]) -> None

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

参数 描述
keys

要删除的键序列。

类型: Sequence[K]

amdelete async

amdelete(keys: Sequence[K]) -> None

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

参数 描述
keys

要删除的键序列。

类型: Sequence[K]

yield_keys

yield_keys(*, prefix: str | None = None) -> Iterator[K] | Iterator[str]

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

参数 描述
prefix

要匹配的前缀。

类型: str | None 默认值: None

YIELDS 描述
Iterator[K] | Iterator[str]

与给定前缀匹配的键。

ayield_keys async

ayield_keys(*, prefix: str | None = None) -> AsyncIterator[K] | AsyncIterator[str]

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

参数 描述
prefix

要匹配的前缀。

类型: str | None 默认值: None

YIELDS 描述
AsyncIterator[K] | AsyncIterator[str]

与给定前缀匹配的键。

LocalFileStore

基类:ByteStore

适用于本地文件系统的 BaseStore 接口。

示例

创建一个 LocalFileStore 实例并对其执行操作

from langchain_classic.storage import LocalFileStore

# Instantiate the LocalFileStore with the root path
file_store = LocalFileStore("/path/to/root")

# Set values for keys
file_store.mset([("key1", b"value1"), ("key2", b"value2")])

# Get values for keys
values = file_store.mget(["key1", "key2"])  # Returns [b"value1", b"value2"]

# Delete keys
file_store.mdelete(["key1"])

# Iterate over keys
for key in file_store.yield_keys():
    print(key)  # noqa: T201
方法 描述
__init__

为本地文件系统实现 BaseStore 接口。

mget

获取与给定键关联的值。

mset

为给定的键设置值。

mdelete

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

yield_keys

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

__init__

__init__(
    root_path: str | Path,
    *,
    chmod_file: int | None = None,
    chmod_dir: int | None = None,
    update_atime: bool = False,
) -> None

为本地文件系统实现 BaseStore 接口。

参数 描述
root_path

文件存储的根路径。所有键都被解释为相对于此根路径的路径。

类型: str | Path

chmod_file

为新创建的文件设置权限,如果需要,会覆盖当前的 umask

TYPE: int | None DEFAULT: None

chmod_dir

为新创建的目录设置权限,如果需要,会覆盖当前的 umask

TYPE: int | None DEFAULT: None

update_atime

在读取文件时更新文件系统的访问时间(但不更新修改时间)。这允许在禁用了访问时间更新的文件系统上实现 MRU/LRU 缓存策略。

类型: bool 默认值: False

mget

mget(keys: Sequence[str]) -> list[bytes | None]

获取与给定键关联的值。

参数 描述
keys

一个键的序列。

类型: Sequence[str]

返回 描述
list[bytes | None]

与键相关联的可选值序列。

list[bytes | None]

如果未找到某个键,则相应的值将为 `None`。

mset

mset(key_value_pairs: Sequence[tuple[str, bytes]]) -> None

为给定的键设置值。

参数 描述
key_value_pairs

键值对序列。

类型: Sequence[tuple[str, bytes]]

mdelete

mdelete(keys: Sequence[str]) -> None

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

参数 描述
keys

要删除的键序列。

类型: Sequence[str]

yield_keys

yield_keys(prefix: str | None = None) -> Iterator[str]

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

参数 描述
prefix

要匹配的前缀。

类型: str | None 默认值: None

YIELDS 描述
str

与给定前缀匹配的键。

© . This site is unofficial and not affiliated with LangChain, Inc.