From 1c746708430779e887e002fb5ad47540c8dd5096 Mon Sep 17 00:00:00 2001 From: saagpatel Date: Sat, 11 Jul 2026 13:26:49 -0700 Subject: [PATCH] feat(status): report indexed embedding metadata --- src/indexer.rs | 32 +++++++++++++++++++++++++++++++- src/search.rs | 10 ++++++++-- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/indexer.rs b/src/indexer.rs index fe757db..2fe99c5 100644 --- a/src/indexer.rs +++ b/src/indexer.rs @@ -12,7 +12,7 @@ use crate::chunker::{chunk_markdown, split_oversized_chunks}; use crate::config::Config; use crate::docid::generate_docid; use crate::graph::extract_wikilink_targets; -use crate::llm::EmbedModel; +use crate::llm::{EmbedModel, ModelDefaults}; use crate::profile::VaultProfile; use crate::store::{FileRecord, Store}; @@ -545,6 +545,15 @@ fn run_index_inner( ) -> Result { let start = Instant::now(); + let defaults = ModelDefaults::default(); + let embedding_uri = config + .models + .embed + .as_deref() + .unwrap_or(&defaults.embed_uri); + store.set_meta("embedding_model_uri", embedding_uri)?; + store.set_meta("embedding_dim", &embedder.dim().to_string())?; + let cleaned = crate::writer::cleanup_temp_files(vault_path)?; if cleaned > 0 { info!(cleaned, "cleaned up incomplete writes from previous run"); @@ -1159,4 +1168,25 @@ mod tests { assert_eq!(mentions.len(), 1); assert_eq!(mentions[0].0, person); } + + #[test] + fn test_index_records_embedding_metadata() { + let vault = TempDir::new().unwrap(); + write_file(vault.path(), "note.md", "# Metadata fixture\n"); + + let store = Store::open_memory().unwrap(); + let mut embedder = crate::llm::MockLlm::new(256); + let config = Config::default(); + + run_index_shared(vault.path(), &config, &store, &mut embedder, false, None).unwrap(); + + assert_eq!( + store.get_meta("embedding_model_uri").unwrap(), + Some(ModelDefaults::default().embed_uri) + ); + assert_eq!( + store.get_meta("embedding_dim").unwrap().as_deref(), + Some("256") + ); + } } diff --git a/src/search.rs b/src/search.rs index 4a78481..7abbb27 100644 --- a/src/search.rs +++ b/src/search.rs @@ -497,7 +497,13 @@ pub fn run_status(json: bool, data_dir: &Path) -> Result<()> { // Compute index size on disk (sqlite db file). let index_size = std::fs::metadata(&db_path).map(|m| m.len()).unwrap_or(0); - let model_name = "all-MiniLM-L6-v2"; + let model_uri = store + .get_meta("embedding_model_uri")? + .unwrap_or_else(|| "".to_string()); + let model_dim = store + .get_meta("embedding_dim")? + .unwrap_or_else(|| "unknown".to_string()); + let model_name = format!("{model_uri} (dim {model_dim})"); let config = crate::config::Config::load().unwrap_or_default(); let intelligence = if config.intelligence_enabled() { @@ -509,7 +515,7 @@ pub fn run_status(json: bool, data_dir: &Path) -> Result<()> { let output = format_status( &stats, index_size, - model_name, + &model_name, intelligence, date_count, json,