pub struct UpdatableVGraph { /* private fields */ }Expand description
A mapped base plus a mutable graph delta, with atomic durable batches.
insert, delete, and replace publish immediately; commit makes the batch durable.
Only one process may open a directory, while any number of threads may search it.
Implementations§
Source§impl UpdatableVGraph
impl UpdatableVGraph
Sourcepub fn create(
path: &Path,
data: &[f32],
dim: usize,
params: &BuildParams,
) -> Result<Self, UpdateError>
pub fn create( path: &Path, data: &[f32], dim: usize, params: &BuildParams, ) -> Result<Self, UpdateError>
Creates a new directory from row-major vectors with ids 0..n.
Sourcepub fn create_from_graph(
path: &Path,
graph: &Graph,
vertex: &VGraph,
) -> Result<Self, UpdateError>
pub fn create_from_graph( path: &Path, graph: &Graph, vertex: &VGraph, ) -> Result<Self, UpdateError>
Saves a graph and its matching vertex encoding without rebuilding the graph.
Sourcepub fn open(path: &Path) -> Result<Self, UpdateError>
pub fn open(path: &Path) -> Result<Self, UpdateError>
Opens and replays committed batches; truncates only an incomplete final frame.
pub fn len(&self) -> usize
pub fn is_empty(&self) -> bool
pub fn dim(&self) -> usize
Sourcepub fn insert(&self, id: u32, vector: &[f32]) -> Result<(), UpdateError>
pub fn insert(&self, id: u32, vector: &[f32]) -> Result<(), UpdateError>
Stages a new id in the current batch.
Sourcepub fn replace(&self, id: u32, vector: &[f32]) -> Result<(), UpdateError>
pub fn replace(&self, id: u32, vector: &[f32]) -> Result<(), UpdateError>
Atomically invalidates the previous vector and inserts the replacement.
Sourcepub fn batch_capacity(&self) -> usize
pub fn batch_capacity(&self) -> usize
Most operations one batch can stage before commit for vectors of this dimension.
Sourcepub fn insert_batch(
&self,
ids: &[u32],
vectors: &[f32],
) -> Result<(), UpdateError>
pub fn insert_batch( &self, ids: &[u32], vectors: &[f32], ) -> Result<(), UpdateError>
Stages new ids for row-major vectors, all or none, linking them into the delta in
parallel. Up to batch_capacity operations fit in one batch.
Sourcepub fn commit(&self) -> Result<(), UpdateError>
pub fn commit(&self) -> Result<(), UpdateError>
Appends the whole pending batch and completes its durable sync.
Sourcepub fn search(
&self,
query: &[f32],
k: usize,
params: VSearchParams,
) -> Result<Vec<u32>, UpdateError>
pub fn search( &self, query: &[f32], k: usize, params: VSearchParams, ) -> Result<Vec<u32>, UpdateError>
Searches a consistent in-memory view. k is clamped to the live count.
Sourcepub fn search_into(
&self,
query: &[f32],
k: usize,
params: VSearchParams,
out: &mut Vec<u32>,
) -> Result<(), UpdateError>
pub fn search_into( &self, query: &[f32], k: usize, params: VSearchParams, out: &mut Vec<u32>, ) -> Result<(), UpdateError>
Searches with a reusable result buffer, avoiding allocation on clean-base queries.
pub fn needs_consolidation( &self, policy: ConsolidationPolicy, ) -> Result<bool, UpdateError>
Sourcepub fn consolidate(&self) -> Result<(), UpdateError>
pub fn consolidate(&self) -> Result<(), UpdateError>
Commits pending work and publishes a new immutable generation while readers run.
Auto Trait Implementations§
impl !Freeze for UpdatableVGraph
impl !RefUnwindSafe for UpdatableVGraph
impl Send for UpdatableVGraph
impl Sync for UpdatableVGraph
impl Unpin for UpdatableVGraph
impl UnsafeUnpin for UpdatableVGraph
impl UnwindSafe for UpdatableVGraph
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.