Skip to main content

TACHIOM

TACHIOM is a fast and scalable data structure for late-interaction multi-vector retrieval, written in Rust with Python bindings. It introduces Token-Aware Clustering (TAC), which distributes the coarse-centroid budget proportionally across token types, and a hierarchical Product Quantization scheme for efficient candidate reranking.

Installation

Python

Quick start (prebuilt wheels)

For most users, this is the easiest option:

pip install tachiom

If a compatible wheel exists for your platform, pip will download and install it directly without compilation. If no compatible wheel exists, pip will automatically compile from source.

This installs the core library with its only required dependency (numpy). If you also need the benchmarking / experiment scripts (scripts/run_experiments.py, analysis notebooks), install the optional extras:

pip install tachiom[scripts]

Building from source (maximum performance)

For maximum performance optimized to your CPU, build from source.

Shared prerequisites — both approaches below require Rust nightly:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup install nightly
rustup default nightly

Approach 1 — compile from PyPI source:

RUSTFLAGS="-C target-cpu=native" pip install --no-binary :all: tachiom

Approach 2 — build from GitHub (development/editable mode):

git clone https://github.com/TusKANNy/tachiom.git
cd tachiom

Create a virtual environment (recommended):

python3 -m venv ./venv
source ./venv/bin/activate  # On Windows: venv\Scripts\activate

Or with conda:

conda create -n tachiom python=3.11
conda activate tachiom

Install maturin and build:

pip install maturin
RUSTFLAGS="-C target-cpu=native" maturin develop --release

Changes to Python code take effect immediately without reinstalling — ideal for development.

Rust

The crate has two feature flags:

Feature What it enables
python PyO3 bindings — used automatically by maturin
cli CLI binaries in src/bin/ (tachiom_build, tachiom_search, bench_tac, …)

Neither feature is active by default, so a plain cargo build --release compiles only the library crate. To build the CLI binaries, enable the cli feature:

RUSTFLAGS="-C target-cpu=native" cargo build --release --features cli

The resulting binaries are placed in target/release/.

Details on how to use Tachiom's Rust CLI can be found in docs/RustUsage.md.

Quick start

import tachiom

# ── Build ─────────────────────────────────────────────────────────────────────
# Inputs (all .npy files):
#   vectors.npy    — [N, dim]   f16  one row per token
#   token_ids.npy  — [N]        i64  vocabulary id of each token
#   doclens.npy    — [n_docs]   i32  number of tokens per document

index = tachiom.Tachiom.build(
    "vectors.npy",
    "token_ids.npy",
    "doclens.npy",
)
index.save("my_index.bin")

# ── Load & search ─────────────────────────────────────────────────────────────
index = tachiom.Tachiom.load("my_index.bin")

# queries: [n_queries, n_tokens, dim] f32 array
scores, doc_ids = index.batch_search(queries, k=10, num_threads=0)
# scores, doc_ids: [n_queries, k]

See docs/PythonUsage.md for the full API, all build and search parameters, and the two-step TAC workflow.

Datasets

Pre-processed datasets and pre-built indexes are available on HuggingFace, ready to use with the experiment configs in experiments/sigir2026/.

Dataset HuggingFace Index
MS MARCO-v1 (ColBERT v2) tuskanny/ms_marco_colbertv2 tachiom_msmarco_4M_normalized
LoTTE Pooled (ColBERT v2) tuskanny/lotte_pooled_colbertv2 tachiom_lotte_2M_normalized

Each dataset contains documents.npy, token_ids.npy, doclens.npy, queries.npy, doc_ids.npy, queries_ids.npy, a qrels .tsv file, and a pre-built Tachiom index. Download with:

pip install huggingface_hub
huggingface-cli download tuskanny/ms_marco_colbertv2 --repo-type dataset --local-dir ./ms_marco
huggingface-cli download tuskanny/lotte_pooled_colbertv2 --repo-type dataset --local-dir ./lotte

Resources

Document Description
Python API Tachiom and Tac classes, all parameters, search guide
Rust CLI bench_tac, tachiom_build, tachiom_search binaries, experiment runner, SIGIR 2026 reproduction
Jupyter notebooks End-to-end demo on TAC and TACHIOM
Experiments TOML configs used for the SIGIR 2026 benchmarks

License

This software is released under the MIT License (see LICENSE).

Citation

If you use this software in your research, please cite our SIGIR 2026 paper:

@inproceedings{10.1145/3805712.3809927,
author = {Martinico, Silvio and Nardini, Franco Maria and Rulli, Cosimo and Venturini, Rossano},
title = {Efficient Multivector Retrieval with Token-Aware Clustering and Hierarchical Indexing},
year = {2026},
isbn = {9798400725999},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3805712.3809927},
doi = {10.1145/3805712.3809927},
booktitle = {Proceedings of the 49th International ACM SIGIR Conference on Research and Development in Information Retrieval},
pages = {3982–3987},
numpages = {6},
keywords = {multivector retrieval, late interaction, clustering, efficiency},
location = {Australia},
series = {SIGIR '26}
}

Metadata

Release files for tachiom 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tachiom 0.4.0
File Size Uploaded
tachiom-0.4.0.tar.gz 506.1 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for tachiom 0.4.0
File
tachiom-0.4.0-cp313-cp313-manylinux_2_39_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.39+ x86-64 Details
tachiom-0.4.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
tachiom-0.4.0-cp313-cp313-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.12+ x86-64 Details
tachiom-0.4.0-cp312-cp312-manylinux_2_39_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.39+ x86-64 Details
tachiom-0.4.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
tachiom-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details
tachiom-0.4.0-cp311-cp311-manylinux_2_39_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.39+ x86-64 Details
tachiom-0.4.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
tachiom-0.4.0-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details
tachiom-0.4.0-cp310-cp310-manylinux_2_39_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.39+ x86-64 Details
tachiom-0.4.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
tachiom-0.4.0-cp310-cp310-macosx_10_12_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.12+ x86-64 Details

Total release size: 10.7 MB

Release files / tachiom-0.4.0.tar.gz

Download URL tachiom-0.4.0.tar.gz
Size 506.1 kB
Tags Source
SHA-256 checksum
How to use checksums
77d0c918f40a1e0b6befe3477140666186a0aa80e46ba4fc0d3baad4a936c39d
BLAKE2b-256 checksum
How to use checksums
2a60bfa85dd023c2c4dc302d749a6a2efa1705b4c4ce69218b3ef1d90c6bf73e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / tachiom-0.4.0-cp313-cp313-manylinux_2_39_x86_64.whl

Download URL tachiom-0.4.0-cp313-cp313-manylinux_2_39_x86_64.whl
Size 904.3 kB
Tags CPython 3.13 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
f0474a9ef3c16e54c9ad2c6ce3724edbf3e36af84924aaf7985128ded80274f5
BLAKE2b-256 checksum
How to use checksums
eca5d2d311a75a4d80b3e928217cd580a784698258c5aae9af6375579b64a3ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / tachiom-0.4.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL tachiom-0.4.0-cp313-cp313-macosx_11_0_arm64.whl
Size 828.0 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4da0463e7dc745156512f1581a9792453125d43da401ab1a61788e5a2840917e
BLAKE2b-256 checksum
How to use checksums
d8cd61fd7b555efe65bfb4f7387c08cd519f064d895209fc61c1c718499f829e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / tachiom-0.4.0-cp313-cp313-macosx_10_12_x86_64.whl

Download URL tachiom-0.4.0-cp313-cp313-macosx_10_12_x86_64.whl
Size 810.1 kB
Tags CPython 3.13 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
0ada722b9c62bdd5ccbfef5bdf182e030ff41adbdd811945059da59a178b9e86
BLAKE2b-256 checksum
How to use checksums
e3418f9f0372b725ee470cdd1a39a87e26d091fd2988533f9a2a0c7f4e4a88ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / tachiom-0.4.0-cp312-cp312-manylinux_2_39_x86_64.whl

Download URL tachiom-0.4.0-cp312-cp312-manylinux_2_39_x86_64.whl
Size 904.4 kB
Tags CPython 3.12 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
f39451a370b45ffb55672977fa953b3ad5c3f353f62ab37f605346591cc9c893
BLAKE2b-256 checksum
How to use checksums
c4fd5f14fe2a03af9586c731c1640f70ddc4f1ddf723d4d2bee56c13cd38359d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / tachiom-0.4.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL tachiom-0.4.0-cp312-cp312-macosx_11_0_arm64.whl
Size 828.3 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
9841b73257bbbb409dc9b16d6d748abea4622aeecfeaadf3795343304271994c
BLAKE2b-256 checksum
How to use checksums
26f126f1f245a17ed0fd40e64181cb4fa3e20f751157f30d087ee9fdb8970430
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / tachiom-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl

Download URL tachiom-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl
Size 810.3 kB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
c23ea37f27dc25bbe83c2c64de6a933f37ea9bf98fe4bae6b8c31f3de8a42bc4
BLAKE2b-256 checksum
How to use checksums
8ff5af7184f3f2c7971244166c3212fec242a189e879fb2945270b82e18faabf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / tachiom-0.4.0-cp311-cp311-manylinux_2_39_x86_64.whl

Download URL tachiom-0.4.0-cp311-cp311-manylinux_2_39_x86_64.whl
Size 905.4 kB
Tags CPython 3.11 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
dc6c96525cba982e8e2bf4b46a42ce10fd673f0c9d42dfda38a02bef18da06aa
BLAKE2b-256 checksum
How to use checksums
a3b2a3098cbe14c3f574b0d090170e9693a5a3b32d4c97007c5b8afe837ae213
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / tachiom-0.4.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL tachiom-0.4.0-cp311-cp311-macosx_11_0_arm64.whl
Size 829.2 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d01dff6760a749043902d7b5c18edcad8869c33308f0cb236c71930db631b8e5
BLAKE2b-256 checksum
How to use checksums
cb61f53d1246361255e4af4fe19d84fb13df52ae492bc6b2f87fe48b2d26cc48
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / tachiom-0.4.0-cp311-cp311-macosx_10_12_x86_64.whl

Download URL tachiom-0.4.0-cp311-cp311-macosx_10_12_x86_64.whl
Size 810.5 kB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
3bf102bef059c90b20747038428903acaf90fdf88f4a1d3a1e6f33b4efdd3ee0
BLAKE2b-256 checksum
How to use checksums
d90d8b0776ae3be0ac0e703e8b3a371a7cf5e46226dd75e09c8d3e5d02bfefdf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / tachiom-0.4.0-cp310-cp310-manylinux_2_39_x86_64.whl

Download URL tachiom-0.4.0-cp310-cp310-manylinux_2_39_x86_64.whl
Size 905.5 kB
Tags CPython 3.10 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
98ee59d6711ef01eebe83ff0737bdb39b26ff77168f09fb5c1116c0087fead53
BLAKE2b-256 checksum
How to use checksums
4f98f9c48ad46f899692fb035998ec7af1215a0dcdf19c7fa8baa9eb4a977b81
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / tachiom-0.4.0-cp310-cp310-macosx_11_0_arm64.whl

Download URL tachiom-0.4.0-cp310-cp310-macosx_11_0_arm64.whl
Size 829.1 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
dabbe4a89ae35ef99acbde559e1e4e1f79d755234b3c1e8d7dfa4116b495f060
BLAKE2b-256 checksum
How to use checksums
747c7ea7d6eb913475e9dd23f207d270bc0f9bdf6d0ac836a97ec3dca0117580
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / tachiom-0.4.0-cp310-cp310-macosx_10_12_x86_64.whl

Download URL tachiom-0.4.0-cp310-cp310-macosx_10_12_x86_64.whl
Size 810.4 kB
Tags CPython 3.10 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
cfa803d895d1b725d0d27cb4a59b1d50a599a75bc40038271b4e5921dc215e68
BLAKE2b-256 checksum
How to use checksums
e67b7445f0e578de5999b54016b36f0820d20d685ee54a2b4c5d187abdef0ced
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

0.4.0 This release

13 release files

0.3.5

13 release files

0.3.4

13 release files

0.3.3

13 release files

0.3.2

13 release files

0.3.0

13 release files

0.2.6

13 release files

0.2.5

13 release files

0.2.4

13 release files

0.2.3

13 release files

0.2.2

13 release files

0.2.1

13 release files

0.2.0

13 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page