redisvl breaking changes
Every breaking API change we have recorded in redisvl on PyPI: 587 breaking changes in 5 versions. Below are its newest 5 versions, removals and renames first, each with its source.
Newest change May 27, 2026

On this page
0.19.0
- Removed
redisvl.query.BaseVectorQuery.EPSILON_PARAM
redisvl.query.BaseVectorQuery.EPSILON_PARAM was removed in redisvl 0.19.0 pypi.org - Removed
redisvl.query.VectorQuery.epsilon
The epsilon keyword argument was removed from VectorQuery because Redis rejects it on KNN queries. Use VectorRangeQuery for range queries that need epsilon. pypi.org - Removed
redisvl.query.VectorQuery.set_epsilon
The set_epsilon() method was removed from VectorQuery. Use VectorRangeQuery for range queries that need epsilon. pypi.org - Signature changed
redisvl.query.VectorQuery.__init__
Was def __init__(self, vector: list[float] | bytes, vector_field_name: str, return_fields: list[str] | None = None, filter_expression: str | FilterExpression | None = None, dtype: str = 'float32', num_results: int = 10, return_score: bool... pypi.org
0.18.0
- Removed
The package no longer supports Python 3.9. Users on Python 3.9 must upgrade their Python version before installing this release. github.com - Signature changed
redisvl.cli.index.make_dict
Was def make_dict(values: List[Any]) -> Dict[Any, Any]; now def make_dict(values: list[Any]) -> dict[Any, Any]. pypi.org - Signature changed
redisvl.cli.index.RedisConnectionFactory.connect
Was @classmethod def connect(cls, redis_url: Optional[str] = None, use_async: bool = False, **kwargs) -> RedisClient; now @classmethod def connect(cls, redis_url: str | None = None, use_async: bool = False, **kwargs) -> RedisClient. pypi.org - Signature changed
redisvl.cli.index.RedisConnectionFactory.get_async_redis_cluster_connection
Was @staticmethod def get_async_redis_cluster_connection(redis_url: Optional[str] = None, **kwargs) -> AsyncRedisCluster; now @staticmethod def get_async_redis_cluster_connection(redis_url: str | None = None, **kwargs) -> AsyncRedisCluster. pypi.org - Signature changed
redisvl.cli.index.RedisConnectionFactory.get_async_redis_connection
Was @staticmethod def get_async_redis_connection(redis_url: Optional[str] = None, **kwargs) -> AsyncRedisClient; now @staticmethod def get_async_redis_connection(redis_url: str | None = None, **kwargs) -> AsyncRedisClient. pypi.org - Signature changed
redisvl.cli.index.RedisConnectionFactory.get_modules
Was @staticmethod def get_modules(client: SyncRedisClient) -> Dict[str, Any]; now @staticmethod def get_modules(client: SyncRedisClient) -> dict[str, Any]. pypi.org - Signature changed
redisvl.cli.index.RedisConnectionFactory.get_modules_async
Was @staticmethod async def get_modules_async(client: AsyncRedisClient) -> Dict[str, Any]; now @staticmethod async def get_modules_async(client: AsyncRedisClient) -> dict[str, Any]. pypi.org - Signature changed
redisvl.cli.index.RedisConnectionFactory.get_redis_cluster_connection
Was @staticmethod def get_redis_cluster_connection(redis_url: Optional[str] = None, **kwargs) -> RedisCluster; now @staticmethod def get_redis_cluster_connection(redis_url: str | None = None, **kwargs) -> RedisCluster. pypi.org - Signature changed
redisvl.cli.index.RedisConnectionFactory.get_redis_connection
Was @staticmethod def get_redis_connection(redis_url: Optional[str] = None, **kwargs) -> SyncRedisClient; now @staticmethod def get_redis_connection(redis_url: str | None = None, **kwargs) -> SyncRedisClient. pypi.org - Signature changed
redisvl.cli.index.RedisConnectionFactory.validate_async_redis
Was @staticmethod async def validate_async_redis(redis_client: AsyncRedisClient, lib_name: Optional[str] = None) -> None; now @staticmethod async def validate_async_redis(redis_client: AsyncRedisClient, lib_name: str | None = None) -> None. pypi.org
And 344 more in this version.
0.7.0
- Signature changed
redisvl.cli.index.RedisConnectionFactory.connect
Was @classmethod def connect(cls, redis_url: Optional[str] = None, use_async: bool = False, **kwargs) -> Union[Redis, AsyncRedis]; now @classmethod def connect(cls, redis_url: Optional[str] = None, use_async: bool = False, **kwargs) ->... pypi.org - Signature changed
redisvl.cli.index.RedisConnectionFactory.get_async_redis_connection
Was @staticmethod def get_async_redis_connection(url: Optional[str] = None, **kwargs) -> AsyncRedis; now @staticmethod def get_async_redis_connection(url: Optional[str] = None, **kwargs) -> AsyncRedisClient. pypi.org - Signature changed
redisvl.cli.index.RedisConnectionFactory.get_modules
Was @staticmethod def get_modules(client: Redis) -> Dict[str, Any]; now @staticmethod def get_modules(client: SyncRedisClient) -> Dict[str, Any]. pypi.org - Signature changed
redisvl.cli.index.RedisConnectionFactory.get_modules_async
Was @staticmethod async def get_modules_async(client: AsyncRedis) -> Dict[str, Any]; now @staticmethod async def get_modules_async(client: AsyncRedisClient) -> Dict[str, Any]. pypi.org - Signature changed
redisvl.cli.index.RedisConnectionFactory.get_redis_connection
Was @staticmethod def get_redis_connection(redis_url: Optional[str] = None, required_modules: Optional[List[Dict[str, Any]]] = None, **kwargs) -> Redis; now @staticmethod def get_redis_connection(redis_url: Optional[str] = None... pypi.org - Signature changed
redisvl.cli.index.RedisConnectionFactory.sync_to_async_redis
Was @staticmethod def sync_to_async_redis(redis_client: Redis) -> AsyncRedis; now @staticmethod def sync_to_async_redis(redis_client: SyncRedisClient) -> AsyncRedisClient. pypi.org - Signature changed
redisvl.cli.index.RedisConnectionFactory.validate_async_redis
Was @staticmethod async def validate_async_redis(redis_client: AsyncRedis, lib_name: Optional[str] = None, required_modules: Optional[List[Dict[str, Any]]] = None) -> None; now @staticmethod async def validate_async_redis(redis_client... pypi.org - Signature changed
redisvl.cli.index.RedisConnectionFactory.validate_sync_redis
Was @staticmethod def validate_sync_redis(redis_client: Redis, lib_name: Optional[str] = None, required_modules: Optional[List[Dict[str, Any]]] = None) -> None; now @staticmethod def validate_sync_redis(redis_client: SyncRedisClient... pypi.org - Signature changed
redisvl.extensions.cache.BaseCache.__init__
Was def __init__(self, name: str, ttl: Optional[int] = None, redis_client: Optional[Redis] = None, redis_url: str = 'redis://localhost:6379', connection_kwargs: Dict[str, Any] = {}); now def __init__(self, name: str, ttl: Optional[int] =... pypi.org - Signature changed
redisvl.extensions.cache.embeddings.EmbeddingsCache.__init__
Was def __init__(self, name: str = 'embedcache', ttl: Optional[int] = None, redis_client: Optional[Redis] = None, redis_url: str = 'redis://localhost:6379', connection_kwargs: Dict[str, Any] = {}); now def __init__(self, name: str =... pypi.org
And 11 more in this version.
0.6.0
- Removed
redisvl.extensions.constants.SESSION_VECTOR_FIELD_NAME
redisvl.extensions.constants.SESSION_VECTOR_FIELD_NAME was removed in redisvl 0.6.0 pypi.org - Removed
redisvl.extensions.llmcache.schema.array_to_buffer
redisvl.extensions.llmcache.schema.array_to_buffer was removed in redisvl 0.6.0 pypi.org - Removed
redisvl.extensions.llmcache.schema.CACHE_VECTOR_FIELD_NAME
redisvl.extensions.llmcache.schema.CACHE_VECTOR_FIELD_NAME was removed in redisvl 0.6.0 pypi.org - Removed
redisvl.extensions.llmcache.schema.current_timestamp
redisvl.extensions.llmcache.schema.current_timestamp was removed in redisvl 0.6.0 pypi.org - Removed
redisvl.extensions.llmcache.schema.deserialize
redisvl.extensions.llmcache.schema.deserialize was removed in redisvl 0.6.0 pypi.org - Removed
redisvl.extensions.llmcache.schema.hashify
redisvl.extensions.llmcache.schema.hashify was removed in redisvl 0.6.0 pypi.org - Removed
redisvl.extensions.llmcache.schema.IndexSchema
redisvl.extensions.llmcache.schema.IndexSchema was removed in redisvl 0.6.0 pypi.org - Removed
redisvl.extensions.llmcache.schema.INSERTED_AT_FIELD_NAME
redisvl.extensions.llmcache.schema.INSERTED_AT_FIELD_NAME was removed in redisvl 0.6.0 pypi.org - Removed
redisvl.extensions.llmcache.schema.PROMPT_FIELD_NAME
redisvl.extensions.llmcache.schema.PROMPT_FIELD_NAME was removed in redisvl 0.6.0 pypi.org - Removed
redisvl.extensions.llmcache.schema.RESPONSE_FIELD_NAME
redisvl.extensions.llmcache.schema.RESPONSE_FIELD_NAME was removed in redisvl 0.6.0 pypi.org
And 131 more in this version.
0.4.0
- Removed
redisvl.extensions.router.Route.distance_threshold_must_be_positive
Route.distance_threshold_must_be_positive was removed in redisvl 0.4.0 pypi.org - Removed
redisvl.extensions.router.RoutingConfig.distance_threshold
RoutingConfig.distance_threshold was removed in redisvl 0.4.0 pypi.org - Removed
redisvl.extensions.router.RoutingConfig.distance_threshold_must_be_valid
RoutingConfig.distance_threshold_must_be_valid was removed in redisvl 0.4.0 pypi.org - Removed
redisvl.extensions.router.RoutingConfig.max_k_must_be_positive
RoutingConfig.max_k_must_be_positive was removed in redisvl 0.4.0 pypi.org - Removed
redisvl.extensions.router.semantic.SemanticRouter.Config
redisvl.extensions.router.semantic.SemanticRouter.Config was removed in redisvl 0.4.0 pypi.org - Removed
redisvl.extensions.router.SemanticRouter.Config
redisvl.extensions.router.SemanticRouter.Config was removed in redisvl 0.4.0 pypi.org - Removed
redisvl.extensions.session_manager.base_session.ChatMessage.Config
redisvl.extensions.session_manager.base_session.ChatMessage.Config was removed in redisvl 0.4.0 pypi.org - Removed
redisvl.extensions.session_manager.base_session.create_uuid
redisvl.extensions.session_manager.base_session.create_uuid was removed in redisvl 0.4.0 pypi.org - Removed
redisvl.extensions.session_manager.schema.ChatMessage.Config
redisvl.extensions.session_manager.schema.ChatMessage.Config was removed in redisvl 0.4.0 pypi.org - Removed
redisvl.extensions.session_manager.semantic_session.ChatMessage.Config
redisvl.extensions.session_manager.semantic_session.ChatMessage.Config was removed in redisvl 0.4.0 pypi.org
And 57 more in this version.
Check your code
These are the changes. To see which of them reach your code, scan a public repository, or have your coding agent call check_code with your manifest or lockfile over MCP. The API reads every change in every version, not only the newest. On Team and up, a fix pull request opens for the changes that reach a connected repository. Nothing merges or deploys.

Put your code on continuous management.
Scan a public repository now, or give your agent one line.
See how out of date your code is.
Tell your agent what changed since it was trained.
claude mcp add --transport http since https://api.since.dev/mcp