键值存储
概述
LangChain 提供了一个键值存储接口,用于存储和检索数据。
LangChain 包含一个 BaseStore
接口,它允许存储任意数据。然而,需要 KV 存储的 LangChain 组件接受更具体的 BaseStore[str, bytes]
实例,该实例存储二进制数据(称为 ByteStore
),并根据其特定需求在内部处理数据的编码和解码。
这意味着作为用户,您只需要考虑一种存储类型,而不是针对不同类型的数据使用不同的存储类型。
使用
LangChain 中的键值存储接口主要用于:
-
通过 CachedBackedEmbeddings 缓存嵌入,以避免对重复查询或重新索引内容时重新计算嵌入。
-
在某些检索器中,作为简单的 Document 持久化层。
有关更多信息,请参阅以下操作指南:
接口
所有 BaseStore
都支持以下接口。请注意,该接口允许一次修改多个键值对:
mget(key: Sequence[str]) -> List[Optional[bytes]]
:获取多个键的内容,如果键不存在则返回None
mset(key_value_pairs: Sequence[Tuple[str, bytes]]) -> None
:设置多个键的内容mdelete(key: Sequence[str]) -> None
:删除多个键yield_keys(prefix: Optional[str] = None) -> Iterator[str]
:生成存储中的所有键,可选择按前缀过滤
集成
有关可用键值存储集成的列表,请参考存储集成页面。