Skip to main content
Open on GitHub

键值存储

概述

LangChain 提供了一个键值存储接口,用于存储和检索数据。

LangChain 包含一个 BaseStore 接口, 允许存储任意数据。然而,需要 KV 存储的 LangChain 组件会接受一个更具体的 BaseStore[str, bytes] 实例,该实例存储二进制数据(称为 ByteStore),并会在内部处理 数据编码和解码以满足其特定需求。

这意味着作为用户,您只需要考虑一种类型的存储,而不是针对不同类型数据的不同存储。

用途

LangChain 中的键值存储接口主要用于:

  1. 通过 CachedBackedEmbeddings 缓存 embeddings,以避免重复查询或重新索引内容时重新计算 embeddings。

  2. 在某些检索器中用作简单的 Document 持久化层。

请参阅以下操作指南了解更多信息:

接口

所有 BaseStores 都支持以下接口。请注意,该接口允许一次修改多个键值对:

  • 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]:迭代存储中的所有键,可以选择按前缀过滤。

集成

请参考 stores integration page 查看可用的键值存储集成列表。