From e494f6b95d5f173d6f802f99ba8e49cde02cab80 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 20 Jan 2026 22:33:40 +0400 Subject: [PATCH] fix: handle NaN and Infinity in embedding normalization --- src/core/embeddings.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/core/embeddings.rs b/src/core/embeddings.rs index be77c5b..dfbdc9f 100644 --- a/src/core/embeddings.rs +++ b/src/core/embeddings.rs @@ -131,10 +131,15 @@ impl EmbeddingEngine { } } -fn normalize(input: &[f32]) -> Vec { +pub(crate) fn normalize(input: &[f32]) -> Vec { + // Check for NaN or Infinity in input + if input.iter().any(|x| x.is_nan() || x.is_infinite()) { + return vec![0.0; input.len()]; + } + let magnitude: f32 = input.iter().map(|x| x * x).sum::().sqrt(); - if magnitude == 0.0 { - return input.to_vec(); + if magnitude == 0.0 || magnitude.is_nan() || magnitude.is_infinite() { + return vec![0.0; input.len()]; } input.iter().map(|x| x / magnitude).collect() }