Smalltopk library is designed to speed up the training for Product Quantization
and Product Residual Quantization
. An long article about the library is available.
This library was written specifically for the Milvus project (https://github.com/milvus-io/milvus) and is planned to be part of it.
This is an early alpha version for both the code and the article.
Tested on:
- Intel Xeon 4-th gen (Sapphire Rapids 8488C)
- AMD Zen 4 (9R14)
- AWS Graviton 3
Please refer to the following section.
Overall, the only used external library is OpenMP
for a very basic multithreading of a single block. Thus, OpenMP
can be easily replaced with any other threading facility, including the one from the standard C++ library (which I did not use, bcz I was not sure about a possible thread pool under the hood).
Please refer to the following section.
FAISS library can be found on github.
Benchmarks for Product Quantizer and Product Residual Quantizer.
Unit tests use reworked yet borrowed code from FAISS.