Change8

v1.37.15

Breaking Changes
📦 weaviateView on GitHub →
1 breaking3 features🐛 53 fixes1 deprecations🔧 14 symbols

Summary

This release includes performance improvements across various modules like HNSW and BM25, adds new features such as cross-property AND matching and new generative modules, and fixes numerous bugs related to replication, caching, and data handling.

⚠️ Breaking Changes

  • Removed support for restoring old backup formats. Users should ensure backups are in the current format before upgrading.

✨ New Features

  • Added support for cross-property AND matching in BM25 search.
  • Added TwelveLabs Marengo multimodal vectorizer to the multi2vec-twelvelabs module.
  • Added DigitalOcean generative module.

🐛 Bug Fixes

  • Route shard access through Index.withShardOrRemote.
  • Allocate per-tenant vector cache memory lazily and proportionally to tenant size.
  • Unify the loading-shard readiness check and fix FetchObjects.
  • Add retry to module base client.
  • Fix data race in TestPartialChunkRecovery.
  • Pin the nearObject anchor in the unlimited vector search tests.
  • Stop truncating UUIDs in id_as_bytes and batch-delete uuid.
  • Put actionable error text in msg on the boot and exit paths.
  • Reduce HNSW snapshot allocations.
  • Require every Bucket to carry a logger.
  • Fix disposable_created size label off-by-one.
  • Roll back shouldAbort when ctx expires while callback runs.
  • Roll back abort when ctx expires while callback runs.
  • Skip collection tick while previous report is still running.
  • Cancel and drain the cache prefill before teardown.
  • Fix 'quantizer not initialized' search error during RQ lazy initialization.
  • Don't hold the DB index lock across a verbose node-status scan.
  • Reduce allocations in tenant activity tracking.
  • Don't allocate a mutex on every key-locker call.
  • Parallelize BM25 block term creation across properties.
  • Slab-allocate visited sparse-set segments.
  • Respect per-query concurrency budget in compressed rescore.
  • Fix usage module with named vectors where one is a prefix of another.
  • Handle ECONNRESET errors in handlePanics function.
  • Handle context cancellation in cursor operations to prevent incorrect nil returns.
  • Remove tmp files in compaction/cleanup on failure.
  • Resolve replicas locally, never implicitly activate a tenant in async replication.
  • Return the gRPC query profile when a query matches no objects.
  • Adapt qa_pr.sh log fetch to gh >= 2.97 escape-sequence guard.
  • Clean up partial HNSW commit log on aborted flat->HNSW upgrade (v1.37).
  • Parallelize rescoring with budget-aware workers.
  • Read rescore vectors through one bucket view with pooled buffers.
  • Return explicit bm25 b/k1 values of 0 in schema responses.
  • Remove TestReadSnapshotBufferAllocation which was flaky.
  • Warm the version map in the background at startup.
  • Backport #12079 and #12127 to stable/v1.37.
  • Targeted replace scan with newest-wins visibility.
  • Read targeted-scan ranges straight from the file.
  • Fixes bugs segment group tmp file recovery.
  • Hold the posting lock during version map warmup.
  • Count occupied slots, and add PreloadIfAbsent.
  • Bound vector reads by their declared segment.
  • Don't let SIGPIPE break the gh escape-sequence feature check.
  • Wait for storage to settle instead of relaxing the assertions.
  • Don't panic when a batch has objects with no vectorizable properties.
  • Add MUVERA specific usage calculations.
  • Register disable_dimension_metrics as a runtime override.
  • Restore cache reads for uncompressed non-MUVERA late-interaction rescore.
  • Write WAL tombstone pair before publishing inverted doc tombstone.
  • Fix all linter issues coming form golangci-list v2.13.1.
  • Upgrade modules light and modules api runners to ubicloud-standard-4.
  • Merge remote shard aggregations after JSON round trip (mean/median/mode panic on multi-node).
  • Pin minimum openssl version so cached builds pull CVE fixes.

Affected Symbols

⚡ Deprecations

  • The non-hardlink backup fallback is deprecated and will be removed in v1.40.