Source code for langchain_core.indexing.base

from __future__ import annotations

from abc import ABC, abstractmethod
from typing import List, Optional, Sequence


[docs]class RecordManager(ABC): """抽象基类,表示记录管理器的接口。"""
[docs] def __init__( self, namespace: str, ) -> None: """初始化记录管理器。 参数: namespace (str):记录管理器的命名空间。 """ self.namespace = namespace
[docs] @abstractmethod def create_schema(self) -> None: """为记录管理器创建数据库模式。"""
[docs] @abstractmethod async def acreate_schema(self) -> None: """异步创建记录管理器的数据库模式。"""
[docs] @abstractmethod def get_time(self) -> float: """获取当前服务器时间作为高分辨率时间戳! 从服务器获取这个时间是很重要的,以确保一个单调时钟,否则在清理旧文档时可能会丢失数据! 返回: 当前服务器时间作为浮点时间戳。 """
[docs] @abstractmethod async def aget_time(self) -> float: """异步获取当前服务器时间作为高分辨率时间戳。 重要的是从服务器获取此时间以确保单调时钟,否则在清理旧文档时可能会丢失数据! 返回: 当前服务器时间作为浮点时间戳。 """
[docs] @abstractmethod def update( self, keys: Sequence[str], *, group_ids: Optional[Sequence[Optional[str]]] = None, time_at_least: Optional[float] = None, ) -> None: """将记录插入数据库。 参数: keys:需要插入的记录键的列表。 group_ids:与键对应的组ID列表。 time_at_least:可选的时间戳。实现可以使用此参数 可选地验证时间戳至少是存储数据的系统中的时间。 例如,用于验证Postgres数据库中的时间是否等于或大于给定时间戳,如果不是,则 抛出错误。 这旨在帮助防止时间漂移问题,因为 时间可能不是单调递增的! 引发: ValueError:如果键的长度与group_ids的长度不匹配。 """
[docs] @abstractmethod async def aupdate( self, keys: Sequence[str], *, group_ids: Optional[Sequence[Optional[str]]] = None, time_at_least: Optional[float] = None, ) -> None: """将记录异步更新到数据库中。 参数: keys:需要更新的记录键列表。 group_ids:与键对应的组ID列表。 time_at_least:可选的时间戳。实现可以使用此参数 可选地验证时间戳至少等于数据存储系统中的时间。 例如,用于验证postgres数据库中的时间 是否等于或大于给定的时间戳,如果不是,则 抛出错误。 这旨在帮助防止时间漂移问题,因为 时间可能不是单调递增的! 抛出: ValueError:如果键的长度与group_ids的长度不匹配。 """
[docs] @abstractmethod def exists(self, keys: Sequence[str]) -> List[bool]: """检查提供的键是否存在于数据库中。 参数: keys:要检查的键列表。 返回: 一个布尔值列表,指示每个键的存在情况。 """
[docs] @abstractmethod async def aexists(self, keys: Sequence[str]) -> List[bool]: """异步检查提供的键是否存在于数据库中。 参数: keys:要检查的键列表。 返回: 一个布尔值列表,指示每个键的存在情况。 """
[docs] @abstractmethod def list_keys( self, *, before: Optional[float] = None, after: Optional[float] = None, group_ids: Optional[Sequence[str]] = None, limit: Optional[int] = None, ) -> List[str]: """根据提供的过滤条件列出数据库中的记录。 参数: before:过滤条件,列出在此时间之前更新的记录。 after:过滤条件,列出在此时间之后更新的记录。 group_ids:过滤条件,列出具有特定组ID的记录。 limit:可选参数,限制要返回的记录数。 返回: 匹配记录的键列表。 """
[docs] @abstractmethod async def alist_keys( self, *, before: Optional[float] = None, after: Optional[float] = None, group_ids: Optional[Sequence[str]] = None, limit: Optional[int] = None, ) -> List[str]: """根据提供的过滤条件异步列出数据库中的记录。 参数: before: 过滤条件,列出在此时间之前更新的记录。 after: 过滤条件,列出在此时间之后更新的记录。 group_ids: 过滤条件,列出具有特定组ID的记录。 limit: 可选参数,限制要返回的记录数量。 返回: 匹配记录的键列表。 """
[docs] @abstractmethod def delete_keys(self, keys: Sequence[str]) -> None: """从数据库中删除指定的记录。 参数: keys:要删除的键的列表。 """
[docs] @abstractmethod async def adelete_keys(self, keys: Sequence[str]) -> None: """从数据库中异步删除指定记录。 参数: keys:要删除的键列表。 """