name: versioned-sample-uses description: When publishing a new elix-db version or making version changes, run versioned sample use cases, collect memory/time/latency, compare to the previous version report, and update reports. Remember this workflow for releases.
Versioned Sample Uses and Release Benchmark
Apply when publishing a new version, cutting a release, or making version-related changes to elix-db.
When to Use
- Before or after publishing a new elix-db version (e.g. v0.2.0, v0.3.0)
- When the user says "publish", "release", "version change", or "new version"
- When adding or changing versioned sample use cases
What to Remember
Sample uses are organized by version: sample_uses/v0.1.0/, sample_uses/v0.2.0/, etc. Inside each version folder are the same use cases: 01_simple_search, 02_semantic_faq, 03_similar_items, 04_persistence. Each use case pins elix_db to that version in its mix.exs.
On a new version release:
- Ensure
sample_useshas a version folder for the new version (e.g.v0.2.0) with the same four use cases andelix_dbpinned to that version. - Run the benchmark runner for the new version (e.g. from repo root: run the script that executes each use case in
sample_uses/<version>/, collects metrics). - Compare to the previous version: load the previous version’s report from
sample_uses/reports/, generate a comparison report (how the new version is better or worse on memory, time, latency, throughput). - Update or add report files under
sample_uses/reports/(e.g.<version>.json,<version>_vs_<prev>.md). - Optionally update CHANGELOG or README with a one-line pointer to the comparison report.
Metrics that matter for the vector DB: memory (e.g. :erlang.memory()), wall time per use case, latency (mean/p50/p99 for search and upsert), throughput (inserts/s, searches/s). The comparison report should answer: how is this version compared to the previous one?
Workflow Summary
- Add or update version folder under
sample_uses/<vX.Y.Z>/with use cases pointing to that elix_db version. - Run benchmark for the new version; write
sample_uses/reports/<version>.json(and optional.md). - Load previous version report; produce comparison report (e.g.
reports/<version>_vs_<prev>.md). - Remember: this workflow should be run whenever we publish or make version changes so we track memory, time, latency, and other important factors across versions.
Related
- debug-verify-benchmark – for day-to-day changes to vector/store/API (tests, IEx, industry comparison).
- versioned-sample-uses – for release/version workflow (sample use cases, version comparison, reports).