From bf3a29b60d382b1a264a62f74f123ae487b4dcdb Mon Sep 17 00:00:00 2001 From: vuthanhtung2412 Date: Wed, 26 Mar 2025 12:57:25 +0100 Subject: [PATCH] Document problematic case in test and acknowledge PR comment --- crates/meilisearch/tests/vector/mod.rs | 8 ++++++++ crates/milli/src/update/new/indexer/write.rs | 4 +--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/crates/meilisearch/tests/vector/mod.rs b/crates/meilisearch/tests/vector/mod.rs index 5b718bf7d..32b77aa98 100644 --- a/crates/meilisearch/tests/vector/mod.rs +++ b/crates/meilisearch/tests/vector/mod.rs @@ -212,6 +212,14 @@ async fn user_provide_mismatched_embedding_dimension() { "finishedAt": "[date]" } "#); + + // FIXME: /!\ Case where number of embeddings is divisor of `dimensions` would still pass + let new_document = json!([ + {"id": 0, "name": "kefir", "_vectors": { "manual": [[0, 0], [1, 1], [2, 2]] }}, + ]); + let (value, code) = index.add_documents(new_document, None).await; + snapshot!(code, @"202 Accepted"); + index.wait_task(response.uid()).await.succeeded(); } async fn generate_default_user_provided_documents(server: &Server) -> Index { diff --git a/crates/milli/src/update/new/indexer/write.rs b/crates/milli/src/update/new/indexer/write.rs index be8788ab0..ca860bbff 100644 --- a/crates/milli/src/update/new/indexer/write.rs +++ b/crates/milli/src/update/new/indexer/write.rs @@ -218,14 +218,12 @@ pub fn write_from_bbqueue( arroy_writers.get(&embedder_id).expect("requested a missing embedder"); let mut embeddings = Embeddings::new(*dimensions); let all_embeddings = asvs.read_all_embeddings_into_vec(frame, aligned_embedding); - // FIXME: /!\ Case where number of embeddings is divisor of `dimensions` would still pass - if *dimensions!= 0 && all_embeddings.len() % *dimensions != 0 { + if embeddings.append(all_embeddings.to_vec()).is_err() { return Err(Error::UserError(UserError::InvalidVectorDimensions { expected: *dimensions, found: all_embeddings.len(), })); } - embeddings.append(all_embeddings.to_vec()).unwrap(); writer.del_items(wtxn, *dimensions, docid)?; writer.add_items(wtxn, docid, &embeddings)?; }