Skip to main content

Crate ringdb

Crate ringdb 

Source
Expand description

§ringDB

A vector database specialised for ring queries in high-dimensional spaces.

Instead of nearest-neighbour search, ringDB retrieves all vectors whose Euclidean distance to a query lies within a specified interval [d-λ, d+λ].

§Quick start

use ringdb::{RingDb, RingDbConfig, RingQuery};

let mut db = RingDb::new(RingDbConfig::new(4)).unwrap();
db.add_vector(&[1.0f32, 0.0, 0.0, 0.0], ()).unwrap();
db.add_vector(&[0.0, 5.0, 0.0, 0.0], ()).unwrap();

let db = db.build().unwrap();
let result = db.query(&RingQuery { query: &[0.0f32; 4], d: 1.0, lambda: 0.1 }).unwrap();
// result.ids contains IDs of all vectors at distance ≈ 1.0 from origin

Re-exports§

pub use payload::Payload;

Modules§

payload

Structs§

DiskQuery
A disk query: find all vectors whose Euclidean distance to query is at most d_max (i.e. the full disk/ball of radius d_max).
QueryResult
Result of a ring query.
RangeQuery
A range query: find all vectors whose Euclidean distance to query lies within [d_min, d_max].
RingDb
Builder for a ring-query vector database.
RingDbConfig
Configuration for a RingDb instance.
RingQuery
A ring query: find all vectors whose Euclidean distance to query lies within [d - lambda, d + lambda].
SealedRingDb
Sealed (immutable) ring-query database.

Enums§

BackendPreference
Which compute backend to use for ring queries.
RingDbError
All errors that ringdb can produce.

Derive Macros§

Payload
Derive macro that implements [ringdb::Payload] for a struct.