Normalize both signals to 0-1 range so semantic similarity scores
aren't drowned out by keyword position scores. Jellyfin DB recovery
now ranks #1 for "media server database broken sqlite error" instead
of being buried behind keyword noise matches on "error".
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- embed --if-changed compares memory ID sets to skip when unchanged
- --ollama-model config flag to switch models without code changes
- _ollama_embed now accepts model param, respects config throughout
- Switched default to qwen3-embedding:8b (70+ MTEB vs nomic's ~52)
- Hourly systemd timer for embedding, daily timer no longer embeds
- Fixed PATH for uv in both systemd services
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add first-class edge files in graph/edges/ with bidirectional frontmatter
refs, hybrid Ollama/OpenAI embedding providers with fallback chain, and
native MCP server (18 tools) for direct Claude Code integration.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Changed zero-access usage_factor from 0.5 to 1.0 in calculate_decay_score().
Previously, a freshly stored solution (importance=0.7, weight=1.2) scored
0.42 (Fading); now scores 0.84 (Active) as intended.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>