语义路由器

语义路由器

class SemanticRouter(name, routes, vectorizer=None, routing_config=None, redis_client=None, redis_url='redis://localhost:6379', overwrite=False, connection_kwargs={})

用于管理和查询路由向量的语义路由器。

初始化 SemanticRouter。

  • 参数
    • name (str) – 语义路由器的名称。
    • routes (List [Route ]) – Route 对象列表。
    • vectorizer (BaseVectorizer ,可选) – 用于嵌入路由引用的向量化器。默认为默认的 HFTextVectorizer。
    • routing_config (RoutingConfig ,可选) – 路由行为配置。默认为默认的 RoutingConfig。
    • redis_client (可选 [ Redis ] ,可选) – 用于连接的 Redis 客户端。默认为 None。
    • redis_url (str ,可选) – Redis URL。默认为 redis://localhost:6379。
    • overwrite (bool ,可选) – 是否覆盖现有索引。默认为 False。
    • connection_kwargs (Dict [ str Any ]) – Redis 客户端的连接参数。默认为空 {}。

clear()

从语义路由器索引中清除所有路由。

  • 返回类型: None

delete()

删除语义路由器索引。

  • 返回类型: None

classmethod from_dict(data, **kwargs)

从字典创建 SemanticRouter。

  • 参数: data (Dict [ str Any ]) – 包含语义路由器数据的字典。
  • 返回: 语义路由器实例。
  • 返回类型: SemanticRouter
  • 抛出: ValueError – 如果所需数据缺失或无效。
from redisvl.extensions.router import SemanticRouter
router_data = {
    "name": "example_router",
    "routes": [{"name": "route1", "references": ["ref1"], "distance_threshold": 0.5}],
    "vectorizer": {"type": "openai", "model": "text-embedding-ada-002"},
}
router = SemanticRouter.from_dict(router_data)

classmethod from_yaml(file_path, **kwargs)

从 YAML 文件创建 SemanticRouter。

  • 参数: file_path (str) – YAML 文件路径。
  • 返回: 语义路由器实例。
  • 返回类型: SemanticRouter
  • 抛出
    • ValueError – 如果文件路径无效。
    • FileNotFoundError – 如果文件不存在。
from redisvl.extensions.router import SemanticRouter
router = SemanticRouter.from_yaml("router.yaml", redis_url="redis://localhost:6379")

get(route_name)

按名称获取路由。

  • 参数: route_name (str) – 路由名称。
  • 返回: 选定的 Route 对象,如果未找到则为 None。
  • 返回类型: Optional[Route]

model_post_init(context, /)

此函数旨在像 BaseModel 方法一样,用于初始化私有属性。

它将 context 作为参数,因为这是 pydantic-core 调用时传递的。

  • 参数
    • self (BaseModel) – BaseModel 实例。
    • context (Any) – 上下文。
  • 返回类型: None

remove_route(route_name)

从语义路由器中删除路由及其所有引用。

  • 参数: route_name (str) – 要删除的路由名称。
  • 返回类型: None

route_many(statement=None, vector=None, max_k=None, distance_threshold=None, aggregation_method=None)

使用给定的语句或向量查询语义路由器以查找多个匹配项。

  • 参数
    • statement (可选 [ str ]) – 要查询的输入语句。
    • vector (可选 [ List [ float ] ]) – 要查询的输入向量。
    • max_k (可选 [ int ]) – 返回的顶级匹配项的最大数量。
    • distance_threshold (可选 [ float ]) – 语义距离阈值。
    • aggregation_method (可选 [DistanceAggregationMethod ]) – 用于向量距离的聚合方法。
  • 返回: 匹配的路由及其详细信息。
  • 返回类型: List[RouteMatch]

to_dict()

将 SemanticRouter 实例转换为字典。

  • 返回: SemanticRouter 的字典表示。
  • 返回类型: Dict[str, Any]
from redisvl.extensions.router import SemanticRouter
router = SemanticRouter(name="example_router", routes=[], redis_url="redis://localhost:6379")
router_dict = router.to_dict()

to_yaml(file_path, overwrite=True)

将语义路由器写入 YAML 文件。

  • 参数
    • file_path (str) – YAML 文件路径。
    • overwrite (bool) – 如果文件已存在,是否覆盖。
  • 抛出: FileExistsError – 如果文件已存在且 overwrite 为 False。
  • 返回类型: None
from redisvl.extensions.router import SemanticRouter
router = SemanticRouter(
    name="example_router",
    routes=[],
    redis_url="redis://localhost:6379"
)
router.to_yaml("router.yaml")

update_route_thresholds(route_thresholds)

更新每个路由的距离阈值。

  • 参数: route_thresholds (Dict [ str float ]) – 路由名称及其距离阈值的字典。

update_routing_config(routing_config)

更新路由配置。

  • 参数: routing_config (RoutingConfig) – 新的路由配置。

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True}

模型配置,应为符合 [ConfigDict][pydantic.config.ConfigDict] 的字典。

name: str

语义路由器的名称。

property route_names: List[str]

获取路由名称列表。

  • 返回: 路由名称列表。
  • 返回类型: List[str]

property route_thresholds: Dict[str, float | None]

获取每个路由的距离阈值。

  • 返回: 路由名称及其距离阈值的字典。
  • 返回类型: Dict[str, float]

routes: List[Route]

Route 对象列表。

routing_config: RoutingConfig

路由行为配置。

vectorizer: BaseVectorizer

用于嵌入路由引用的向量化器。

路由配置

class RoutingConfig(*, max_k=1, aggregation_method=DistanceAggregationMethod.avg)

路由行为配置。

通过解析和验证来自关键字参数的输入数据来创建新模型。

如果输入数据无法验证以构成有效模型,则抛出 [ValidationError][pydantic_core.ValidationError]。

self 显式为 positional-only,以允许将 self 用作字段名。

  • 参数
    • max_k (Annotated [ int FieldInfo ( annotation=NoneType required=False default=1 metadata= [ Strict ( strict=True ) Gt ( gt=0 ) ] ) ])
    • aggregation_method (DistanceAggregationMethod)

max_k: Annotated[int, FieldInfo(annotation=NoneType, required=False, default=1, metadata=[Strict(strict=True), Gt(gt=0)])]

用于对查询进行分类的聚合方法。

model_config: ClassVar[ConfigDict] = {'extra': 'ignore'}

模型配置,应为符合 [ConfigDict][pydantic.config.ConfigDict] 的字典。

路由

class Route(*, name, references, metadata={}, distance_threshold=0.5)

表示具有关联元数据和阈值的路由路径模型。

通过解析和验证来自关键字参数的输入数据来创建新模型。

如果输入数据无法验证以构成有效模型,则抛出 [ValidationError][pydantic_core.ValidationError]。

self 显式为 positional-only,以允许将 self 用作字段名。

  • 参数
    • name (str)
    • references (List [ str ])
    • metadata (Dict [ str Any ])
    • distance_threshold (Annotated [ float FieldInfo ( annotation=NoneType required=True metadata= [ Strict ( strict=True ) Gt ( gt=0 ) Le ( le=2 ) ] ) ])

distance_threshold: Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Strict(strict=True), Gt(gt=0), Le(le=2)])]

匹配路由的距离阈值。

metadata: Dict[str, Any]

与路由关联的元数据。

model_config: ClassVar[ConfigDict] = {}

模型配置,应为符合 [ConfigDict][pydantic.config.ConfigDict] 的字典。

name: str

路由的名称。

references: List[str]

路由的引用短语列表。

路由匹配

class RouteMatch(*, name=None, distance=None)

表示具有距离信息的匹配路由模型。

通过解析和验证来自关键字参数的输入数据来创建新模型。

如果输入数据无法验证以构成有效模型,则抛出 [ValidationError][pydantic_core.ValidationError]。

self 显式为 positional-only,以允许将 self 用作字段名。

  • 参数
    • name (str | None)
    • distance (float | None)

distance: float | None

语句与匹配路由之间的向量距离。

model_config: ClassVar[ConfigDict] = {}

模型配置,应为符合 [ConfigDict][pydantic.config.ConfigDict] 的字典。

name: str | None

匹配的路由名称。

距离聚合方法

class DistanceAggregationMethod(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

距离聚合方法的枚举。

avg = 'avg'

计算向量距离的平均值。

min = 'min'

计算向量距离的最小值。

sum = 'sum'

计算向量距离的总和。

评价本页
返回顶部 ↑