Backend
GINGER: Spicing Up Graph-Based Vector Search
arXiv cs.DC0 views
arXiv:2611.08306v1 Announce Type: cross Abstract: We present \textsc{Ginger}, a state-of-the-art open-source C++ library for graph-based approximate nearest neighbor search (ANNS). We developed \textsc{Ginger} at Google to push the speed and memory efficiency of graph search on large and high-dimensional embedding datasets. \textsc{Ginger} surpasses existing ANNS libraries with regards to query throughput and indexing time while matching the memory footprint of the most space-efficient competitors. \textsc{Ginger} builds upon recent advances in proximity graph construction (PiPNN) and vector quantization (TurboQuant). We introduce Nested TurboQuant (NTQ), a two-level quantizer which supports low precision graph navigation and high precision reranking in a single code. This representation achieves near floating point precision with $2.6\times$ less memory. We also compress the size of our proximity graphs by up to $2.5\times$ without impacting query throughput. We combine graph reordering with a new lossless compression codec called AdaptiveGap, which builds upon StreamVByte. At $95\%$ recall, \textsc{Ginger} speeds up query throughput by an average of $1.8\times$ over each dataset's fastest competitor and by at least $2.3\times$ over any single library. This lead grows to $2.9\times$ over compact libraries on high-dimensional embeddings.
Source:https://arxiv.org/abs/2611.08306PreviousGUARDTs: Decentralized Access Control for Replicated Data TypesNextMeasured Coupling for Parallel Decoding in Diffusion Language Models
Related posts
Designing an AI incident agent for 3 a.m.: making memory visible
0dev.to UX
From Best Buy To Meta Lab: The Current XR Retail Experience
0dev.to UX
Stamp an Expiry on Every AI Approval Before the Agent Acts
0dev.to UX
Same AI, two answers: what happened when we gave our on-call agent a memory
0dev.to UX
Same AI, two answers: what happened when we gave our on-call agent a memory.
0dev.to UX
Same AI, two answers: what happened when we gave our on-call agent a memory..
0dev.to UX