Throw error when the vector search is sent with the wrong size

This commit is contained in:
Louis Dureuil 2023-11-09 17:45:04 +01:00
parent 54f0ee1ed2
commit 8c649d8061
No known key found for this signature in database

View File

@ -434,7 +434,18 @@ pub fn execute_search(
let mut search = Search::default(); let mut search = Search::default();
let docids = match ctx.index.vector_hnsw(ctx.txn)? { let docids = match ctx.index.vector_hnsw(ctx.txn)? {
Some(hnsw) => { Some(hnsw) => {
if let Some(expected_size) = hnsw.iter().map(|(_, point)| point.len()).next() {
if vector.len() != expected_size {
return Err(UserError::InvalidVectorDimensions {
expected: expected_size,
found: vector.len(),
}
.into());
}
}
let vector = NDotProductPoint::new(vector.clone()); let vector = NDotProductPoint::new(vector.clone());
let neighbors = hnsw.search(&vector, &mut search); let neighbors = hnsw.search(&vector, &mut search);
let mut docids = Vec::new(); let mut docids = Vec::new();