Skip to main content

tinyquant_bruteforce/
lib.rs

1//! Brute-force search backend for `TinyQuant`.
2//!
3//! Implements [`SearchBackend`] by computing cosine similarity against every
4//! stored vector on each query.  Suitable for corpora up to ~100 k vectors.
5//!
6//! # Quick start
7//!
8//! ```rust
9//! use tinyquant_bruteforce::BruteForceBackend;
10//! use tinyquant_core::backend::SearchBackend;
11//! use std::sync::Arc;
12//!
13//! let mut backend = BruteForceBackend::new();
14//! let id: Arc<str> = Arc::from("vec-001");
15//! backend.ingest(&[(id, vec![1.0, 0.0, 0.0])]).unwrap();
16//! let results = backend.search(&[1.0, 0.0, 0.0], 1).unwrap();
17//! assert_eq!(results.len(), 1);
18//! ```
19#![deny(
20    warnings,
21    missing_docs,
22    unsafe_op_in_unsafe_fn,
23    clippy::all,
24    clippy::pedantic,
25    clippy::nursery,
26    clippy::unwrap_used,
27    clippy::expect_used,
28    clippy::panic,
29    clippy::indexing_slicing,
30    clippy::cognitive_complexity
31)]
32#![allow(clippy::module_name_repetitions, clippy::must_use_candidate)]
33
34pub(crate) mod backend;
35pub(crate) mod errors;
36pub(crate) mod similarity;
37#[cfg(feature = "simd")]
38pub(crate) mod similarity_simd;
39pub(crate) mod store;
40
41pub use backend::BruteForceBackend;
42pub use errors::BackendError;
43pub use tinyquant_core::backend::{SearchBackend, SearchResult};