The MyScale Search-Index library, incorporating vector indexing algorithms used in MyScaleDB, offers a unified interface for tasks such as index creation, loading, serialization, and vector search. Although primarily developed for integration with MyScale, it also supports standalone compilation and unit test execution. The library supports various vector index algorithms, including Flat, IVF, HNSW (with optimized HNSWfast), and ScaNN (with automatic parameter tuning).
Similar to MyScaleDB, Search-Index requires clang-15
with c++20
support to build from source:
sudo apt install clang-15 libc++abi-15-dev libc++-15-dev -y
sudo apt install libboost-all-dev libmkl-dev -y
After installing the dependencies, use cmake
to build the project. The static library and unit test programs will be generated under the build/
folder.
mkdir build && cd build
CC=clang-15 CXX=clang++-15 cmake .. && make -j
Execute the following commands under the build
folder. The run_tests.sh
script contains commands for testing vector indexes under various configurations:
cd build
bash ../scripts/run_tests.sh
Before submitting a pull request, please ensure that you run the pre-commit checks locally and execute the unit tests to verify that your code is ready for review.
Use the following commands to install and set up the pre-commit checks:
# install `clang-format` and `clang-tidy` if you haven't done so already
sudo apt install clang-format clang-tidy
# install pre-commit hooks
pip3 install pre-commit
pre-commit install
This project utilizes the following open-source vector search libraries: