iqdb-quantize 1.0.0

Vector quantization (scalar, product, binary) for memory-efficient vector search - part of the iQDB family.
Documentation
# ██████╗ ███████╗██████╗ ███████╗
# ██╔══██╗██╔════╝██╔══██╗██╔════╝
# ██████╔╝█████╗  ██████╔╝███████╗
# ██╔══██╗██╔══╝  ██╔═══╝ ╚════██║
# ██║  ██║███████╗██║     ███████║
# ╚═╝  ╚═╝╚══════╝╚═╝     ╚══════╝
#╔═══════════════════════════════╗
#║ Rust Efficiency & Performance ║
#╚═══════════════════════════════╝
[package]
name    = "iqdb-quantize"
version = "1.0.0"

# Minimum Supported Rust Version (MSRV)
rust-version = "1.87"
edition = "2024"

# License
license = "Apache-2.0 OR MIT"

# Readme
readme = "README.md"

# Description
description = "Vector quantization (scalar, product, binary) for memory-efficient vector search - part of the iQDB family."

# Keywords (5 max)
keywords = [
    "quantization",
    "vector-search",
    "embeddings",
    "compression",
    "iqdb"
]

# Categories
categories = [
    "algorithms",
    "compression"
]

# Links
homepage      = "https://github.com/jamesgober/iqdb-quantize"
repository    = "https://github.com/jamesgober/iqdb-quantize"
documentation = "https://docs.rs/iqdb-quantize"

# Authors
authors = [
    "James Gober <me@jamesgober.com>",
    "Matt Callahan <matthewcallahan01@icloud.com>",
]

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[lib]
name = "iqdb_quantize"
path = "src/lib.rs"


# FEATURE FLAGS
# #################################
[features]
# Default build is scalar-only and has no optional dependencies. The crate
# delegates every f32 distance call to `iqdb-distance`, so SIMD acceleration
# (AVX2 / NEON) lands transparently through that dependency.
default = []


# DEPENDENCIES
# #################################
[dependencies]
# Shared public vocabulary: DistanceMetric, IqdbError, Result.
iqdb-types    = "1.0.0"
# Distance/similarity math. SQ8 asymmetric distance dequantizes the candidate
# to a temporary `Vec<f32>` and routes through `iqdb_distance::compute`.
iqdb-distance = "1.0.0"
# Tracing facade only. Instrumented at the training boundary; per-vector
# encode/decode/distance stays hot-path-only.
tracing       = { version = "0.1", default-features = false, features = ["attributes", "std"] }
# ForgeError trait — gives us `kind()` and `caption()` on IqdbError for
# structured error-event fields.
error-forge   = "1.0.0"


# DEV DEPENDENCIES
# #################################
[dev-dependencies]
# Per-scheme throughput micro-benches.
criterion = { version = "0.5", features = ["html_reports"] }
# Property tests for round-trip bounds, error variants, and Hamming popcount.
proptest  = "1"
# Recording subscriber used by `tests/tracing.rs` (inlined helper).
tracing-subscriber = { version = "0.3", default-features = false, features = ["registry"] }


# BENCHMARKS
# #################################
[[bench]]
name    = "quantize"
harness = false


# RELEASE PROFILE
# #################################
[profile.release]
opt-level     = 3
lto           = "fat"
codegen-units = 1
panic         = "abort"
strip         = "symbols"