Skip to main content

TurboTable

Struct TurboTable 

Source
pub struct TurboTable { /* private fields */ }
Expand description

Approximate-nearest-neighbour table backed by turbovec::TurboQuantIndex.

Implementations§

Source§

impl TurboTable

Source

pub fn new(distance: Distance, dim: u16, bits: u8) -> Result<Self, IndexError>

Build an empty turbovec-backed table.

§Errors

IndexError::Empty when dim == 0, or when bits is not in {2, 3, 4}. IndexError::DimensionMismatch when dim is not a positive multiple of 8 (turbovec’s only dimensional constraint); the expected field is rounded up to the next multiple of 8 to give the caller a workable suggestion.

Source

pub fn len(&self) -> usize

Number of live (non-deleted) vectors.

Source

pub fn is_empty(&self) -> bool

true when there are no live vectors.

Source

pub fn dim(&self) -> u16

Vector dimension.

Source

pub fn distance(&self) -> Distance

Distance metric this table was built with.

Source

pub fn bits(&self) -> u8

Bit width handed to turbovec.

Source

pub fn insert(&mut self, id: NodeId, vector: Vec<f32>) -> Result<(), IndexError>

Insert a vector under id.

vector is taken in the application’s f32 form; the turbovec encode pipeline handles rotation, calibration and packing. When the table’s metric is Cosine or Euclidean the vector is L2-normalised before being added, so turbovec’s inner-product surrogate doubles as a cosine estimate.

§Errors

IndexError::Empty for a zero-dim vector, IndexError::DimensionMismatch when the vector’s dimension differs from the table’s frozen dim, and IndexError::Duplicate when id is already present.

Source

pub fn delete(&mut self, id: NodeId) -> bool

Soft-delete the vector at id. The slot stays in the turbovec index for positional integrity but is filtered out of search results via the bool mask.

Returns true when the id was present, false otherwise.

Source

pub fn contains(&self, id: NodeId) -> bool

true when id is currently a live vector.

Source

pub fn search( &self, query: &[f32], k: usize, _ef: Option<usize>, ) -> Result<Vec<SearchResult>, IndexError>

Search for the k nearest neighbours of query. The _ef argument is accepted for HNSW API parity and ignored; turbovec scans every block and does not expose a beam-width knob.

§Errors

IndexError::DimensionMismatch when the query dimension does not match the table’s frozen dim.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,