-
Notifications
You must be signed in to change notification settings - Fork 20
Raw vectors data layer in HNSW + move to base class [MOD-7496] #523
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
Conversation
…estruction to base
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #523 +/- ##
==========================================
+ Coverage 96.93% 96.97% +0.04%
==========================================
Files 100 100
Lines 5287 5295 +8
==========================================
+ Hits 5125 5135 +10
+ Misses 162 160 -2 ☔ View full report in Codecov by Sentry. |
void DataBlocksContainer::saveBlocks(std::ostream &output) const { | ||
// Save number of blocks | ||
unsigned int num_blocks = this->numBlocks(); | ||
Serializer::writeBinaryPOD(output, num_blocks); |
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.
We should consider only saving the vectors without the metadata about the number of blocks and their sizes, so we can load them into other containers (or to different block sizes)
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.
This also means we don't need to add serialization to the container class, keeping it on the algorithm level
…e future for other raw data layers)
* use data blocks container in HNSW + adjust tests * Move vectors raw data to base class * fix for test serialization * fix test to be safe with parallel insertions * try lock only for get next results in batch iterator in bindings * todo * remove alignment from base index class + move vector allocation and destruction to base * Add serializer version that does not persist blocks (to be used in the future for other raw data layers) * Add test to cover old serialization version + small improvements * fix test * fix test for cov (cherry picked from commit 1e55ba7)
Successfully created backport PR for |
…574) Raw vectors data layer in HNSW + move to base class [MOD-7496] (#523) * use data blocks container in HNSW + adjust tests * Move vectors raw data to base class * fix for test serialization * fix test to be safe with parallel insertions * try lock only for get next results in batch iterator in bindings * todo * remove alignment from base index class + move vector allocation and destruction to base * Add serializer version that does not persist blocks (to be used in the future for other raw data layers) * Add test to cover old serialization version + small improvements * fix test * fix test for cov (cherry picked from commit 1e55ba7) Co-authored-by: alonre24 <alon.reshef@redis.com>
Describe the changes in the pull request
Use the new
RawDataContainer
interface in HNSW, currently with an explicitDataBlocksContainer
implementation, and move the abstractvectors
member to the base class.This includes:
DataBlocksContainer
responsibility, as we should not access the blocks directly anymore (should be applied for the graph data blocks later on as well).Mark if applicable