From 549dc985b8ae6e09306172aa350d5ec11c55cae5 Mon Sep 17 00:00:00 2001 From: Louis Dureuil Date: Thu, 3 Jul 2025 09:58:41 +0200 Subject: [PATCH] Old dump import indexer: fix the case where going from Generated to Generated --- .../extract/extract_vector_points.rs | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/crates/milli/src/update/index_documents/extract/extract_vector_points.rs b/crates/milli/src/update/index_documents/extract/extract_vector_points.rs index d40e82b92..54fcca75f 100644 --- a/crates/milli/src/update/index_documents/extract/extract_vector_points.rs +++ b/crates/milli/src/update/index_documents/extract/extract_vector_points.rs @@ -726,6 +726,35 @@ fn extract_vector_document_diff( } let has_fragments = !runtime.fragments().is_empty(); if has_fragments { + let mut fragment_diff = Vec::new(); + let old_fields_ids_map = old_fields_ids_map.as_fields_ids_map(); + let new_fields_ids_map = new_fields_ids_map.as_fields_ids_map(); + + let old_document = crate::update::new::document::KvDelAddDocument::new( + obkv, + DelAdd::Deletion, + old_fields_ids_map, + ); + + let new_document = crate::update::new::document::KvDelAddDocument::new( + obkv, + DelAdd::Addition, + new_fields_ids_map, + ); + + for new in runtime.fragments() { + let name = &new.name; + let fragment = + RequestFragmentExtractor::new(new, doc_alloc).ignore_errors(); + + let diff = fragment + .diff_documents(&old_document, &new_document, &()) + .expect("ignoring errors so this cannot fail"); + + fragment_diff.push((name.clone(), diff)); + } + VectorStateDelta::UpdateGeneratedFromFragments(fragment_diff) + } else { let prompt = &runtime.document_template; // Don't give up if the old prompt was failing let old_prompt = Some(&prompt).map(|p| { @@ -741,38 +770,9 @@ fn extract_vector_document_diff( ); VectorStateDelta::NowGenerated(new_prompt) } else { - let mut fragment_diff = Vec::new(); - let old_fields_ids_map = old_fields_ids_map.as_fields_ids_map(); - let new_fields_ids_map = new_fields_ids_map.as_fields_ids_map(); - - let old_document = crate::update::new::document::KvDelAddDocument::new( - obkv, - DelAdd::Deletion, - old_fields_ids_map, - ); - - let new_document = crate::update::new::document::KvDelAddDocument::new( - obkv, - DelAdd::Addition, - new_fields_ids_map, - ); - - for new in runtime.fragments() { - let name = &new.name; - let fragment = - RequestFragmentExtractor::new(new, doc_alloc).ignore_errors(); - - let diff = fragment - .diff_documents(&old_document, &new_document, &()) - .expect("ignoring errors so this cannot fail"); - - fragment_diff.push((name.clone(), diff)); - } - VectorStateDelta::UpdateGeneratedFromFragments(fragment_diff) + tracing::trace!("⏭️ Prompt unmodified, skipping"); + VectorStateDelta::NoChange } - } else { - tracing::trace!("⏭️ Prompt unmodified, skipping"); - VectorStateDelta::NoChange } } else { VectorStateDelta::NowRemoved