Hey everyone!
For the August edition, I wanted to share the progress on my Zig personal project: ZVector, a vector database engine built from scratch to be lightweight and fast. Over the last few weeks, I focused heavily on the compute and memory performance layer:
@Vector
:@Vector
primitives. The performance gains for batch vector operations in memory have been huge.align(64)
) to line up cleanly with L1/L2 cache lines and eliminate allocation overhead.This is where things got tricky. Lately, I’ve hit a wall with serializing and storing the vector database state to disk in binary format.
My goal is to keep memory usage low by persisting the vector index directly to disk, but I’m running into two main challenges:
std.fs.File
) and high-performance random reads (like mmap
) for fast nearest-neighbor search without blowing up the RAM.If anyone here has worked on custom binary file formats or memory-mapped files (mmap
) in Zig, I’d love to pick your brain after the talks!
Thanks for listening, and I can’t wait to hear what the rest of you have been building this month!