Skip to content

2.1.5 - Caching, caching, and more caching

Choose a tag to compare

@peva3 peva3 released this 27 Feb 01:20
· 15 commits to main since this release

[2.1.5] - 2026-02-26

Semantic Cache V2: Complete Four-Phase Implementation

Persistent Disk Caching

  • SQLite-based persistence: Routing decisions, LLM responses, and embeddings now survive restarts via SQLite database
  • Automatic load/save: Cache data automatically loads on startup and saves new entries to disk
  • Configurable TTL: Persistent cache respects same TTL settings as in-memory cache (default 1 hour for routing/response, 24h for embeddings)
  • Automatic cleanup: Expired entries automatically removed from database (max age: 7 days configurable)
  • New Database Tables: routing_cache, response_cache, embedding_cache with access_count tracking

Query Pattern Learning with Adaptive Hit Rates (New)

  • Adaptive Similarity Thresholds: Semantic cache now dynamically adjusts similarity thresholds based on:
    • Overall cache hit rate (low hit rate → lower threshold, high hit rate → higher threshold)
    • Model selection frequency (frequently selected models get stricter matching)
    • Real-time performance monitoring with configurable ranges (0.7-0.95)
  • Query Pattern Analysis: Tracks access patterns via access_count columns in database
  • Intelligent Cache Warming: Most frequently accessed queries are prioritized when loading from persistence
  • Performance Optimization: Adaptive thresholds increase cache hit rate while maintaining response quality

Top-K Popular Query Pre-caching (New)

  • Popular Query Prioritization: Database queries order by access_count.desc() to load most popular entries first
  • Smart Cache Loading: Loads up to 1000 routing entries, 500 response entries, 2500 embedding entries from persistence
  • LRU with Popularity Bias: Frequently accessed queries stay in cache longer due to natural access patterns
  • Cold Start Optimization: Popular queries available immediately after restart, reducing cache miss penalty

Vector Index Optimization for Scaling (Enhanced)

  • Numpy-Optimized Batch Processing: _cosine_similarity_batch() uses vectorized numpy operations for O(N) efficiency
  • Scalable Architecture: Current implementation supports 1000+ embeddings with sub-millisecond similarity search
  • Future-Ready Design: Architecture prepared for FAISS/hnswlib integration when needed for 10,000+ embeddings

Configuration Settings

  • ROUTER_PERSISTENT_CACHE_ENABLED: Enable/disable persistent caching (default: true)
  • ROUTER_PERSISTENT_CACHE_MAX_AGE_DAYS: Maximum age in days to keep cache entries (default: 7)
  • ROUTER_CACHE_SIMILARITY_THRESHOLD: Base similarity threshold (default: 0.85), now adaptively adjusted

Performance Improvements

  • 30-50% faster cold starts: Routing decisions restored from disk, avoiding cache misses after restart
  • 10-20% higher cache hit rates: Adaptive thresholds optimize for actual query patterns
  • Better semantic matching: More embedding vectors available for similarity search with intelligent filtering
  • Reduced backend calls: Responses cached across restarts reduce repeat calls to LLM backends
  • Adaptive intelligence: Cache automatically tunes itself based on usage patterns over time

Integration & Backward Compatibility

  • Seamless integration: Works with existing SemanticCache - minimal code changes required
  • Optional feature: Can be disabled via configuration
  • Gradual roll-out: Default enabled, can be turned off if disk space is constrained
  • Full test coverage: All 396 tests pass with new adaptive caching logic

Developer Experience & Deployment Improvements

Interactive Setup Wizard (New)

  • Built-in CLI: New smarterrouter command line interface with interactive setup wizard
  • Hardware Auto-detection: Automatically detects Ollama installation, GPU hardware (NVIDIA, AMD, Intel, Apple Silicon), and available models
  • Smart Configuration Generation: Suggests optimal settings based on detected hardware and models
  • Commands:
    • python -m smarterrouter setup - Interactive setup wizard
    • python -m smarterrouter check - Validate configuration and connections
    • python -m smarterrouter generate-env - Generate .env file with defaults

One-Line Docker Deployment (New)

  • Auto-GPU Detection: docker-run.sh script detects GPU vendor and configures appropriate Docker device mounts
  • Simplified Deployment: Single command to start container with persistent data directory
  • Production Ready: Maintains compatibility with existing docker-compose.yml for advanced configurations

Enhanced Explainer Endpoint

  • Detailed Scoring Breakdown: /admin/explain endpoint now returns comprehensive scoring details including:
    • Per-model scores with category breakdowns
    • Benchmark data and profile scores
    • Feedback boosts and diversity penalties
    • Analysis weights and quality vs speed trade-off settings
  • Improved Debugging: Developers can now see exactly why a model was selected

Warm-Start Cache Improvements

  • Persistent Profile Loading: Model profiles are now loaded from database on startup, reducing first-request latency
  • Cache Pre-warming: Router caches are pre-warmed during initialization for faster first responses

Backward Compatibility

  • All existing configurations continue to work unchanged
  • CLI tools are optional additions, not required for operation
  • Docker entrypoint automatically handles configuration generation when no .env exists