Python interface for the kANNolo library
Project description
kANNolo
kANNolo is a research-oriented library for Approximate Nearest Neighbors (ANN) search written in Rust 🦀. It is explicitly designed to combine usability with performance effectively. Designed with modularity and researchers in mind, kANNolo makes prototyping new ANN search algorithms and data structures easy. kANNolo supports both dense and sparse embeddings seamlessly. It implements the HNSW graph index and Product Quantization.
Python - Maximum performance
If you want to compile the package optimized for your CPU, you need to install the package from the Source Distribution. In order to do that you need to have the Rust toolchain installed. Use the following commands:
Prerequisites
Install Rust (via rustup):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Activate nightly:
rustup install nightly
rustup default nightly
Installation
RUSTFLAGS="-C target-cpu=native" pip install --no-binary :all: kannolo
This will compile the Rust code tailored for your machine, providing maximum performance.
Python - Easy installation
If you are not interested in obtaining the maximum performance, you can install the package from a prebuilt Wheel.
If a compatible wheel exists for your platform, pip will download and install it directly, avoiding the compilation phase.
If no compatible wheel exists, pip will download the source distribution and attempt to compile it using the Rust compiler (rustc).
pip install kannolo
Rust
This command allows you to compile all the Rust binaries contained in src/bin
RUSTFLAGS="-C target-cpu=native" cargo build --release
Details on how to use kANNolo's core engine in Rust 🦀 can be found in docs/RustUsage.md.
Details on how to use kANNolo's Python interface can be found in docs/PythonUsage.md.
Resources
Check out our docs folder for a more detailed guide on how to use kANNolo directly in Rust, replicate the results of our paper, or use kANNolo with your custom collection.
📚 Bibliography
Leonardo Delfino, Domenico Erriquez, Silvio Martinico, Franco Maria Nardini, Cosimo Rulli and Rossano Venturini. "kANNolo: Sweet and Smooth Approximate k-Nearest Neighbors Search." Proc. ECIR. 2025.
Citation License
The source code in this repository is subject to the following citation license:
By downloading and using this software, you agree to cite the under-noted paper in any kind of material you produce where it was used to conduct a search or experimentation, whether be it a research paper, dissertation, article, poster, presentation, or documentation. By using this software, you have agreed to the citation license.
ECIR 2025
@InProceedings{10.1007/978-3-031-88717-8_29,
author = "Leonardo Delfino and
Domenico Erriquez and
Silvio Martinico and
Franco Maria Nardini and
Cosimo Rulli and
Rossano Venturini",
title = "kANNolo: Sweet and Smooth Approximate k-Nearest Neighbors Search",
booktitle = "Advances in Information Retrieval",
year = "2025",
publisher = "Springer Nature Switzerland",
pages = "400--406",
isbn = "978-3-031-88717-8"
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kannolo-0.3.6.tar.gz.
File metadata
- Download URL: kannolo-0.3.6.tar.gz
- Upload date:
- Size: 651.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
82cef811f943814afc6dab14f28fda6b570aef75278afeaa06204ea09a865190
|
|
| MD5 |
44dbf665c90d9a7bbcc32440954f04a7
|
|
| BLAKE2b-256 |
31b662eb5420baab451a91e930edcfbad4293aa36e4ff6febc2c487b43766d10
|
File details
Details for the file kannolo-0.3.6-cp312-cp312-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: kannolo-0.3.6-cp312-cp312-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 789.8 kB
- Tags: CPython 3.12, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.8.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
178a5fce2090e121b00da03133eb8b377f5e4dd5f17d9dc35619f3e97a0b7c33
|
|
| MD5 |
3d8c54d52cf86fe91f3a968e786d85a9
|
|
| BLAKE2b-256 |
3ed98df90370a460dec4ea46c643743790f6eb1882c42a7fb19001119f642c97
|