[[bench]]
harness = false
name = "distance"
path = "benches/distance.rs"
[[bench]]
harness = false
name = "hnsw"
path = "benches/hnsw.rs"
[[bench]]
harness = false
name = "memory"
path = "benches/memory.rs"
[[bench]]
harness = false
name = "recall"
path = "benches/recall.rs"
[[bench]]
harness = false
name = "scaling"
path = "benches/scaling.rs"
[dependencies.bincode]
optional = true
version = "1.3"
[dependencies.bitflags]
version = "2.4"
[dependencies.bytemuck]
features = ["derive"]
optional = true
version = "1.14"
[dependencies.byteorder]
version = "1.5"
[dependencies.cnk]
optional = true
version = "0.1.0"
[dependencies.crc32fast]
version = "1.4"
[dependencies.fst]
version = "0.4"
[dependencies.hex]
version = "0.4"
[dependencies.hiqlite]
features = ["full"]
version = "0.12"
[dependencies.innr]
optional = true
version = "0.1.0"
[dependencies.kuji]
version = "0.1.0"
[dependencies.libc]
version = "0.2"
[dependencies.log]
version = "0.4"
[dependencies.memmap2]
optional = true
version = "0.9"
[dependencies.numpy]
optional = true
version = "0.27.0"
[dependencies.ordered-float]
version = "4.2"
[dependencies.parking_lot]
version = "0.12"
[dependencies.postcard]
features = ["use-crc", "alloc", "use-std"]
optional = true
version = "1.0"
[dependencies.pyo3]
optional = true
version = "0.27.2"
[dependencies.rand]
version = "0.9"
[dependencies.rayon]
version = "1.10"
[dependencies.sbits]
optional = true
version = "0.1.0"
[dependencies.serde]
features = ["derive"]
version = "1.0"
[dependencies.serde_json]
version = "1.0"
[dependencies.simsimd]
optional = true
version = "6.5.12"
[dependencies.smallvec]
features = ["serde"]
version = "1.11"
[dependencies.thiserror]
version = "2.0"
[dependencies.vquant]
optional = true
package = "qntz"
version = "0.1.0"
[dev-dependencies.criterion]
features = ["html_reports"]
version = "0.5"
[dev-dependencies.memmap2]
version = "0.9"
[dev-dependencies.proptest]
version = "1.5"
[dev-dependencies.tempfile]
version = "3"
[[example]]
name = "01_basic_search"
path = "examples/01_basic_search.rs"
[[example]]
name = "02_measure_recall"
path = "examples/02_measure_recall.rs"
[[example]]
name = "03_quick_benchmark"
path = "examples/03_quick_benchmark.rs"
[[example]]
name = "04_rigorous_benchmark"
path = "examples/04_rigorous_benchmark.rs"
[[example]]
name = "dual_branch_demo"
path = "examples/dual_branch_demo.rs"
[[example]]
name = "dual_branch_hnsw_demo"
path = "examples/dual_branch_hnsw_demo.rs"
[[example]]
name = "evoc_demo"
path = "examples/evoc_demo.rs"
[[example]]
name = "glove_benchmark"
path = "examples/glove_benchmark.rs"
[[example]]
name = "hnsw_benchmark"
path = "examples/hnsw_benchmark.rs"
[[example]]
name = "ivf_pq_demo"
path = "examples/ivf_pq_demo.rs"
[[example]]
name = "lid_demo"
path = "examples/lid_demo.rs"
[[example]]
name = "lid_outlier_detection"
path = "examples/lid_outlier_detection.rs"
[[example]]
name = "lsh_demo"
path = "examples/lsh_demo.rs"
[[example]]
name = "rabitq_demo"
path = "examples/rabitq_demo.rs"
[[example]]
name = "semantic_search_demo"
path = "examples/semantic_search_demo.rs"
[[example]]
name = "sift_benchmark"
path = "examples/sift_benchmark.rs"
[features]
annoy = []
balltree = []
default = ["hnsw", "innr"]
dense = []
diskann = []
evoc = []
hnsw = []
id-compression = ["dep:cnk", "dep:sbits"]
innr = ["dep:innr"]
ivf_pq = []
kdtree = []
kmeans_tree = []
lsh = []
memmap = ["persistence"]
nightly = []
nsw = []
persistence = ["dep:postcard", "dep:bytemuck", "dep:memmap2"]
persistence-bincode = ["dep:bincode", "persistence"]
python = ["dep:pyo3", "dep:numpy", "hnsw"]
quantization = ["vquant"]
rabitq = ["vquant", "vquant/rabitq"]
rptree = []
saq = ["vquant", "vquant/ternary"]
scann = []
simsimd = ["dep:simsimd"]
sng = []
succinct-filters = ["dep:sbits"]
turboquant = []
vamana = []
vquant = ["dep:vquant"]
[lib]
crate-type = ["rlib", "cdylib"]
name = "jin"
path = "src/lib.rs"
[lints.clippy]
doc_markdown = "allow"
empty_loop = "deny"
expect_used = "warn"
large_enum_variant = "warn"
module_name_repetitions = "allow"
multiple_crate_versions = "allow"
mutex_atomic = "warn"
never_loop = "warn"
too_many_arguments = "allow"
type_complexity = "allow"
unwrap_in_result = "warn"
unwrap_used = "warn"
wrong_self_convention = "allow"
[lints.clippy.cargo]
level = "warn"
priority = -1
[lints.clippy.complexity]
level = "warn"
priority = -1
[lints.clippy.correctness]
level = "deny"
priority = -1
[lints.clippy.perf]
level = "warn"
priority = -1
[lints.clippy.restriction]
level = "allow"
priority = -1
[lints.clippy.style]
level = "warn"
priority = -1
[lints.clippy.suspicious]
level = "warn"
priority = -1
[lints.rust]
semicolon_in_expressions_from_macros = "warn"
unsafe_op_in_unsafe_fn = "warn"
unstable_features = "deny"
unused_extern_crates = "warn"
unused_import_braces = "warn"
unused_lifetimes = "warn"
unused_macro_rules = "warn"
variant_size_differences = "warn"
[lints.rust.future_incompatible]
level = "warn"
priority = -1
[lints.rust.nonstandard_style]
level = "warn"
priority = -1
[lints.rust.rust_2018_idioms]
level = "warn"
priority = -1
[lints.rust.rust_2021_compatibility]
level = "warn"
priority = -1
[lints.rust.unexpected_cfgs]
check-cfg = ['cfg(feature, values("nsw", "kdtree", "balltree", "kmeans_tree", "rptree", "lsh", "annoy", "simd", "rand", "hdf5", "id-compression", "python", "succinct-filters"))']
level = "warn"
priority = 0
[package]
authors = ["Arc <attobop@gmail.com>"]
autobenches = false
autobins = false
autoexamples = false
autolib = false
autotests = false
build = false
categories = ["algorithms", "science"]
description = "Approximate Nearest Neighbor Search: HNSW, DiskANN, IVF-PQ, ScaNN, quantization"
edition = "2021"
keywords = ["ann", "hnsw", "vector-search", "similarity", "nearest-neighbor"]
license = "MIT OR Apache-2.0"
name = "jin"
readme = "README.md"
repository = "https://github.com/arclabs561/jin"
rust-version = "1.80"
version = "0.1.0"
[[test]]
name = "chaos_persistence"
path = "tests/chaos_persistence.rs"
[[test]]
name = "cross_crate_integration"
path = "tests/cross_crate_integration.rs"
[[test]]
name = "diskann_persistence_test"
path = "tests/diskann_persistence_test.rs"
[[test]]
name = "distributed_locking"
path = "tests/distributed_locking.rs"
[[test]]
name = "edge_cases"
path = "tests/edge_cases.rs"
[[test]]
name = "eval_e2e"
path = "tests/eval_e2e.rs"
[[test]]
name = "hnsw_e2e"
path = "tests/hnsw_e2e.rs"
[[test]]
name = "hnsw_integration_tests"
path = "tests/hnsw_integration_tests.rs"
[[test]]
name = "integration_idpaq"
path = "tests/integration_idpaq.rs"
[[test]]
name = "property_tests"
path = "tests/property_tests.rs"
[[test]]
name = "regression_known_bugs"
path = "tests/regression_known_bugs.rs"