Skip to main content

mnem_bench/
lib.rs

1//! # mnem-bench
2//!
3//! 0.1.0 benchmark harness for [mnem](https://github.com/Uranid/mnem).
4//!
5//! ## Scope
6//!
7//! Benches:
8//!
9//! - [`Bench::LongMemEval`] (per-session chunking, R@5 / R@10).
10//! - [`Bench::Locomo`] (session granularity, R@5 / R@10).
11//! - [`Bench::Convomem`] (5 evidence categories, avg_recall).
12//! - [`Bench::MembenchSimpleRoles`] (R@5 over the simple/roles slice).
13//! - [`Bench::MembenchHighlevelMovie`] (R@5 over highlevel/movie).
14//! - [`Bench::LongMemEvalHybridV4`] (BM25-boost post-fusion variant).
15//!
16//! Adapter: [`adapters::MnemAdapter`] (in-process via `mnem-core`).
17//! Run mode: [`RunMode::CpuLocal`] (single-threaded, in-process).
18//! Cache: SHA-256 verified dataset cache at `~/.mnem/bench-data/`.
19//! Output: `RESULTS.md` + per-bench `.json` + `.jsonl`.
20//! TUI: [`tui::run_tui`] interactive setup wizard.
21//!
22//! ## Embedders
23//!
24//! - [`EmbedderChoice::OnnxMiniLm`] - real
25//!   `sentence-transformers/all-MiniLM-L6-v2` via
26//!   `mnem-embed-providers` (`onnx-bundled`). 384-dim. Default; matches
27//!   headline benchmark numbers. Gated on the default-on `onnx-minilm`
28//!   Cargo feature.
29//! - [`EmbedderChoice::BagOfTokens`] - hashed bag-of-tokens, always
30//!   compiled. Network-free, toy. Useful as the
31//!   `--no-default-features` fallback for CI smoke tests.
32//!
33//! See ``
34//! for the design rationale.
35//!
36//! ## Quick start
37//!
38//! ```no_run
39//! use mnem_bench::{
40//!     bench::{AdapterKind, Bench, EmbedderChoice, RunMode},
41//!     runner::{self, RunPlan},
42//! };
43//! use std::path::PathBuf;
44//!
45//! let plan = RunPlan {
46//!     benches: vec![Bench::LongMemEval],
47//!     adapters: vec![AdapterKind::Mnem],
48//!     mode: RunMode::CpuLocal,
49//!     embedder: EmbedderChoice::BagOfTokens,
50//!     out: PathBuf::from("./out"),
51//!     top_k: 10,
52//!     limit: Some(5),
53//!     no_cache: false,
54//!     quiet: true,
55//! };
56//! let _outcomes = runner::run(&plan).unwrap();
57//! ```
58
59#![forbid(unsafe_code)]
60#![deny(missing_docs)]
61
62pub mod adapter;
63pub mod adapters;
64pub mod bench;
65pub mod datasets;
66pub mod embed;
67pub mod output;
68pub mod runner;
69pub mod score;
70pub mod tui;
71
72pub use adapter::{BenchAdapter, Hit, IngestDoc};
73pub use bench::{AdapterKind, Bench, EmbedderChoice, RunMode};
74pub use runner::{BenchOutcome, RunPlan};
75
76/// Library version (tracks the workspace package version).
77pub const VERSION: &str = env!("CARGO_PKG_VERSION");