Semantic Router

Semantic Router

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

Semantic Router for managing and querying route vectors.

Initialize the SemanticRouter.

  • Parameters:
    • name (str) – The name of the semantic router.
    • routes (List [Route ]) – List of Route objects.
    • vectorizer (BaseVectorizer , optional) – The vectorizer used to embed route references. Defaults to default HFTextVectorizer.
    • routing_config (RoutingConfig , optional) – Configuration for routing behavior. Defaults to the default RoutingConfig.
    • redis_client (Optional [ Redis ] , optional) – Redis client for connection. Defaults to None.
    • redis_url (str , optional) – The redis url. Defaults to redis://localhost:6379.
    • overwrite (bool , optional) – Whether to overwrite existing index. Defaults to False.
    • connection_kwargs (Dict [ str , Any ]) – The connection arguments for the redis client. Defaults to empty {}.

clear()

Flush all routes from the semantic router index.

  • Return type: None

delete()

Delete the semantic router index.

  • Return type: None

classmethod from_dict(data, **kwargs)

Create a SemanticRouter from a dictionary.

  • Parameters: data (Dict [ str , Any ]) – The dictionary containing the semantic router data.
  • Returns: The semantic router instance.
  • Return type: SemanticRouter
  • Raises: ValueError – If required data is missing or invalid.
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)

Create a SemanticRouter from a YAML file.

  • Parameters: file_path (str) – The path to the YAML file.
  • Returns: The semantic router instance.
  • Return type: SemanticRouter
  • Raises:
    • ValueError – If the file path is invalid.
    • FileNotFoundError – If the file does not exist.
from redisvl.extensions.router import SemanticRouter
router = SemanticRouter.from_yaml("router.yaml", redis_url="redis://localhost:6379")

get(route_name)

Get a route by its name.

  • Parameters: route_name (str) – Name of the route.
  • Returns: The selected Route object or None if not found.
  • Return type: Optional[Route]

model_post_init(context, /)

This function is meant to behave like a BaseModel method to initialise private attributes.

It takes context as an argument since that’s what pydantic-core passes when calling it.

  • Parameters:
    • self (BaseModel) – The BaseModel instance.
    • context (Any) – The context.
  • Return type: None

remove_route(route_name)

Remove a route and all references from the semantic router.

  • Parameters: route_name (str) – Name of the route to remove.
  • Return type: None

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

Query the semantic router with a given statement or vector for multiple matches.

  • Parameters:
    • statement (Optional [ str ]) – The input statement to be queried.
    • vector (Optional [ List [ float ] ]) – The input vector to be queried.
    • max_k (Optional [ int ]) – The maximum number of top matches to return.
    • distance_threshold (Optional [ float ]) – The threshold for semantic distance.
    • aggregation_method (Optional [DistanceAggregationMethod ]) – The aggregation method used for vector distances.
  • Returns: The matching routes and their details.
  • Return type: List[RouteMatch]

to_dict()

Convert the SemanticRouter instance to a dictionary.

  • Returns: The dictionary representation of the SemanticRouter.
  • Return type: 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)

Write the semantic router to a YAML file.

  • Parameters:
    • file_path (str) – The path to the YAML file.
    • overwrite (bool) – Whether to overwrite the file if it already exists.
  • Raises: FileExistsError – If the file already exists and overwrite is False.
  • Return type: None
from redisvl.extensions.router import SemanticRouter
router = SemanticRouter(
    name="example_router",
    routes=[],
    redis_url="redis://localhost:6379"
)
router.to_yaml("router.yaml")

update_routing_config(routing_config)

Update the routing configuration.

  • Parameters: routing_config (RoutingConfig) – The new routing configuration.

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

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str

The name of the semantic router.

property route_names: List[str]

Get the list of route names.

  • Returns: List of route names.
  • Return type: List[str]

property route_thresholds: Dict[str, float | None]

Get the distance thresholds for each route.

  • Returns: Dictionary of route names and their distance thresholds.
  • Return type: Dict[str, float]

routes: List[Route]

List of Route objects.

routing_config: RoutingConfig

Configuration for routing behavior.

vectorizer: BaseVectorizer

The vectorizer used to embed route references.

Routing Config

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

Configuration for routing behavior.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

  • Parameters:
    • 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)])]

Aggregation method to use to classify queries.

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

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Route

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

Model representing a routing path with associated metadata and thresholds.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

  • Parameters:
    • 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=1 ) ] ) ])

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

Distance threshold for matching the route.

metadata: Dict[str, Any]

Metadata associated with the route.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str

The name of the route.

references: List[str]

List of reference phrases for the route.

Route Match

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

Model representing a matched route with distance information.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

  • Parameters:
    • name (str | None)
    • distance (float | None)

distance: float | None

The vector distance between the statement and the matched route.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str | None

The matched route name.

Distance Aggregation Method

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

Enumeration for distance aggregation methods.

avg = 'avg'

Compute the average of the vector distances.

min = 'min'

Compute the minimum of the vector distances.

sum = 'sum'

Compute the sum of the vector distances.

RATE THIS PAGE
Back to top ↑