Skip to content

Commit 26bd01c

Browse files
github-actions[bot]ethanglasermeiravgri
authored
[8.2] [MOD-10833] [MOD-10236] SVS Library Update: Fix Zero Vector Handling and Alpine C++20 Compatibility (#774)
[MOD-10833] [MOD-10236] SVS Library Update: Fix Zero Vector Handling and Alpine C++20 Compatibility (#752) * SVS updates for SVS_LAZY and inf/nan * add a test for zero vector * fix valgrind issue * use v0.0.10 SVS libs * move test --------- (cherry picked from commit 4e58260) Co-authored-by: ethanglaser <42726565+ethanglaser@users.noreply.github.com> Co-authored-by: meiravgri <meirav.grimberg@redis.com>
1 parent db0aa29 commit 26bd01c

File tree

3 files changed

+29
-4
lines changed

3 files changed

+29
-4
lines changed

cmake/svs.cmake

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,16 +56,16 @@ if(USE_SVS)
5656
cmake_dependent_option(SVS_SHARED_LIB "Use SVS pre-compiled shared library" ON "USE_SVS AND GLIBC_FOUND AND SVS_LVQ_SUPPORTED" OFF)
5757
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
5858
if (GLIBC_2_28_FOUND)
59-
set(SVS_URL "https://github.com/intel/ScalableVectorSearch/releases/download/v0.0.9/svs-shared-library-0.0.9-reduced-clang.tar.gz" CACHE STRING "SVS URL")
59+
set(SVS_URL "https://github.com/intel/ScalableVectorSearch/releases/download/v0.0.10/svs-shared-library-0.0.10-reduced-clang.tar.gz" CACHE STRING "SVS URL")
6060
else()
6161
message(STATUS "GLIBC>=2.28 is required for Clang build - disabling SVS_SHARED_LIB")
6262
set(SVS_SHARED_LIB OFF)
6363
endif()
6464
else()
6565
if (GLIBC_2_28_FOUND)
66-
set(SVS_URL "https://github.com/intel/ScalableVectorSearch/releases/download/v0.0.9/svs-shared-library-0.0.9-reduced.tar.gz" CACHE STRING "SVS URL")
66+
set(SVS_URL "https://github.com/intel/ScalableVectorSearch/releases/download/v0.0.10/svs-shared-library-0.0.10-reduced.tar.gz" CACHE STRING "SVS URL")
6767
elseif(GLIBC_2_26_FOUND)
68-
set(SVS_URL "https://github.com/intel/ScalableVectorSearch/releases/download/v0.0.9/svs-shared-library-0.0.9-reduced-glibc2_26.tar.gz" CACHE STRING "SVS URL")
68+
set(SVS_URL "https://github.com/intel/ScalableVectorSearch/releases/download/v0.0.10/svs-shared-library-0.0.10-reduced-glibc2_26.tar.gz" CACHE STRING "SVS URL")
6969
else()
7070
message(STATUS "GLIBC>=2.26 is required for SVS shared library - disabling SVS_SHARED_LIB")
7171
set(SVS_SHARED_LIB OFF)

deps/ScalableVectorSearch

Submodule ScalableVectorSearch updated 86 files

tests/unit/test_svs.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1771,6 +1771,31 @@ TYPED_TEST(SVSTest, batchIteratorSwapIndices) {
17711771
VecSimIndex_Free(index);
17721772
}
17731773

1774+
// This test verifies a bug fix where zero vectors would cause division by zero during
1775+
// normalization (vector/norm where norm=0), resulting in NaN/Inf values that crashed the SVS
1776+
// library. The fix was introduced in PR #752, bumping up SVS library to version that includes the
1777+
// fix.
1778+
TYPED_TEST(SVSTest, test_index_zeros_vector_cosine) {
1779+
const size_t dim = 4;
1780+
1781+
SVSParams params = {
1782+
.dim = dim,
1783+
.metric = VecSimMetric_Cosine,
1784+
};
1785+
this->SetTypeParams(params);
1786+
VecSimParams index_params = CreateParams(params);
1787+
VecSimIndex *index = this->CreateNewIndex(index_params);
1788+
ASSERT_INDEX(index);
1789+
1790+
auto svs_index = this->CastToSVS(index);
1791+
ASSERT_NE(svs_index, nullptr);
1792+
1793+
GenerateAndAddVector<TEST_DATA_T>(index, dim, 0, 0);
1794+
1795+
ASSERT_EQ(VecSimIndex_IndexSize(index), 1);
1796+
VecSimIndex_Free(index);
1797+
}
1798+
17741799
TYPED_TEST(SVSTest, svs_vector_search_test_cosine) {
17751800
// Scalar quantization accuracy is insufficient for this test.
17761801
if (this->isFallbackToSQ()) {

0 commit comments

Comments
 (0)