-
Notifications
You must be signed in to change notification settings - Fork 21
[MOD-10236] Add serialization to SVS index #716
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
alonre24
reviewed
Jul 1, 2025
a3ee719
to
7af26da
Compare
meiravgri
reviewed
Jul 2, 2025
meiravgri
reviewed
Jul 2, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome!
main comments are regarding visibility :)
missing review for svs_extensions.h
and svs_utils.h,
will go over with @rfsaliev
rfsaliev
reviewed
Jul 2, 2025
rfsaliev
reviewed
Jul 2, 2025
lerman25
added a commit
that referenced
this pull request
Jul 3, 2025
7170d55
to
650c333
Compare
884a54c
to
c167405
Compare
meiravgri
previously approved these changes
Sep 14, 2025
meiravgri
previously approved these changes
Sep 16, 2025
meiravgri
approved these changes
Sep 16, 2025
Successfully created backport PR for |
github-actions bot
pushed a commit
that referenced
this pull request
Sep 16, 2025
* generalize * remove serializer.cpp from cmake * prepare merge with rafik commit * [SVS] Implement Save/Load + test * seperate hnsw_serializer to h and cpp * remove get version impl * save impl * add load * change camelcase * for mat * generalzie saveIndexFields * format * compare metadata on load * Add checkIntegrity with error * checkIntegrity * remove duplicate verification in compare meta data * format * svs serializetion version testing * Revert "svs serializetion version testing" This reverts commit 9ed7730. * common serializer test * remove changes_num from metadata * Add location c'tor * Add location ctor and to test * Remove outdated comment from serializer header * Enhance documentation for loadIndex function in SVSIndex * Add comments * format + remove test * enable tests * serializer test * format * reset SVS to master * add logging to test_svs * format * remove duplicate NewIndexImpl * expose loadIndex in VecSimIndex, add BUILD_TEST gurad * remove string ctor from SVSIndex * format * fix BUILD_TEST in svs_factory * document loadIndex * move loadIndex to serializer * remove excess declarations * remove extra ; * compatable -> compatible * remove redundant params from test * remove comments from threadpool_handle * remove error context comments * add checkIntegrity * update checkIntegrity and format * move loadIndex to SVSSerializer * update bindings * format * add test * add single * adjust labels * Refactor save_load test to simplify vector generation logic * add HAVE_SVS guard * Add missing include for <sstream> in svs_serializer.h * free faulty index * Free index * Improve error message for index loading failure in NewIndex function * format --------- Co-authored-by: Rafik Saliev <[email protected]> (cherry picked from commit f68bb6b)
lerman25
added a commit
that referenced
this pull request
Sep 17, 2025
* generalize * remove serializer.cpp from cmake * prepare merge with rafik commit * [SVS] Implement Save/Load + test * seperate hnsw_serializer to h and cpp * remove get version impl * save impl * add load * change camelcase * for mat * generalzie saveIndexFields * format * compare metadata on load * Add checkIntegrity with error * checkIntegrity * remove duplicate verification in compare meta data * format * svs serializetion version testing * Revert "svs serializetion version testing" This reverts commit 9ed7730. * common serializer test * remove changes_num from metadata * Add location c'tor * Add location ctor and to test * Remove outdated comment from serializer header * Enhance documentation for loadIndex function in SVSIndex * Add comments * format + remove test * enable tests * serializer test * format * reset SVS to master * add logging to test_svs * format * remove duplicate NewIndexImpl * expose loadIndex in VecSimIndex, add BUILD_TEST gurad * remove string ctor from SVSIndex * format * fix BUILD_TEST in svs_factory * document loadIndex * move loadIndex to serializer * remove excess declarations * remove extra ; * compatable -> compatible * remove redundant params from test * remove comments from threadpool_handle * remove error context comments * add checkIntegrity * update checkIntegrity and format * move loadIndex to SVSSerializer * update bindings * format * add test * add single * adjust labels * Refactor save_load test to simplify vector generation logic * add HAVE_SVS guard * Add missing include for <sstream> in svs_serializer.h * free faulty index * Free index * Improve error message for index loading failure in NewIndex function * format --------- Co-authored-by: Rafik Saliev <[email protected]>
github-merge-queue bot
pushed a commit
that referenced
this pull request
Sep 17, 2025
[MOD-10236] Add serialization to SVS index (#716) * generalize * remove serializer.cpp from cmake * prepare merge with rafik commit * [SVS] Implement Save/Load + test * seperate hnsw_serializer to h and cpp * remove get version impl * save impl * add load * change camelcase * for mat * generalzie saveIndexFields * format * compare metadata on load * Add checkIntegrity with error * checkIntegrity * remove duplicate verification in compare meta data * format * svs serializetion version testing * Revert "svs serializetion version testing" This reverts commit 9ed7730. * common serializer test * remove changes_num from metadata * Add location c'tor * Add location ctor and to test * Remove outdated comment from serializer header * Enhance documentation for loadIndex function in SVSIndex * Add comments * format + remove test * enable tests * serializer test * format * reset SVS to master * add logging to test_svs * format * remove duplicate NewIndexImpl * expose loadIndex in VecSimIndex, add BUILD_TEST gurad * remove string ctor from SVSIndex * format * fix BUILD_TEST in svs_factory * document loadIndex * move loadIndex to serializer * remove excess declarations * remove extra ; * compatable -> compatible * remove redundant params from test * remove comments from threadpool_handle * remove error context comments * add checkIntegrity * update checkIntegrity and format * move loadIndex to SVSSerializer * update bindings * format * add test * add single * adjust labels * Refactor save_load test to simplify vector generation logic * add HAVE_SVS guard * Add missing include for <sstream> in svs_serializer.h * free faulty index * Free index * Improve error message for index loading failure in NewIndex function * format --------- Co-authored-by: Rafik Saliev <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR refactors the serialization logic for vector indexes by introducing a clear abstraction layer via the Serializer base class. Both HNSWSerializer and SVSSerializer now inherit from this interface, enabling:
Each index (e.g., HNSWIndex, SVSIndex) implements its own saveIndexFields method to handle template- and implementation-specific data.
This PR also introduces support for saving/loading SVS indexes and validating their internal consistency.
Specifically: