Skip to main content

IndexManager

Struct IndexManager 

Source
pub struct IndexManager {
    pub hnsw: HnswIndex,
    pub bm25: Bm25Index,
    pub bitmap: BitmapIndex,
    pub temporal: TemporalIndex,
    pub salience: SalienceIndex,
}
Expand description

Owns all index types and provides unified indexing and hybrid search.

Fields§

§hnsw: HnswIndex

Vector similarity index.

§bm25: Bm25Index

BM25 full-text index for keyword search.

§bitmap: BitmapIndex

Tag and attribute bitmap index.

§temporal: TemporalIndex

Timestamp range index.

§salience: SalienceIndex

Importance score index.

Implementations§

Source§

impl IndexManager

Source

pub fn new(config: IndexManagerConfig) -> Self

Create a new index manager with the given configuration.

Source

pub fn save(&self, dir: &Path) -> MenteResult<()>

Save all indexes to the given directory (bincode format).

Source

pub fn load(dir: &Path) -> MenteResult<Self>

Load all indexes from the given directory. Tries .bin first, falls back to .json.

Source

pub fn index_memory(&self, node: &MemoryNode)

Index a memory node across all indexes.

Source

pub fn remove_memory(&self, id: MemoryId, node: &MemoryNode)

Remove a memory from all indexes.

Hybrid search combining vector similarity, BM25 keyword matching, tag filtering, time range, and salience.

Strategy:

  1. Vector search (HNSW) for top candidates
  2. BM25 keyword search for top candidates
  3. Merge via Reciprocal Rank Fusion (RRF)
  4. Filter by tags and time range
  5. Boost by salience and recency
  6. Return top k results
Source

pub fn hybrid_search_with_query( &self, query_embedding: &[f32], query_text: Option<&str>, tags: Option<&[&str]>, time_range: Option<(Timestamp, Timestamp)>, k: usize, ) -> Vec<(MemoryId, f32)>

Hybrid search with an optional text query for BM25 matching.

When query_text is provided, BM25 results are merged with vector results via RRF. When None, behaves like vector-only search.

Trait Implementations§

Source§

impl Default for IndexManager

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

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