[package]
name = "next-plaid"
version.workspace = true
edition.workspace = true
description = "CPU-based PLAID implementation for multi-vector search using ndarray"
license.workspace = true
repository.workspace = true
homepage.workspace = true
authors.workspace = true
documentation.workspace = true
readme = "README.md"
keywords = ["search", "multi-vector", "plaid", "colbert", "ndarray"]
categories = ["science", "algorithms"]

[dependencies]
ndarray = { workspace = true }
blas-src = { version = "0.14", optional = true }
openblas-src = { version = "0.10", features = [
    "cblas",
    "system",
], optional = true }
accelerate-src = { version = "0.3", optional = true }
ndarray-rand = "0.15"
rand = "0.8"
rand_chacha = "0.3"
rayon = "1.10"
num-traits = "0.2"
thiserror = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
ndarray-npy = "0.9.1"
fastkmeans-rs = "0.1.7"
memmap2 = "0.9"
fs2 = "0.4"
half = "2.4"
byteorder = "1.5"
rusqlite = { version = "0.38", features = ["bundled", "functions"] }
regex = "1.11"
cudarc = { version = "0.12", features = [
    "cuda-version-from-build-system",
    "cublas",
    "dynamic-linking",
], optional = true }

[dev-dependencies]
criterion = { version = "0.8.1", features = ["html_reports"] }
approx = "0.5"
tempfile = "3.10"

[features]
default = []
accelerate = [
    "blas-src",
    "accelerate-src",
    "ndarray/blas",
    "fastkmeans-rs/accelerate",
]
openblas = [
    "blas-src",
    "openblas-src",
    "ndarray/blas",
    "fastkmeans-rs/openblas",
]
cuda = ["fastkmeans-rs/cuda", "dep:cudarc"]
