diff --git a/src/identity.rs b/src/identity.rs index 46af73b..afce64d 100644 --- a/src/identity.rs +++ b/src/identity.rs @@ -53,7 +53,7 @@ pub fn extract_l1_facts(store: &Store, profile: &VaultProfile) -> Result Result Result String { } // Sort by position descending so we can replace from end to start - replacements.sort_by(|a, b| b.0.cmp(&a.0)); + replacements.sort_by_key(|b| std::cmp::Reverse(b.0)); let mut result = content.to_string(); for (start, end, replacement) in replacements { diff --git a/src/llm.rs b/src/llm.rs index fde78a7..4c417c3 100644 --- a/src/llm.rs +++ b/src/llm.rs @@ -1039,9 +1039,9 @@ impl LlamaOrchestrator { // Each token may produce multi-byte UTF-8 sequences; use an encoding_rs decoder // to correctly reassemble them across token boundaries. let mut decoder = encoding_rs::UTF_8.new_decoder(); - let mut n_cur = tokens.len(); + let prompt_len = tokens.len(); - for _ in 0..max_tokens { + for step in 0..max_tokens { let new_token = sampler.sample(&ctx, batch.n_tokens() - 1); sampler.accept(new_token); @@ -1060,9 +1060,8 @@ impl LlamaOrchestrator { // Add token to batch for next iteration. batch.clear(); batch - .add(new_token, n_cur as i32, &[0], true) + .add(new_token, (prompt_len + step) as i32, &[0], true) .map_err(|e| anyhow::anyhow!("adding generated token to batch: {e}"))?; - n_cur += 1; ctx.decode(&mut batch) .map_err(|e| anyhow::anyhow!("generation decode failed: {e}"))?; diff --git a/src/writer.rs b/src/writer.rs index 1698a65..c0258b9 100644 --- a/src/writer.rs +++ b/src/writer.rs @@ -637,10 +637,9 @@ pub fn create_note( None, )?; - let mut next_vid = store.next_vector_id()?; + let start_vid = store.next_vector_id()?; for (chunk_seq, (heading, snippet, vector, token_count)) in chunk_data.iter().enumerate() { - let vid = next_vid; - next_vid += 1; + let vid = start_vid + chunk_seq as u64; store.insert_chunk_with_vector(file_id, heading, snippet, vid, *token_count, vector)?; store.insert_vec(vid, vector)?; store.insert_fts_chunk(file_id, chunk_seq as i64, snippet)?; @@ -785,10 +784,9 @@ pub fn append_to_note( None, )?; - let mut next_vid = store.next_vector_id()?; + let start_vid = store.next_vector_id()?; for (chunk_seq, (heading, snippet, vector, token_count)) in chunk_data.iter().enumerate() { - let vid = next_vid; - next_vid += 1; + let vid = start_vid + chunk_seq as u64; store.insert_chunk_with_vector(file_id, heading, snippet, vid, *token_count, vector)?; store.insert_vec(vid, vector)?; store.insert_fts_chunk(file_id, chunk_seq as i64, snippet)?; @@ -1561,10 +1559,9 @@ pub fn unarchive_note( None, )?; - let mut next_vid = store.next_vector_id()?; + let start_vid = store.next_vector_id()?; for (seq, (heading, snippet, vector, token_count)) in chunk_data.iter().enumerate() { - let vid = next_vid; - next_vid += 1; + let vid = start_vid + seq as u64; store.insert_chunk_with_vector(file_id, heading, snippet, vid, *token_count, vector)?; store.insert_vec(vid, vector)?; store.insert_fts_chunk(file_id, seq as i64, snippet)?;