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.3.5

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.3.5
File Size Uploaded
tachiom-0.3.5.tar.gz 504.4 kB Details

Built distributions (wheels)

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

Total release size: 10.5 MB

Release files / tachiom-0.3.5.tar.gz

Download URL tachiom-0.3.5.tar.gz
Size 504.4 kB
Tags Source
SHA-256 checksum
How to use checksums
4a6932e6115933a8cb1d8a7fb773112db8253d6dcd48b8b18bde1f3a7afa6ee5
BLAKE2b-256 checksum
How to use checksums
8ae83b3e1d74a8c0daeb90daef21b08e755cbd8eb7089731d3130b7f299892b8
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.3.5-cp313-cp313-manylinux_2_39_x86_64.whl

Download URL tachiom-0.3.5-cp313-cp313-manylinux_2_39_x86_64.whl
Size 885.6 kB
Tags CPython 3.13 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
a28bc2663a13eeb5cf590a751e199ae9d00a6970fc0503ca2fd517b6311616e5
BLAKE2b-256 checksum
How to use checksums
e5d4bfa988b598abf7447921ded8a368d26843aa14646234afaf49323a903f36
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.3.5-cp313-cp313-macosx_11_0_arm64.whl

Download URL tachiom-0.3.5-cp313-cp313-macosx_11_0_arm64.whl
Size 812.7 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
6e44aacfab20219e456c4c5b04043f420ebadd49f9b84f575888c75aa9858d0e
BLAKE2b-256 checksum
How to use checksums
3b277ca9aea02b6351f265f7a8ce4742c66ccf34e9cfda8ea7ae20af46e272b8
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.3.5-cp313-cp313-macosx_10_12_x86_64.whl

Download URL tachiom-0.3.5-cp313-cp313-macosx_10_12_x86_64.whl
Size 794.0 kB
Tags CPython 3.13 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
b365816b5540373ef99a31caa8fc7fd93e7fa4a5c186f0c6baba9f66005243ec
BLAKE2b-256 checksum
How to use checksums
470eb088ec5bc17b718346eefe70eac51f35358fdc440213e4115c926ebcfc1c
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.3.5-cp312-cp312-manylinux_2_39_x86_64.whl

Download URL tachiom-0.3.5-cp312-cp312-manylinux_2_39_x86_64.whl
Size 885.9 kB
Tags CPython 3.12 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
7fbf6a5bb212e9736ed3f91c196032a84b58969d36a72e811cf96c814c1c115c
BLAKE2b-256 checksum
How to use checksums
8abb34be8d6480c354a8256a32a826c84a85e06e298343965b95065ef1b1fc4d
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.3.5-cp312-cp312-macosx_11_0_arm64.whl

Download URL tachiom-0.3.5-cp312-cp312-macosx_11_0_arm64.whl
Size 812.8 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
18b39146dffb73ebd8f663963eabe25fb9742c1b186bbf089f5b4ee5b466fdb3
BLAKE2b-256 checksum
How to use checksums
db0eb770bbded00b6dde02c5223186bf5a7316ba6de792d3228b0aa85ac9a798
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.3.5-cp312-cp312-macosx_10_12_x86_64.whl

Download URL tachiom-0.3.5-cp312-cp312-macosx_10_12_x86_64.whl
Size 794.0 kB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
c258fcae666503588554aabbaa3a9778122622578d60bfe5c727594f1b4da703
BLAKE2b-256 checksum
How to use checksums
6aafd61ebc1b2ad215335bfeba28ffac7c1f5f89efbd455247bdfb61cca48421
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.3.5-cp311-cp311-manylinux_2_39_x86_64.whl

Download URL tachiom-0.3.5-cp311-cp311-manylinux_2_39_x86_64.whl
Size 886.9 kB
Tags CPython 3.11 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
5e2c7dac7c218a9ae07732f61c51a05a5f7ae3ff0e862fb3950801e0e9873198
BLAKE2b-256 checksum
How to use checksums
d59ea25a9fd604c903f23a2e929f94c00e283f3790ad3371348797f842624600
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.3.5-cp311-cp311-macosx_11_0_arm64.whl

Download URL tachiom-0.3.5-cp311-cp311-macosx_11_0_arm64.whl
Size 813.5 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
cb8e135c7ef03d884b31f6e919442ab0ea2d2d60eca7c04fce796af1b8963677
BLAKE2b-256 checksum
How to use checksums
ab0d7ce69b3d7bc521d1ba6fcba03062599b72a0c5d890d674f31639f151bec3
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.3.5-cp311-cp311-macosx_10_12_x86_64.whl

Download URL tachiom-0.3.5-cp311-cp311-macosx_10_12_x86_64.whl
Size 794.2 kB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
ca04ba48bfbb706e6c34f170762df34c6f17c4742d206b5825539fb0ea56ea38
BLAKE2b-256 checksum
How to use checksums
74ae53acca7feadbd425a9ac0291229b4b8158e759795b8a604369e359e16d53
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.3.5-cp310-cp310-manylinux_2_39_x86_64.whl

Download URL tachiom-0.3.5-cp310-cp310-manylinux_2_39_x86_64.whl
Size 887.1 kB
Tags CPython 3.10 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
ae9c2bede50f6fbcb7a1360b3ee15b607402fc0f97ca5d84f0cad3fa9ef48ee5
BLAKE2b-256 checksum
How to use checksums
3c834c010523b17e97e3beebbde88181c1c5a6e080bb7edeadf4796df1740553
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.3.5-cp310-cp310-macosx_11_0_arm64.whl

Download URL tachiom-0.3.5-cp310-cp310-macosx_11_0_arm64.whl
Size 813.4 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c3a6923f9c01173515ee0502fb1537dfa0b1db8e18cb729831abf48d2f4f1034
BLAKE2b-256 checksum
How to use checksums
e742025749c52e801efa891e008857f90ac06170c716ac02e92898d4cc2e2394
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.3.5-cp310-cp310-macosx_10_12_x86_64.whl

Download URL tachiom-0.3.5-cp310-cp310-macosx_10_12_x86_64.whl
Size 794.1 kB
Tags CPython 3.10 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
56da649e99dcac86b1bb1e973c4b9b0d0a1c68fd5e326f0ffe53241e661baa95
BLAKE2b-256 checksum
How to use checksums
30d774951d0a2870648cde38adaff087641f2190b9f3dab14ed41f3910784c0f
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

0.4.0

13 release files

This release

0.3.5 This release

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