Skip to content

Axon v0.2.1

Choose a tag to compare

@github-actions github-actions released this 23 Apr 05:51
· 70 commits to main since this release

What's Changed

πŸ› Bug Fixes

  • Dead dirty flag β€” _incoming_rel_dirty was set but never read, so the O(NΓ—M) edge-count scan ran unconditionally on every call. It now short-circuits immediately when the index is clean.
  • Missing config field β€” query_cache_ttl was consumed via getattr(..., 1800) silent fallback but never declared in AxonConfig. It is now a proper field (default 1800 s) settable in config.yaml.
  • Persist executor data race β€” _persist_executor fell through to the shared 8-worker self._executor when AxonBrain was active, allowing concurrent entity + relation graph saves to race on _gr_persist_hashes. It now always uses a private single-worker pool, serialising all persistence jobs.
  • Shallow-copy persist race β€” entity and relation graph snapshots were shallow-copied (dict(...)) before being handed to the background write thread. Nested dict/list mutations on the main thread could corrupt the on-disk graph. Both now use copy.deepcopy under _graph_lock.

⚑ Performance

  • O(1) entity matching via an inverted token index β€” replaces the O(n) full-graph Jaccard scan per query (10–100Γ— speedup at 50 k+ entities).
  • BFS traversal cache β€” LRU cache (512 entries, 15-min TTL) keyed on (entities, max_hops, hop_decay); invalidated on graph mutation and project switch.
  • Async graph persistence β€” entity/relation saves offloaded to a single-worker background thread pool; _flush_pending_saves() for safe shutdown.
  • batch_search() on the vector store β€” replaces N separate search() round-trips for multi-query / HyDE variants with one batched call.
  • Pre-rerank filtering β€” candidate pool sliced to top_k Γ— 3 before cross-encoder scoring; up to 66% fewer rerank calls.
  • Query cache TTL β€” cache entries now store (timestamp, response); stale entries expire after query_cache_ttl seconds (default 30 min).

πŸ“ Docs & Cleanup

  • README.md is now the single source of truth for both GitHub and PyPI descriptions (PYPI_README.md removed).
  • AxonCopilot.gif optimised from 20.5 MB β†’ 3.25 MB (below PyPI/Fastly 5 MB proxy limit).
  • Live CI + PyPI version badges added to README; Quick Start now shows pip install axon-rag.
  • bump_version.py now auto-rebuilds VSIX + refreshes Cargo.lock in one shot.
  • audit_packaging.py checks 6 version-bearing artefacts (added bundled VSIX filename check).
  • Removed 29 obsolete one-off bench/debug scripts from scripts/.
  • pyproject.toml URLs updated (studio_brain_open β†’ Axon); bundled VSIX updated to axon-copilot-0.2.1.vsix.

Contributors

Full Changelog: v0.2.0...v0.2.1