Change8

v1.16.0

📦 qdrant
12 features🐛 10 fixes🔧 18 symbols

Summary

This release introduces significant performance improvements through AVX512 optimizations and HNSW inline storage, alongside major features like tiered multitenancy support and ACORN search algorithm. Numerous bug fixes address stability issues related to cancellation, snapshots, and cluster operations.

✨ New Features

  • Add option to inline vectors in HNSW graph for efficient IO usage.
  • Implement Tenant promotion mechanism for tiered multitenancy, including adding `ReplicatePoints` action to promote payload based tenant into dedicated shard.
  • Add fallback shard key for intelligent routing to tenants that are or are not promoted to a dedicated shard.
  • Allow specifying initial state of new replicas on shard key creation.
  • Add ACORN-1 search method for accurate search over many filtered points at the cost of performance.
  • Add ASCII folding (normalization) to full text indices, folding diacritics into ASCII characters.
  • Add conditional update functionality: only apply update on points matching a filter.
  • Add `text_any` full text filter to match any query term.
  • Add option to customize RRF `k` parameter.
  • In strict mode, specify maximum number of payload indices per collection.
  • Add custom key-value metadata to collections.
  • Add profiler to log slow point update and read requests.

🐛 Bug Fixes

  • Fix logger API allowing arbitrary file writes; now configurable only through configuration.
  • Abort pending search tasks when search is cancelled, fixing optimizer instability under huge load.
  • Abort other blocking tasks such as retrieve and snapshot prematurely if the caller gets cancelled.
  • Cancel ongoing searches more aggressively if the search is cancelled.
  • Fix resharding down panic if no shard key is provided on collection with custom sharding.
  • Fix panic on certain queries with unknown vector name.
  • Forbid peer to join cluster with URI that is already used, which could break a cluster.
  • Fix corrupt segments on load if segment was partially flushed, preventing payload index corruption.
  • Force flush all segments when taking snapshot to prevent data corruption.
  • Fix flush ordering on segments currently being snapshotted, fixing data consistency on crash.

🔧 Affected Symbols

ReplicatePointscollection_pointscollection_vectorscollection_indexed_only_excluded_pointscollection_active_replicas_mincollection_active_replicas_maxcollection_dead_replicascollection_running_optimizationssnapshot_creation_runningsnapshot_recovery_runningsnapshot_created_totalprocess_threadsprocess_open_fdsprocess_max_fdsprocess_open_mmapssystem_max_mmapsprocess_minor_page_faults_totalprocess_major_page_faults_total