Skip to main content

MmapSidecarIndex

Struct MmapSidecarIndex 

Source
pub struct MmapSidecarIndex<Id>
where Id: Clone + Eq + Debug,
{ /* private fields */ }
Expand description

A memory-mapped sidecar index with zero-copy access to compressed payloads.

The file is memory-mapped via memmap2::Mmap. The FibScorer is reconstructed from the profile and gram table in the file (owned data). Each entry’s compressed FibCodeV1 bytes remain as &[u8] slices into the mmap — they are decoded on demand during search.

The _mmap field keeps the mapping alive for the lifetime of this struct.

Implementations§

Source§

impl<Id> MmapSidecarIndex<Id>
where Id: Clone + Eq + Debug + DeserializeOwned,

Source

pub fn open(path: &Path) -> Result<Self>

Memory-map a sidecar file and provide zero-copy access to compressed payloads.

The FibScorer is reconstructed from the profile (by rebuilding the quantizer). Each entry’s compact bytes stay as zero-copy &[u8] slices into the mmap and are decoded on demand during search.

§Safety

This uses Mmap::map() which requires the file to be a valid mmap-able file. The file must not be modified while the mmap is alive.

§Errors

Returns FibQuantError::CorruptPayload for malformed files, or IO errors wrapped in CorruptPayload.

Source

pub fn scorer(&self) -> &FibScorer

Return a reference to the scorer.

Source

pub fn profile(&self) -> &FibQuantProfileV1

Return a reference to the profile.

Source

pub fn len(&self) -> usize

Number of entries.

Source

pub fn is_empty(&self) -> bool

Whether the index is empty.

Source

pub fn search( &self, query: &[f32], top_k: usize, oversample: usize, ) -> Result<Vec<ScoredCandidate<Id>>>
where Id: Clone,

Approximate search returning sorted candidates.

Decodes each entry’s compressed bytes on demand from the mmap slices, scores them against the query using the Gram table estimator, and returns the top top_k * oversample candidates.

See FibSidecarIndex::search for full semantics.

Auto Trait Implementations§

§

impl<Id> Freeze for MmapSidecarIndex<Id>

§

impl<Id> RefUnwindSafe for MmapSidecarIndex<Id>
where Id: RefUnwindSafe,

§

impl<Id> Send for MmapSidecarIndex<Id>
where Id: Send,

§

impl<Id> Sync for MmapSidecarIndex<Id>
where Id: Sync,

§

impl<Id> Unpin for MmapSidecarIndex<Id>
where Id: Unpin,

§

impl<Id> UnsafeUnpin for MmapSidecarIndex<Id>

§

impl<Id> UnwindSafe for MmapSidecarIndex<Id>
where Id: UnwindSafe,

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<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