Support progress

This commit is contained in:
Louis Dureuil
2025-09-01 17:48:50 +02:00
parent bc5100dddd
commit 454581dbc9
2 changed files with 29 additions and 5 deletions

View File

@ -21,6 +21,14 @@ make_enum_progress! {
} }
} }
make_enum_progress! {
pub enum SettingsIndexerStep {
ChangingVectorStore,
UsingStableIndexer,
UsingExperimentalIndexer,
}
}
make_enum_progress! { make_enum_progress! {
pub enum PostProcessingFacets { pub enum PostProcessingFacets {
StringsBulk, StringsBulk,

View File

@ -26,11 +26,12 @@ use crate::index::{
DEFAULT_MIN_WORD_LEN_TWO_TYPOS, DEFAULT_MIN_WORD_LEN_TWO_TYPOS,
}; };
use crate::order_by_map::OrderByMap; use crate::order_by_map::OrderByMap;
use crate::progress::{EmbedderStats, Progress}; use crate::progress::{EmbedderStats, Progress, VariableNameStep};
use crate::prompt::{default_max_bytes, default_template_text, PromptData}; use crate::prompt::{default_max_bytes, default_template_text, PromptData};
use crate::proximity::ProximityPrecision; use crate::proximity::ProximityPrecision;
use crate::update::index_documents::IndexDocumentsMethod; use crate::update::index_documents::IndexDocumentsMethod;
use crate::update::new::indexer::reindex; use crate::update::new::indexer::reindex;
use crate::update::new::steps::SettingsIndexerStep;
use crate::update::{IndexDocuments, UpdateIndexingStep}; use crate::update::{IndexDocuments, UpdateIndexingStep};
use crate::vector::db::{FragmentConfigs, IndexEmbeddingConfig}; use crate::vector::db::{FragmentConfigs, IndexEmbeddingConfig};
use crate::vector::embedder::{openai, rest}; use crate::vector::embedder::{openai, rest};
@ -1522,14 +1523,23 @@ impl<'a, 't, 'i> Settings<'a, 't, 'i> {
return Ok(()); return Ok(());
} }
let embedding_configs = self.index.embedding_configs(); let embedders = self.index.embedding_configs();
for config in embedding_configs.embedding_configs(self.wtxn)? { let embedding_configs = embedders.embedding_configs(self.wtxn)?;
enum VectorStoreBackendChangeIndex {}
let embedder_count = embedding_configs.len();
for (i, config) in embedding_configs.into_iter().enumerate() {
if must_stop_processing() { if must_stop_processing() {
return Err(crate::InternalError::AbortedIndexation.into()); return Err(crate::InternalError::AbortedIndexation.into());
} }
/// TODO use the embedder name to display progress let embedder_name = &config.name;
progress.update_progress(VariableNameStep::<VectorStoreBackendChangeIndex>::new(
format!("Changing vector store backend for embedder `{embedder_name}`"),
i as u32,
embedder_count as u32,
));
let quantized = config.config.quantized(); let quantized = config.config.quantized();
let embedder_id = embedding_configs.embedder_id(self.wtxn, &config.name)?.unwrap(); let embedder_id = embedders.embedder_id(self.wtxn, &config.name)?.unwrap();
let mut vector_store = crate::vector::VectorStore::new( let mut vector_store = crate::vector::VectorStore::new(
old_backend, old_backend,
self.index.vector_store, self.index.vector_store,
@ -1551,11 +1561,13 @@ impl<'a, 't, 'i> Settings<'a, 't, 'i> {
where where
MSP: Fn() -> bool + Sync, MSP: Fn() -> bool + Sync,
{ {
progress.update_progress(SettingsIndexerStep::ChangingVectorStore);
// execute any pending vector store backend change // execute any pending vector store backend change
self.execute_vector_backend(must_stop_processing, progress)?; self.execute_vector_backend(must_stop_processing, progress)?;
// force the old indexer if the environment says so // force the old indexer if the environment says so
if self.indexer_config.experimental_no_edition_2024_for_settings { if self.indexer_config.experimental_no_edition_2024_for_settings {
progress.update_progress(SettingsIndexerStep::UsingStableIndexer);
return self return self
.legacy_execute( .legacy_execute(
|indexing_step| tracing::debug!(update = ?indexing_step), |indexing_step| tracing::debug!(update = ?indexing_step),
@ -1601,6 +1613,8 @@ impl<'a, 't, 'i> Settings<'a, 't, 'i> {
indexer_config: _, indexer_config: _,
} = &self } = &self
{ {
progress.update_progress(SettingsIndexerStep::UsingExperimentalIndexer);
self.index.set_updated_at(self.wtxn, &OffsetDateTime::now_utc())?; self.index.set_updated_at(self.wtxn, &OffsetDateTime::now_utc())?;
let old_inner_settings = InnerIndexSettings::from_index(self.index, self.wtxn, None)?; let old_inner_settings = InnerIndexSettings::from_index(self.index, self.wtxn, None)?;
@ -1639,6 +1653,8 @@ impl<'a, 't, 'i> Settings<'a, 't, 'i> {
Ok(None) Ok(None)
} }
} else { } else {
progress.update_progress(SettingsIndexerStep::UsingStableIndexer);
self.legacy_execute( self.legacy_execute(
|indexing_step| tracing::debug!(update = ?indexing_step), |indexing_step| tracing::debug!(update = ?indexing_step),
must_stop_processing, must_stop_processing,