diskann_benchmark_core/streaming/mod.rs
1/*
2 * Copyright (c) Microsoft Corporation.
3 * Licensed under the MIT license.
4 */
5
6//! # Support for Streaming Operations.
7//!
8//! Streaming operations are defined by sequences of insertions, deletions, and replacements
9//! with the goal to help study how an algorithm performs under dynamic workloads.
10//!
11//! Unlike the components defined in [`crate::build`] and [`crate::search`], which usually define
12//! a single operation to benchmark, the streaming interface is a little more free-form.
13//!
14//! Index algorithms should implement [`Stream`] to define how to process different operations.
15//! The [`Stream`] trait is designed to be layered, with various adaptors that modify the function
16//! argument types as needed.
17//!
18//! Execution of streaming workloads is handled by the [`Executor`] trait.
19//!
20//! ## Built-in Executors
21//!
22//! - [`executors::bigann::RunBook`] - An executor for the BigANN style runbooks.
23//!
24//! ## Stream Adaptors
25//!
26//! - [`executors::bigann::WithData`] - Adapt the raw ranges in a BigANN runbook to data points.
27//!
28//! ## Built-in Utilities
29//!
30//! - [`graph`]: Tools for working with [`diskann::graph::DiskANNIndex`].
31//! - [`graph::InplaceDelete`]: An implementation of [`crate::build::Build`] for invoking
32//! the inplace delete method. This is meant to be used in a higher-level [`Stream`] implementation.
33//!
34//! - [`graph::DropDeleted`]: A tool for cleaning up deleted neighbors after deletions.
35//! Like [`graph::InplaceDelete`], this is a building block for [`Stream`] implementations.
36
37mod api;
38pub use api::{AnyStream, Arguments, Executor, Stream};
39
40pub mod executors;
41pub mod graph;