pypi / redisvl
redisvl
What changed in redisvl 0.27 to 0.28, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-28.
32 breaking3 security2 new APIs and options1 performance4 behavior and defaults12 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initredisvl 0.2832 changes
Breaking changes 26
The constructor no longer converts a sync Redis client automatically. Pass an async client, or convert a non-cluster client yourself with
RedisConnectionFactory.sync_to_async_redis().Passing the wrong Redis client flavour now raises
TypeErrorat construction rather than failing at first use.Type checkers now see the real constructor signatures, so calls passing unsupported arguments may newly fail type checking.
This index-constructor keyword is removed; use
connection_kwargswith the same value.Use this index-constructor keyword in place of the removed
connection_argsandredis_kwargs, passing the same value.Type checkers now see the real vectorizer method signature; calls passing unsupported arguments may newly fail type checking.
Type checkers now see the real vectorizer method signature; calls passing unsupported arguments may newly fail type checking.
GEO validation and schema inference now expect longitude before latitude, matching Redis. Existing latitude-first values may need swapping and reloading; validation cannot detect every swapped pair.
Use this function in place of the removed
RedisConnectionFactory.connect().Use this function in place of the removed
RedisConnectionFactory.connect().Type checkers now see the real signatures, so calls passing unsupported arguments may newly fail type checking.
An index given a client without
redis_urlnow raisesRedisVLErroron reconnect after that client is closed, instead of falling back toREDIS_URL.This index-constructor keyword is removed; use
connection_kwargswith the same value.Use this keyword in the connection factory functions in place of the removed
urlkeyword.An
AsyncSearchIndexbuilt with bothredis_urland aurlinsideconnection_kwargsnow raises instead of connecting to the latter.A cache built from a
redis_urlnow raisesConnectionErrorwhen its async client is created, surfacing an unreachable server at construction rather than at the first command.This connection factory method is removed; use
get_redis_connection()orget_async_redis_connection()instead.Passing the wrong Redis client flavour now raises
TypeErrorat construction rather than failing at first use.The connection method and its
AsyncSearchIndexcounterpart are removed; passredis_clientorredis_urlto the constructor instead.The method and its
AsyncSearchIndexcounterpart are removed; passredis_clientorredis_urlto the constructor instead.Type checkers now see the real constructor signatures, so calls passing unsupported arguments may newly fail type checking.
Type checkers now see the real signatures, so calls passing unsupported arguments may newly fail type checking.
Type checkers now see the real signatures, so calls passing unsupported arguments may newly fail type checking.
Passing an empty reference id now raises
ValueErrorinstead of matching every reference, deleting one and reporting success.Passing an empty reference id now raises
ValueErrorinstead of matching every reference and returning an arbitrary one.The keyword is removed from all five connection factory functions; use
redis_urlinstead.
Security 1
Custom tool profiles can scope every query to a tenant from the caller’s verified token. The injected field is hidden from the model, and injecting profiles are refused when authentication is off, transport is stdio, or another tool can reach…
New APIs and options 2
This public function returns
Truefor filters that match every document, includingNone,"*"and an uninitialisedFilterExpression.The constructor accepts
owns_clientto control whether the index closes its Redis client on disconnect or garbage collection. The default is unchanged; passTrueto hand over a supplied client orFalseto keep one the index would otherwise close.…
Performance 1
For JSON indexes with
validate_on_load=True, schema-derived JSONPath expressions are compiled once and reused instead of re-parsed for every field of every document, substantially speeding document loading.
Behavior and default changes 2
The protobuf upper bound has been removed from the
allextra, so installations are no longer constrained by RedisVL when resolving newer protobuf versions.The protobuf upper bound has been removed from the
vertexaiextra, so installations are no longer constrained by RedisVL when resolving newer protobuf versions.
redisvl 0.2722 changes
Breaking changes 6
Replaces EXTERNAL_INDEX_LIFECYCLE_CONFLICT in redisvl.extensions.constants; code importing the old name or matching its old message needs updating.
Geo coordinates reject strings and
Decimalvalues withTypeError, and out-of-range coordinates withValueError; zero, negative, or infinite radii raiseValueError.Geo radius queries now use the supplied fractional distance instead of truncating it to an integer.
between(start, end)raisesTypeErrorunless both bounds are real numbers; coerce numeric strings orDecimalvalues first.Tag filter values are validated and a
|in a value is escaped, so it matches one literal value rather than introducing a union.A raw-string filter containing a top-level
|is now contained within the filter, preventing results outside the vector range.
Security 2
Clearing an index uses CountQuery instead of FT.INFO, making it available to credentials with +@read +@write; clearing also continues past pages whose keys could not be deleted.
Clearing an index uses CountQuery instead of FT.INFO, making it available to credentials with +@read +@write; clearing also continues past pages whose keys could not be deleted.
Behavior and default changes 2
Filtered queries no longer group vector-range clauses in parentheses; the meaning is unchanged, but exact query-string assertions may need updating.
Filtered queries no longer wrap the whole query; the meaning is unchanged, but exact query-string assertions may need updating.
Fixes and other changes 12
Fixes cache clearing key scans that hang or crash on Redis Cluster.
SemanticCache, MessageHistory, SemanticMessageHistory and SemanticRouter instances created with create_index=False can now call clear() to remove their entries; delete() still raises ValueError.
Fixes batch writes being silently dropped on async Redis Cluster.
Fixes migration key scans that hang or crash on Redis Cluster.
Pagination now continues past a page whose matches were all dropped.
Glob metacharacters in SCAN match patterns are now escaped.
Fixes connections to Sentinel instances when passwords contain quotes.
Filter expressions combined with another clause are now parenthesised, fixing broken query shapes.
The
eq,ne, andintext filters now work with multi-word values.An explicit wildcard filter now runs instead of raising a syntax error.
Text filter values are validated and contained in their clause; quoted values in inequality filters now exclude correctly.
A
filter_expressioncontaining more than one clause now runs instead of raising a syntax error.