/// The tool-calling research loop needs to reliably decide what to search /// for, when a page is worth fetching, and when it has enough evidence — /// that's a reasoning-heavy job best given to the largest local Gemma /// variant. Turning gathered notes into prose (writing, summarizing) is /// comparatively mechanical, so the smaller/faster variant handles those /// passes instead. pub(crate) const RESEARCHER_MODEL: &str = "gemma4:26b"; pub(crate) const WRITER_MODEL: &str = "gemma4-e4b:latest"; /// Deliberately a dedicated embedding model rather than reusing a chat model /// for embeddings — it's trained for semantic similarity, not chat, and /// Ollama's `nomic-embed-text` is a well-known identifier Rig already knows /// the output dimensionality for. pub(crate) const EMBEDDING_MODEL: &str = "nomic-embed-text";