Support no pattern when exporting

This commit is contained in:
Clément Renault 2025-06-16 15:50:32 +02:00 committed by Kerollmops
parent bc08cd0deb
commit 3329248a84
No known key found for this signature in database
GPG key ID: F250A4C4E3AE5F5F
3 changed files with 54 additions and 59 deletions

View file

@ -54,7 +54,7 @@ impl IndexScheduler {
indexes.len() as u32,
));
let ExportIndexSettings { skip_embeddings, filter } = settings;
let ExportIndexSettings { filter } = settings;
let index = self.index(uid)?;
let index_rtxn = index.read_txn()?;
@ -131,7 +131,6 @@ impl IndexScheduler {
.map_err(|e| Error::from_milli(e, Some(uid.to_string())))?;
// TODO definitely factorize this code
if !*skip_embeddings {
'inject_vectors: {
let embeddings = index
.embeddings(&index_rtxn, docid)
@ -178,9 +177,7 @@ impl IndexScheduler {
)),
regenerate: !user_provided,
};
vectors
.insert(embedder_name, serde_json::to_value(embeddings).unwrap());
}
vectors.insert(embedder_name, serde_json::to_value(embeddings).unwrap());
}
}

View file

@ -171,10 +171,9 @@ pub struct IndexSwap {
pub indexes: (String, String),
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
#[serde(rename_all = "camelCase")]
pub struct ExportIndexSettings {
pub skip_embeddings: bool,
pub filter: Option<String>,
}

View file

@ -72,16 +72,19 @@ async fn export(
debug!(returns = ?export, "Trigger export");
let Export { url, api_key, indexes } = export;
let task = KindWithContent::Export {
url,
api_key,
indexes: indexes
let indexes = if indexes.is_empty() {
BTreeMap::from([(IndexUidPattern::new_unchecked("*"), DbExportIndexSettings::default())])
} else {
indexes
.into_iter()
.map(|(pattern, ExportIndexSettings { skip_embeddings, filter })| {
(pattern, DbExportIndexSettings { skip_embeddings, filter })
.map(|(pattern, ExportIndexSettings { filter })| {
(pattern, DbExportIndexSettings { filter })
})
.collect(),
.collect()
};
let task = KindWithContent::Export { url, api_key, indexes };
let uid = get_task_id(&req, &opt)?;
let dry_run = is_dry_run(&req, &opt)?;
let task: SummarizedTaskView =
@ -116,10 +119,6 @@ pub struct Export {
#[serde(rename_all = "camelCase")]
#[schema(rename_all = "camelCase")]
pub struct ExportIndexSettings {
#[schema(value_type = Option<bool>, example = json!("true"))]
#[serde(default)]
#[deserr(default, error = DeserrJsonError<InvalidExportIndexSkipEmbeddings>)]
pub skip_embeddings: bool,
#[schema(value_type = Option<String>, example = json!("genres = action"))]
#[serde(default)]
#[deserr(default, error = DeserrJsonError<InvalidExportIndexFilter>)]