Re: Does Lucene Vector Search support int8 and / or even binary?
Uwe Schindler <[email protected]> Mon, 14 Apr 2025 18:54:59 +0200
| Newsgroups | gmane.comp.jakarta.lucene.user |
|---|---|
| Message-ID | <[email protected]> |
Hi, I am not the sepcialist on vectors, but you could use HnswBitVectorsFormat in the custom codecs JAR file. This uses byte[] vectors, but each byte represents 8 dimensions. As distance it XORs the vectors and takes resulting bitcount. I know this, because I improved the bitcounting using long VarHandles to get 64 dimensions in one go (<https://github.com/apache/lucene/pull/13288/files#diff-1faf01efbf448c751b357e758254b2e623de1145b07bd8afcfe8a49b7dbde9cc>). https://lucene.apache.org/core/10_2_0/codecs/org/apache/lucene/codecs/bitvectors/HnswBitVectorsFormat.html But you have to quantisize on your own. Uwe Am 29.03.2024 um 08:28 schrieb Michael Wechner: > thanks for your feedback and pointers! > > To play with binary vectors the following project might be useful > > https://github.com/cohere-ai/BinaryVectorDB > > Re Lucene, I will try to better understand what you suggest below. > > Thanks > > Michael > > Am 29.03.24 um 07:35 schrieb Shubham Chaudhary: >>> btw, what about native binary embedding quantization support by Lucene? >> >> This sounds like a good idea to have in Lucene. >> >> Would this require another VetctorField /VectorsFormat? >> >> >> Based on current implementation, one way would be to use another KNN >> format >> or alternatively maybe a better approach would be to make >> Lucene99ScalarQuantizedVectorsFormat >> <https://lucene.apache.org/core/9_9_1/core/org/apache/lucene/codecs/lucene99/Lucene99ScalarQuantizedVectorsFormat.html> >> >> configurable >> to accept the type of quantization like this new work in progress PR for >> int4 quantization <https://github.com/apache/lucene/pull/13197> support >> which takes the number of bits to use for quantizing as input. Since >> this >> change allows passing 1 for bits to be used for quantization, it >> looks to >> me like an enabler for binary quantization. >> >> - Shubham >> >> On Sun, Mar 24, 2024 at 4:34 AM Michael Wechner >> <[email protected]> >> wrote: >> >>> btw, what about native binary embedding quantization support by Lucene? >>> >>> >>> https://www.linkedin.com/posts/tomaarsen_binary-and-scalar-embedding-quantization-activity-7176966403332132864-lJzH?utm_source=share&utm_medium=member_desktop >>> >>> >>> Would this require another VetctorField /VectorsFormat? >>> >>> Thanks >>> >>> Michael >>> >>> Am 19.03.24 um 21:57 schrieb Shubham Chaudhary: >>>> Hi Michael, >>>> >>>> Lucene already had int8 vector support since 9.5 (#1054 >>>> <https://github.com/apache/lucene/pull/1054>) but it was left to the >>> user >>>> to get those quantized vectors and index using KnnByteVectorField >>>> < >>> https://lucene.apache.org/core/9_5_0/core/org/apache/lucene/document/KnnByteVectorField.html >>> >>>> , >>>> but with Lucene 9.9 out now there is a native support for int8 scalar >>>> quantization (#12582 <https://github.com/apache/lucene/pull/12582>) >>> using >>>> Lucene99ScalarQuantizedVectorsFormat >>>> < >>> https://lucene.apache.org/core/9_9_1/core/org/apache/lucene/codecs/lucene99/Lucene99ScalarQuantizedVectorsFormat.html >>> >>>> that >>>> expects a confidence interval from 90-100. Here is a nice blog(s) that >>>> talks about how it works in Lucene. >>>> >>>> - >>>> >>> https://www.elastic.co/search-labs/blog/articles/scalar-quantization-in-lucene >>> >>>> - >>> https://www.elastic.co/search-labs/blog/articles/scalar-quantization-101 >>> >>>> Some other references : >>>> - >>>> >>> https://lucene.apache.org/core/9_9_1/core/org/apache/lucene/codecs/lucene99/Lucene99ScalarQuantizedVectorsFormat.html >>> >>>> - >>>> >>> https://lucene.apache.org/core/9_9_1/core/org/apache/lucene/codecs/lucene99/Lucene99ScalarQuantizedVectorsReader.html >>> >>>> - >>>> >>> https://lucene.apache.org/core/9_9_1/core/org/apache/lucene/codecs/lucene99/Lucene99ScalarQuantizedVectorsWriter.html >>> >>>> >>>> >>>> On Wed, Mar 20, 2024 at 1:54 AM Michael Wechner < >>> [email protected]> >>>> wrote: >>>> >>>>> Hi >>>>> >>>>> Cohere recently announced there "compressed" embeddings >>>>> >>>>> https://twitter.com/Nils_Reimers/status/1769809006762037368 >>>>> >>>>> >>> https://www.linkedin.com/posts/bhavsarpratik_rag-genai-search-activity-7175850704928989187-Ki1N/?utm_source=share&utm_medium=member_desktop >>> >>>>> Does Lucene Vector Search support this already, or is somebody >>>>> working >>>>> on this? >>>>> >>>>> Thanks >>>>> >>>>> Michael >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: [email protected] >>>>> For additional commands, e-mail: [email protected] >>>>> >>>>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [email protected] >>> For additional commands, e-mail: [email protected] >>> >>> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > -- Uwe Schindler Achterdiek 19, D-28357 Bremen https://www.thetaphi.de eMail: [email protected]