Skip to content

Releases: redis/redis-vl-python

0.9.1

01 Oct 23:25
Compare
Choose a tag to compare

Changes

  • refactor: obtain version information dynamically from the installed p… (#401)
  • release: bump version to 0.9.1 (#400)

Contributors

We'd like to thank all the contributors who worked on this release!

@bsbodden

0.9.0

01 Oct 17:21
Compare
Choose a tag to compare

🚀 RedisVL 0.9.0 Release Notes

Release Date: October 1, 2025

We're excited to announce RedisVL 0.9.0, featuring significant enhancements to conversational AI, advanced query capabilities, and enterprise-grade reliability improvements.


✨ Highlights

🤖 Enhanced LLM Memory & Conversational AI

Message History Gets Smarter

Your AI agents and chatbots now have more powerful memory capabilities:

  • 🏷️ Tool Call Support - Native support for tool role alongside system, user, and llm roles, enabling proper function calling workflows
  • 📋 Message Metadata - Attach arbitrary metadata to messages for richer context tracking (API parameters, model info, timestamps, etc.)
  • 🔍 Role Filtering - Retrieve messages by specific roles (e.g., get only system prompts or user queries) with single or multi-role filters
# Filter by role
history.get_recent(role="user")  # Only user messages
history.get_recent(role=["system", "llm"])  # System and LLM messages

# Add metadata to messages
history.add_message({
    "role": "tool",
    "content": "42",
    "tool_call_id": "calc_001",
    "metadata": {"function": "calculate", "duration_ms": 15}
})

Impact: Build more sophisticated AI agents with better observability and control over conversational context.


🔎 Advanced Search & Query Features

More Control Over Your Search Results

Text Field Weighting

Prioritize matches in specific fields (like titles over content) with customizable weights:

from redisvl.query import TextQuery

query = TextQuery(
    text="machine learning tutorial",
    text_field_name={
        "title": 5.0,      # Boost title matches 5x
        "description": 2.0, # Boost description 2x
        "content": 1.0      # Normal content weight
    }
)

Flexible Multi-Field Sorting

Enhanced sort_by() API with support for multiple formats:

# Simple ascending sort
query.sort_by("score")

# With explicit direction
query.sort_by(("created_at", "DESC"))

# Multiple fields (first field used per Redis limitations)
query.sort_by([("score", "DESC"), ("created_at", "ASC")])

Binary Field Handling

Skip decoding for embeddings and other binary data:

query.return_fields(
    ["title", "content", "embedding"],
    skip_decode="embedding"  # Return raw bytes
)

Impact: More precise search relevance and better performance when working with binary data.


🏢 Enterprise Features

Redis Sentinel Support

High availability deployments with automatic failover:

from redisvl.index import SearchIndex

index = SearchIndex(
    schema,
    redis_url="redis+sentinel://sentinel1:26379,sentinel2:26379/mymaster"
)

Supports multiple sentinel hosts, authentication, and database selection.

Advanced Field Attributes

Fine-grained control over indexing and sorting behavior:

  • no_index - Store sortable fields without indexing (reduces memory, maintains sort capability)
  • unf (Un-Normalized Form) - Preserve original case/format for sorting on text and numeric fields
fields:
  - name: display_name
    type: text
    attrs:
      sortable: true
      unf: true        # Case-sensitive sorting
      no_index: false  # Still searchable

Impact: Better support for production deployments and optimized index memory usage.


⚡ Performance Improvements

Reduced Network Overhead

  • Optimized CLIENT SETINFO calls in SearchIndex.from_existing() - eliminated duplicate validation calls
  • Removed proactive module validation - reduced unnecessary MODULE LIST calls on connection initialization

Impact: Faster index operations and reduced Redis command overhead, especially noticeable in high-connection scenarios.


🐛 Bug Fixes

Core Functionality

  • Fixed multiple prefix handling in SearchIndex.from_existing() - now properly captures all prefixes instead of just the first one
  • Fixed filter expression handling - prevented native string filter expressions from being overridden with blank strings
  • Fixed key separator handling - eliminated double separator issues (e.g., user::123user:123)

Cluster & Connection

  • Fixed AsyncRedisCluster parameter handling - properly strips cluster parameter that's incompatible with AsyncRedisCluster.from_url()
  • Fixed ClusterPipeline AttributeError - graceful handling when ClusterPipeline objects lack nodes_manager attribute
  • Improved async cleanup - fixed logging errors during interpreter shutdown

Schema & Type Safety

  • Resolved IndexSchema fields type annotation - fixed conflicting expectations between dict and list formats
  • Fixed Pydantic model_name field conflict - eliminated UserWarning about protected namespace collision

Impact: More reliable operation across different Redis deployment types and improved stability.


🔧 Developer Experience

Testing Improvements

  • Comprehensive integration tests for all new features
  • Better Redis version detection and test skipping (e.g., BM25STD requires Redis 7.0+)
  • Extracted reusable test helpers for cleaner test code
  • Fixed pytest warnings and deprecation notices

Code Quality

  • Reduced code duplication through helper functions
  • Better error messages and validation
  • Improved type hints and documentation

📚 Documentation Updates

  • ✅ Enhanced message history examples with metadata and role filtering
  • ✅ New sections on text field weighting and advanced query features
  • ✅ Redis Sentinel connection documentation
  • ✅ Field attribute reference (UNF, NOINDEX)
  • ✅ Updated API documentation with new parameters

🔄 Breaking Changes

None - This release maintains full backward compatibility with 0.8.x versions.

All new features are additive with sensible defaults that preserve existing behavior.


📦 Installation

pip install --upgrade redisvl

For optional dependencies:

pip install redisvl[all]      # All vectorizer dependencies
pip install redisvl[hiredis]  # High-performance parser

🙏 Contributors

Thank you to everyone who contributed to this release:

Special thanks to our users who provided feedback and feature requests that shaped this release.

Full Changelog: v0.8.2...v0.9.0

0.8.2

26 Aug 15:23
fe6b8be
Compare
Choose a tag to compare

Changes

  • Filter expression as native string (#367)

Contributors

We'd like to thank all the contributors who worked on this release!

@rbs333

0.8.1

19 Aug 13:57
9dd1aab
Compare
Choose a tag to compare

Changes

  • disable progress bar by default (#363)

🚀 New Features

  • Adds metadata field to chat message history (#357)

Contributors

We'd like to thank all the contributors who worked on this release!

@justin-cechmanek and @rbs333

0.8.0

24 Jun 13:29
f941ffd
Compare
Choose a tag to compare

Changes

🚀 New Features

  • Migrate from poetry to UV for improved dependency mgmt (#355)
  • Factor out threshold optimizers and cleanup README (#354)
  • Update readthedocs config to use UV (#356)
  • Add support for newer Voyage 3.5 models (#339)

🐛 Bug Fixes

  • Fix spelling errors (#351)
  • Skip echo call for RedisCluster mode (#344)
  • Fix numpy version and remove scipy optional (#347)
  • Rename 0_5_0_release.ipynb to 0_5_1_release.ipynb (#335)
  • Fix headings for 08_semantic_router.ipynb (#336)

Contributors

We'd like to thank all the contributors who worked on this release!

@NishithHM, @abrookins, @fzowl, @paololazzari and @tylerhutcherson

0.7.0

30 May 05:33
Compare
Choose a tag to compare

Changes

  • Release prep for 0.7.0 (#343)
  • Fix various commands to work with Redis Cluster (#338)
  • Add Claude Code GitHub Workflow (#340)

🚀 New Features

  • Add index empty and missing support (#341)

Contributors

We'd like to thank all the contributors who worked on this release!

@abrookins and @tylerhutcherson

0.6.0

01 May 18:30
Compare
Choose a tag to compare

Changes

✨ New Features

  • Embeddings Cache Support
    Embedding caching is now enabled across all vectorizers, improving performance and reusability.
    (#318, #320, #325)

  • Semantic Router Enhancements
    Reference updates are now supported in semantic routers.
    (#322)

  • Lazy Import Strategy
    Introduced a lazy_import utility to defer loading of third-party libraries.
    (#330, #331)

🛠️ Improvements

  • New Default Embeddings Model
    Changed the default embedding model for semantic caching. See our published research on this model on arxiv.
    (#326)

  • Refactored Naming
    Renamed session manager classes to more clearly reflect their role as message history managers.
    (#323)

  • Dependency Cleanup
    Removed unnecessary third-party libraries (tabulate, coloredlogs) to reduce bloat.
    (#329)

@abrookins, @justin-cechmanek, @rbs333, and @tylerhutcherson

Full Changelog: 0.5.2...v0.6.0

0.5.2

09 Apr 17:21
61334ff
Compare
Choose a tag to compare

Changes

🐛 Bug Fixes

  • Widen ml-dtypes pkg range (#315)
  • Fix HybridQuery class description (#314)

Contributors

We'd like to thank all the contributors who worked on this release!

@paololazzari and @tylerhutcherson

0.5.1

06 Apr 03:17
4154aae
Compare
Choose a tag to compare

Changes

🚀 New Features

  • Add helpers for full-text and hybrid search queries (#303)
  • Add datetime and timestamp filters (#295)
  • Add distance threshold optimizer (#292)
  • Add option to normalize vector distances on query (#298 )
  • Add option to validate data against the schema with Pydantic (#304)
  • Add support for HYBRID_POLICY on KNN queries with filters (#299)

🐛 Bug Fixes

  • Validate passed-in Redis clients (#296)
  • Improve vectorizer kwargs and typing (#291)

Contributors

We'd like to thank all the contributors who worked on this release!

@abrookins, @bsbodden, @justin-cechmanek, @rbs333 and @tylerhutcherson

0.4.1

21 Feb 22:50
ad9bb21
Compare
Choose a tag to compare

Changes

🐛 Bug Fixes

  • Fix Redis URL parameter name (#289)

Contributors

We'd like to thank all the contributors who worked on this release!

@abrookins and @rbs333