alessandrobenedetti commented on code in PR #3468:
URL: https://github.com/apache/solr/pull/3468#discussion_r2336867659


##########
solr/solr-ref-guide/modules/query-guide/pages/dense-vector-search.adoc:
##########
@@ -316,6 +316,70 @@ preserved when `stored` is true.
 +
 Accepted values: `BOOLEAN`
 
+=== BinaryBitQuantizedDenseVectorField
+
+Binary bit quantization is a different quantization technique that is even 
more aggressive in its compression and is able
+to reduce each dimension from a 32 bit float down to a single bit. This is 
done by normalizing each dimension of a vector
+relative to a centroid (mid-point pre-calculated against all vectors in the 
index) with the stored bit
+representing whether the actual value is positive or negative of the 
centroid's value. A further "corrective factor" is computed
+and stored to help compensate accuracy in the estimated distance. For more 
details, the original white paper can be viewed
+https://arxiv.org/pdf/2405.12497[here].

Review Comment:
   So, in regards to citing the paper(s), I remember there has been a very long 
discussion at the time the contribution ended up in Lucene, between the authors 
of RaBitQ and Lucene contributors.
   What ended up being accepted was :
   
   > "The binary quantization format used here is a per-vector optimized scalar 
quantization. These
   >  * ideas are evolutions of LVQ proposed in <a 
href="https://arxiv.org/abs/2304.04759";>Similarity
   >  * search in the blink of an eye with compressed indices</a> by Cecilia 
Aguerrebere et al., the
   >  * previous work on globally optimized scalar quantization in Apache 
Lucene, and <a
   >  * href="https://arxiv.org/abs/1908.10396";>Accelerating Large-Scale 
Inference with Anisotropic
   >  * Vector Quantization </a> by Ruiqi Guo et. al. Also see {@link
   >  * org.apache.lucene.util.quantization.OptimizedScalarQuantizer}. Some of 
key features are:
   >  *
   >  * <ul>
   >  *   <li>Estimating the distance between two vectors using their centroid 
centered distance. This
   >  *       requires some additional corrective factors, but allows for 
centroid centering to occur.
   >  *   <li>Optimized scalar quantization to single bit level of centroid 
centered vectors.
   >  *   <li>Asymmetric quantization of vectors, where query vectors are 
quantized to half-byte (4 bits)
   >  *       precision (normalized to the centroid) and then compared directly 
against the single bit
   >  *       quantized vectors in the index.
   >  *   <li>Transforming the half-byte quantized query vectors in such a way 
that the comparison with
   >  *       single bit vectors can be done with bit arithmetic.
   >  * </ul>
   >  *
   >  * A previous work related to improvements over regular LVQ is <a
   >  * href="https://arxiv.org/abs/2409.09913";>Practical and Asymptotically 
Optimal Quantization of
   >  * High-Dimensional Vectors in Euclidean Space for Approximate Nearest 
Neighbor Search </a> by
   >  * Jianyang Gao, et. al."
   
   (you can find it in the Javadocs of 
org.apache.lucene.codecs.lucene102.Lucene102BinaryQuantizedVectorsFormat).
   
   So given how sensible and long that discussion was, I would encourage 
replacing the short citation of RaBitQ with what was added in the official 
Lucene JavaDoc (as that should be a better attribution of merit of all the 
players involved).
   @benwtrent, am I correct?
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to