From 275677b54b00a93d5af60cb7d9e46fa8204710c1 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Mon, 7 Oct 2024 16:50:51 -0700 Subject: [PATCH] Fixed normalize for nil values --- lib/neighbor/utils.rb | 2 ++ test/cube_test.rb | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/lib/neighbor/utils.rb b/lib/neighbor/utils.rb index fe0b6ec..80c08ca 100644 --- a/lib/neighbor/utils.rb +++ b/lib/neighbor/utils.rb @@ -31,6 +31,8 @@ def self.validate(value, dimensions:, type:, adapter:) end def self.normalize(value, column_info:) + return nil if value.nil? + raise Error, "Normalize not supported for type" unless [:cube, :vector, :halfvec, :binary].include?(column_info&.type) norm = Math.sqrt(value.sum { |v| v * v }) diff --git a/test/cube_test.rb b/test/cube_test.rb index 7a2434f..847b1c1 100644 --- a/test/cube_test.rb +++ b/test/cube_test.rb @@ -102,9 +102,15 @@ def test_normalize item = CosineItem.new item.cube_embedding = [0, 3, 4] assert_elements_in_delta [0, 0.6, 0.8], item.cube_embedding + item.save! assert_elements_in_delta [0, 0.6, 0.8], item.cube_embedding assert_elements_in_delta [0, 0.6, 0.8], Item.last.cube_embedding + + item.cube_embedding = nil + item.save! + assert_nil item.cube_embedding + assert_nil Item.last.cube_embedding end def test_insert