langchain_core.indexing.base.RecordManager

class langchain_core.indexing.base.RecordManager(namespace: str)[源代码]

表示记录管理器接口的抽象基类。

langchain索引API使用记录管理器抽象。

记录管理器负责跟踪已经写入向量存储库的文档及其写入时间。

索引API对每个文档计算哈希值,并将其与写入时间和源ID一起存储在记录管理器中。

在随后的索引运行中,索引API可以检查记录管理器以确定哪些文档已经索引过,哪些尚未。

这允许索引API避免重新索引已经索引过的文档,并且只索引新的文档。

此抽象的主要益处是它可以跨许多向量存储库工作。为了支持,向量存储库只需要支持通过ID添加和删除文档的能力。使用记录管理器,索引API将能够删除过时的文档,并避免对已索引的文档进行重复索引。

此抽象的主要约束是

  1. 它依赖于时间戳来确定哪些文档已经索引过,哪些尚未。这意味着时间戳必须是单调递增的。时间戳应该是服务器测量的时间戳,以最小化问题。

  2. 记录管理器目前是独立于向量存储库实现的,这意味着整个系统变成了分布式,可能会创建一致性相关的问题。例如,写入记录管理器成功,但对应于向量存储库的写入失败。

初始化记录管理器。

参数

namespace (str) – 记录管理器的命名空间。

方法

__init__(namespace)

初始化记录管理器。

acreate_schema()

异步创建记录管理器数据库的模式。

adelete_keys(keys)

异步从数据库中删除指定的记录。

aexists(keys)

异步检查提供的密钥是否存在于数据库中。

aget_time()

异步获取当前服务器时间作为高分辨率时间戳。

alist_keys(*[, before, after, group_ids, limit])

根据提供的筛选器异步列出数据库中的记录。

aupdate(keys, *[, group_ids, time_at_least])

异步将记录更新到数据库中。

create_schema()

为记录管理器创建数据库模式。

delete_keys(keys)

从数据库中删除指定的记录。

exists(keys)

检查提供的键是否存在于数据库中。

get_time()

获取当前服务器时间作为高分辨率时间戳!

list_keys(*[, before, after, group_ids, limit])

根据提供的过滤器列出数据库中的记录。

update(keys, *[, group_ids, time_at_least])

更新记录到数据库。

__init__(namespace: str) None[source]

初始化记录管理器。

参数

namespace (str) – 记录管理器的命名空间。

返回类型

None

abstract async acreate_schema() None[source]

异步创建记录管理器数据库的模式。

返回类型

None

abstract async adelete_keys(keys: Sequence[str]) None[source]

异步从数据库中删除指定的记录。

参数

keys (Sequence[str]) – 要删除的键列表。

返回类型

None

abstract async aexists(keys: Sequence[str]) List[bool][source]

异步检查提供的密钥是否存在于数据库中。

参数

keys (Sequence[str]) – 要检查的键列表。

返回

一个布尔值列表,指示每个键的存在性。

返回类型

List[bool]

abstract async aget_time() float[source]

异步获取当前服务器时间作为高分辨率时间戳。

从服务器获取此信息以保证单调时钟非常重要,否则在清理旧文档时可能会发生数据丢失!

返回

以浮点时间戳表示的当前服务器时间。

返回类型

浮点类型

abstract async alist_keys(*, before: Optional[float] = None, after: Optional[float] = None, group_ids: Optional[Sequence[str]] = None, limit: Optional[int] = None) List[str][source]

根据提供的筛选器异步列出数据库中的记录。

参数
  • before (Optional[float]) – 过滤列表,列出在此时间之前更新的记录。

  • after (Optional[float]) – 过滤列表,列出在此时间之后更新的记录。

  • group_ids (Optional[Sequence[str]]) – 过滤列表,列出具有特定分组ID的记录。

  • limit (Optional[int]) – 返回记录数的可选限制。

返回

匹配记录的键列表。

返回类型

列表[字符串]

抽象 async aupdate(keys: Sequence[str], *, group_ids: Optional[Sequence[Optional[str]]] = None, time_at_least: Optional[float] = None) None[source]

异步将记录更新到数据库中。

参数
  • keys (Sequence[str]) – 要upsert的记录键列表。

  • group_ids (Optional[Sequence[Optional[str]]]) – 与键对应的组ID列表。

  • time_at_least (Optional[float]) –

    可选的时间戳。实现可以使用此时间戳来可选性地验证在存储数据的系统中时间戳是否至少是此时间。

    例如,用以来验证PostgreSQL数据库中的时间是否等于或大于给定的时间戳,如果不是则抛出错误。

    这旨在帮助防止时间漂移问题,因为时间可能不会是单调递增的!

抛出

ValueError – 如果keys的长度与group_ids的长度不匹配。

返回类型

None

抽象 create_schema() None[source]

为记录管理器创建数据库模式。

返回类型

None

抽象 delete_keys(keys: Sequence[str]) None[source]

从数据库中删除指定的记录。

参数

keys (Sequence[str]) – 要删除的键列表。

返回类型

None

抽象 exists(keys: str序列) 布尔值列表[source]

检查提供的键是否存在于数据库中。

参数

keys (Sequence[str]) – 要检查的键列表。

返回

一个布尔值列表,指示每个键的存在性。

返回类型

List[bool]

抽象 get_time() 浮点数[source]

获取当前服务器时间作为高分辨率时间戳!

从服务器获取此信息以保证单调时钟非常重要,否则在清理旧文档时可能会发生数据丢失!

返回

以浮点时间戳表示的当前服务器时间。

返回类型

浮点类型

抽象 list_keys(..., before: Optional[浮点数] = None, after: Optional[浮点数] = None, group_ids: Optional[str序列, limit: Optional[整数]) 字符串列表[source]

根据提供的过滤器列出数据库中的记录。

参数
  • before (Optional[float]) – 过滤列表,列出在此时间之前更新的记录。

  • after (Optional[float]) – 过滤列表,列出在此时间之后更新的记录。

  • group_ids (Optional[Sequence[str]]) – 过滤列表,列出具有特定分组ID的记录。

  • limit (Optional[int]) – 返回记录数的可选限制。

返回

匹配记录的键列表。

返回类型

列表[字符串]

摘要 update(keys: Sequence[str], *, group_ids: Optional[Sequence[Optional[str]]] = None, time_at_least: Optional[float] = None) None[source]

更新记录到数据库。

参数
  • keys (Sequence[str]) – 要upsert的记录键列表。

  • group_ids (Optional[Sequence[Optional[str]]]) – 与键对应的组ID列表。

  • time_at_least (Optional[float]) –

    可选的时间戳。实现可以使用此时间戳来可选性地验证在存储数据的系统中时间戳是否至少是此时间。

    例如,用以来验证PostgreSQL数据库中的时间是否等于或大于给定的时间戳,如果不是则抛出错误。

    这旨在帮助防止时间漂移问题,因为时间可能不会是单调递增的!

抛出

ValueError – 如果keys的长度与group_ids的长度不匹配。

返回类型

None