Skip to main content
Breaking change: 0.25.1 replaces the vector search engine’s epsilon recall knob with a proof-based bounds gate. The paradedb.vector_cluster_probe_epsilon GUC has been removed, and vector indexes built with 0.25.0 must be rebuilt with REINDEX after upgrading.

New Features πŸŽ‰

Faster Vector Search, One Less Knob

Vector search now uses a proof-based bounds gate with a work budget, which skips clusters that provably cannot contribute to the result. This cuts tail latency by up to 6x and produces much tighter recall/latency confidence intervals. Because the gate is proof-based, there is no longer a recall knob to misconfigure: paradedb.vector_cluster_max_probe, the work-budget ceiling, is now the only recall/latency setting.

Deterministic Vector Search Results

Tiebreaker columns can now follow the distance in ORDER BY, making vector search results deterministic when embeddings are equidistant from the query vector:

Vector Search in Hybrid Queries

The vector arm of reciprocal rank fusion queries is now pushed down into the ParadeDB index, accelerating hybrid search. The ParadeDB ORM integrations have been updated for the paradedb index naming, native vector search, and the vector index build options:

LEFT, RIGHT, and FULL Joins

JoinScan now supports LEFT, RIGHT, and FULL joins, extending the join shapes that execute inside the ParadeDB index.

Performance Improvements πŸš€

  • Vector index builds hand training vectors to the clusterer by value, halving training memory.
  • Vector index build parallelism is capped at 4 workers to prevent memory spikes on large builds.
  • A new paradedb.vector_clustering_threshold GUC (default 500) sets the segment size at which vector storage switches from flat to clustered.
  • MPP workers now launch plan-first, sized from the plan’s task fragments, and the default ring size was lowered to 8MB.
  • Range partitioning is now wired into join planning.

Stability Improvements πŸ’ͺ

  • AggregateScan join predicates are now normalized and validated.
  • Fixed a spurious datetime_fields error.
  • Dynamic filters now survive across MPP fragments.
  • The extension Docker image now ships pg_search’s non-base shared libraries.
  • Multi-valued fields are now disallowed in partition_by and sort_by.
The full changelog is available on the GitHub Release.