Skip to content

Releases: valkey-io/valkey-search

Release 1.2.0-rc3

11 Mar 01:03
e9fdc78

Choose a tag to compare

Release 1.2.0-rc3 Pre-release
Pre-release

Bug fixes / Improvements

  • Fixed a crash caused by lazy expiration during active search commands by using VALKEYMODULE_OPEN_KEY_NOEXPIRE and explicit expiration checks.
  • Index Creation Validation: Added check for the limit of 64 text fields per index.
  • Timeout Handling: Added timeout logic in aggregation stages and added comprehensive timeout tests for FT.AGGREGATE and all FT.SEARCH execution paths.
  • Removed stemmed word length restrictions to support cases where a stem root can be longer than the original word.
  • Support was added for the Valkey 9 CME Multi-DB feature by updating the select DB logic during RDB Load.
  • Fixed GetSerializationRange logic for Aggregation

Optimizations

  • Concurrent Indexing: Implemented a sharded PostingsMutexPool and utilizing Reader-Writer tree locks to improve throughput for parallel writes.
  • Lock Contention: Reduced lock contention on per_key_text_indexes_ during query evaluation.
  • Stemming Performance: Achieved up to 25-42% peak improvement for Snowball stemming by optimizing compiler flags.
  • Tokenization improvements to reduce allocations during normalization, stemming, etc.
  • Switched PositionMap to absl::btree_map, stem variants storage to vector and temporary stem mappings to InlinedVector for improved cache locality and reduced memory overhead.
  • Optimized raxMutate to complete mutation operations in a single tree traversal.
  • Resource Control: Introduced search.max-nonvector-search-results-fetched to limit ephemeral memory usage during non vector query searches.
  • Shard Efficiency: Introduced a development (usable in debug mode) fanout-data-uniformity configuration to reduce cross shard network traffic by optimizing fanout fetching.

Full Changelog: 1.2.0-rc2...1.2.0-rc3

Release 1.2.0-rc2

27 Feb 01:37
c4a58cf

Choose a tag to compare

Release 1.2.0-rc2 Pre-release
Pre-release

Bug fixes

  • Fix mutation sequence number timing bug to prevent race conditions with key deletions
  • Fix to ensure an RDB from a search module loaded valkey-server (after deleting the pre-existing indexes) can be loaded onto the valkey servers without the search module
  • Add null check for thread_monitor_ to prevent crashes in GetAvgCPUPercentage
  • Fix unhandled text path in PreFilter Evaluators for complex OR queries
  • Remove unnecessary allocation in text search operations

Optimizations

  • Replace linear scan with min-heap approach in TermIterator for faster term searches
  • Optimize FlatPositionMap::ReadCounts by replacing memcpy with loop-based byte reading
  • Implement Size Estimation of Text Predicate key results size to help with the decision of pre-filtering vs inline-filtering in vector queries

Full Changelog: 1.2.0-rc1...1.2.0-rc2

Release 1.2.0-rc1

19 Feb 21:26
f31b235

Choose a tag to compare

Release 1.2.0-rc1 Pre-release
Pre-release

Note: Like valkey-search 1.1, this valkey-search 1.2 release also requires Valkey core 9.0.1 or higher.

Major New Features / Updates

  • Adding text search capability. This includes updates to the FT.CREATE, FT.SEARCH, FT.AGGREGATE, Ingestion, etc.
  • Support for SKIPINITIALSCAN option on the FT.CREATE command
  • Single Slot Query support
  • Added support for SORTBY functionality on the FT.SEARCH command
  • Enhanced RDB format to eliminate backfill after load
  • Increase default for allowed number of indexes to 1000
  • Increased limit on number of fields with default updated to 1000 and max to 10000
  • FT.SEARCH and FT.AGGREGATE commands are no longer marked as denyoom
  • Add Memory Tracking for Index Schema Attributes
  • Replica nodes no longer participate in metadata consistency protocol. All mutation information comes from the Primary
  • Enhanced FT.INFO command with additional information in Cluster mode

Contributors

Full Changelog: 1.1.0...1.2.0-rc1

Release 1.1

24 Dec 00:17
df918dd

Choose a tag to compare

Major New Features

  • FT.AGGREGATE command is implemented.
  • Indexes and query operations no longer require a vector component.
  • Consistency of operations across the cluster is substantially improved.
  • The RDB format now includes information to avoid generating a backfill on reload when it's not required. (Backward compatible with 1.0 release)
  • The build system has switched to cmake.
  • A pytest-based integration test environment was added
  • Full DBNum support for cluster mode is implemented.
  • This release requires 9.0.1 Valkey core release or higher.

What's Changed

Read more

1.0.2

25 Nov 18:25

Choose a tag to compare

Valkey Search 1.0.2 - Released Tue 25 November 2025

Bug fixes

  • Disabled creation of indexes on database numbers != 0 in cluster mode.

1.0.1

11 Jun 17:11

Choose a tag to compare

Valkey Search 1.0.1 - Released Wed 11 June 2025

Bug fixes

  • Module-Config: fix a possibility of of a double free (#149)
  • More resilient builds on different Linux distros (#152, #154, #158, #168, #172)
  • Use a managed pointer for thread safe context in coordinator (#159)
  • Enable integration tests + ASAN (#162)
  • Fixed drop index bug (#166)
  • Fix GetRedisLocalPort function to support TLS (#144)

1.0.0

28 May 00:26
2dabdf9

Choose a tag to compare

Valkey Search 1.0.0 GA - Released Wed 28 May 2025

This is the first official release of Valkey Search 1.0. This release is fully compatible with Valkey 8.1.1 and later releases.

Behavior changes

  • Adding support for blocking clients during keyspace notification (#95)
  • Make index backfill batch/block size configurable (#97)
  • FT.SEARCH - Update neighbor sorting to always be asc (#104)
  • Add OOM checking to index backfill (#135)

Bug fixes

  • Avoid unsafe code in INFO during crash dump (#98)
  • Support counting cores on aarch64 (#107)
  • Create index with the correct DB number (#120) (#123)
  • Fix dumping corrupted rdb file (#131)
  • Fix empty vector query clause ft.search cmd parsing (#138)

Performance/efficiency improvements

  • Allow dynamic adjustment of thread count at runtime (#126) (#129)

Build and packaging changes

  • Allow building with external libs (#85)
  • Don't suppress error when running python integration tests (#89)
  • Add ASAN build option (#100)

Valkey Search 1.0.0 RC1 - Released Fri 28 Mar 2025

This is the first release candidate of valkey-search 1.0 that is a high-performance Vector Similarity Search engine optimized for AI-driven workloads. It delivers single-digit millisecond latency and high QPS, capable of handling billions of vectors with over 99% recall.

Valkey-Search allows users to create indexes and perform similarity searches, incorporating complex filters. It supports Approximate Nearest Neighbor (ANN) search with HNSW and exact matching using K-Nearest Neighbors (KNN). Users can index data using either Valkey Hash or Valkey-JSON data types.

Major API and Functionality

  • Add the search module data type which can handle RDB load, RDB save, free, and memory usage
  • Add the following search module commands:
    • FT.CREATE
    • FT.DROPINDEX
    • FT.INFO
    • FT._LIST
    • FT.SEARCH
  • Supported indexes
    • Vector: HNSW and Flat
    • Non-vector: Numeric and Tag
  • Index data types include Valkey Hash and Valkey JSON.
  • Cluster support including cross-shard search via coordinator mode
  • Linear scaling of keyspace and compute
  • ACL support
  • RDB serialization of metadata including the search index
  • Hybrid queries combining vector and non vector indexes
  • Handle key space events for data mutation
  • Expose statistics and reporting memory usage to the core valkey engine

New configurations

  • Add support for the following configurations: reader-threads, writer-threads, use-coordinator, log-level

1.0.0-rc1

29 Mar 03:05
5b46498

Choose a tag to compare

1.0.0-rc1 Pre-release
Pre-release

Valkey Search 1.0.0 RC1 - Released Fri 28 Mar 2025

This is the first release candidate of valkey-search 1.0 that is a high-performance Vector Similarity Search engine optimized for AI-driven workloads. It delivers single-digit millisecond latency and high QPS, capable of handling billions of vectors with over 99% recall.

Valkey-Search allows users to create indexes and perform similarity searches, incorporating complex filters. It supports Approximate Nearest Neighbor (ANN) search with HNSW and exact matching using K-Nearest Neighbors (KNN). Users can index data using either Valkey Hash or Valkey-JSON data types.

Major API and Functionality

  • Add the search module data type which can handle RDB load, RDB save, free, and memory usage
  • Add the following search module commands:
    ** FT.CREATE
    ** FT.DROPINDEX
    ** FT.INFO
    ** FT._LIST
    ** FT.SEARCH
  • Supported indexes
    ** Vector: HNSW and Flat
    ** Non-vector: Numeric and Tag
  • Index data types include Valkey Hash and Valkey JSON.
  • Cluster support
  • Linear scaling of keyspace and compute
  • ACL support
  • RDB serialization of metadata including the search index
  • Hybrid queries combining vector and non vector indexes
  • Handle key space events for data mutation
  • Expose statistics and reporting memory usage to the core valkey engine

New configurations

  • Add support for the following configurations: reader-threads, writer-threads, use-coordinator, log-level