Skip to content

v2.4.0

Choose a tag to compare

@CoderDayton CoderDayton released this 22 Mar 17:59

What's New

Added

  • Public catalog API on VectorCollection + AsyncVectorCollection: get_documents(), get_embeddings_by_ids(), update_metadata(), count(), save(), dim
  • Executor injection on AsyncVectorDB — share a single-threaded executor for ONNX/usearch thread safety
  • Full async hierarchy APIrebuild_index, get_children/parent/descendants/ancestors, set_parent

Fixed

  • VectorDB.close() was leaking file descriptors (missing conn.close())
  • close() now guarantees conn.close() even if save() fails
  • add_documents ID recovery raced under concurrent inserts — now uses last_insert_rowid() arithmetic
  • String metadata filter used LIKE substring match — now uses exact = equality
  • update_metadata_batch partial commits on crash — now wrapped in single transaction
  • rebuild_index(connectivity=0) silently used default — now uses is not None check
  • search_collections parallel futures now timeout after 30s instead of hanging forever
  • AsyncVectorDB.close() no longer blocks indefinitely on stuck tasks
  • Recursive get_descendants/get_ancestors capped at depth 100 to prevent infinite loops
  • RateLimiter cleanup capped to 500 evictions per call to bound lock time
  • HuggingFace download now has etag_timeout=30 with local-cache fallback
  • embed_texts rejects batches over 10,000 to prevent unbounded CPU time
  • retry_on_lock enforces total_timeout=10s budget

Changed

  • __version__ now sourced from importlib.metadata (single source of truth in pyproject.toml)

Full Changelog: https://github.com/CoderDayton/SimpleVecDB/blob/main/CHANGELOG.md