语义路由器
语义路由器
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'
计算向量距离的总和。