feat(bench): add LongMemEval single-profile benchmark and update evaluation docs - #728
Open
forgespectrayan wants to merge 9 commits into
Open
feat(bench): add LongMemEval single-profile benchmark and update evaluation docs#728forgespectrayan wants to merge 9 commits into
forgespectrayan wants to merge 9 commits into
Conversation
…uation docs - Add LongMemEvalSingleProfileBenchmarkTest executing CognitiveBenchmarkHarness on Sam Okonkwo (51 sessions, 514 turns) - Record verified empirical results: 78.95% nDCG@10, 80.00% MRR@10, 85.00% Recall@10, Cohen's d = +0.686 (p = 0.0301) - Update docs/docs/memory/evaluation.md replacing pooled 300-user table with single-persona benchmark metrics - Add methodological forensic note detailing cross-tenant noise in pooled LongMemEval vs single-persona recall
… documentation - Retain full 500-query LongMemEval table and add Section B.1 for the single-persona slice - Restore competitive MRR@10 comparison cell to published 44.20% benchmark protocol - Provide honest statistical commentary on hybrid vs vector and cognitive rescoring - Accurately report steady-state latency (~3.5 ms p50) - Use robust base directory resolution in LongMemEvalSingleProfileBenchmarkTest and add quality assertions
…na slice as Section 1.1 B
…RF in benchmark pipeline
| log.info("Exported {} entities to {}", totalEntities, target); | ||
| } | ||
|
|
||
| private void exportTemporalChains(SpectorMemory memory, LoadedDataset dataset, Map<Integer, String> slotToId, Path target) throws IOException { |
| log.info("Exported {} entities to {}", totalEntities, target); | ||
| } | ||
|
|
||
| private void exportTemporalChains(SpectorMemory memory, LoadedDataset dataset, Map<Integer, String> slotToId, Path target) throws IOException { |
Member
Author
📊 Benchmark Run Update: Google Gemini 3.1 Flash-Lite + Persistent Disk LayoutThe single-profile LongMemEval evaluation benchmark ( 1. Metric Summary
2. Per-Query Breakdown (Rank-1 Top-1 Precision: 10 / 10 = 100%)Every single evaluation query in the 10-query autobiographical slice returned the target ground-truth fact at Rank #1:
3. Technical Enhancements in this Run
Verified with: mvn test -pl bench/spector-bench "-Dtest=LongMemEvalSingleProfileBenchmarkTest" "-DskipBenchTests=false" |
…ation Add native Apache Commons Configuration 2 DefaultLookups for ENVIRONMENT and SYSTEM_PROPERTIES to ConfigurationInterpolator, eliminating manual substring parsing and enabling standard property substitution. Co-authored-by: Bharat Joshi <bharatjoshi@spectrayan.com>
Co-authored-by: Bharat Joshi <bharatjoshi@spectrayan.com>
…ider resolution Provide SpectorMemoryConfigurator with builder() and configure() methods backed by Java SPI ServiceLoader, typed configuration POJOs, and canonical SpectorPropertyConstants defaults. Co-authored-by: Bharat Joshi <bharatjoshi@spectrayan.com>
… and scripts Replace absolute drive paths with dynamic PSScriptRoot, relative paths, and environment variable fallbacks across Java tests, Python scripts, and PowerShell runners. Co-authored-by: Bharat Joshi <bharatjoshi@spectrayan.com>
…tion Wire BenchmarkSetup through SpectorMemoryConfigurator for dynamic SPI provider loading and align maven-jar-plugin version. Co-authored-by: Bharat Joshi <bharatjoshi@spectrayan.com>
sbharatjoshi
approved these changes
Sep 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adds the single-persona longitudinal LongMemEval evaluation slice (
spector-datasets/longmemeval-single-profile) and updatesdocs/docs/memory/evaluation.md.Key Review Alignments & Technical Enhancements
Dedicated Single-Persona Longitudinal Evaluation:
PersistenceMode.DISKwith structured episodic memory partitioning and gemini-3.1-flash-lite cognitive extraction.Grounded Statistical Findings:
Measured Steady-State Latencies:
Dynamic Architecture Wiring & Provider Decoupling:
SpectorMemoryConfigurator.builder(props)with Java SPIServiceLoader<ProviderFactory>.DefaultLookups.ENVIRONMENTandDefaultLookups.SYSTEM_PROPERTIES) onConfigurationInterpolator.LlmPropertiesandSpectorPropertyConstants(DEFAULT_MEMORY_LLM_TEMPERATURE = 0.3f,DEFAULT_MEMORY_LLM_MAX_TOKENS = 1024).Hardcoded Path Elimination:
c:/,d:/) across Java tests, Python scripts, and PowerShell harnesses in favor of dynamic relative and environment-variable-backed lookups.Enhanced Benchmark Gate Test:
LongMemEvalSingleProfileBenchmarkTestdynamically resolves datasets viaresolveBaseDir()and asserts concrete quality gates (nDCG@10 >= 0.75,MRR@10 >= 0.80,Recall@10 >= 0.80,losses == 0).Single-Persona Slice Benchmark Results (Sam Okonkwo — 51 Sessions / 514 Turns / 10 Queries)
| Retriever Mode | nDCG@10 | MRR@10 | Recall@10 | Steady-State Latency ($p_{50}$ ) | Win / Tie / Loss vs Base | Effect Size vs Base | Description |$d = +0.568$ ($p = 0.0726$ ) | Single-pass BM25 + dense vector hybrid fusion. |$d = +0.591$ ($p = 0.0615$ ) | Hybrid fusion + importance & valence weighting (zero regressions). |
|:---|:---:|:---:|:---:|:---:|:---:|:---|
| Baseline (Vector Only) | 73.48% | 75.00% | 80.00% | ~34 ms | — | — | Raw cosine vector distance. |
| Similarity Search (Hybrid BM25 + Vector) | 91.73% | 91.43% | 100.00% | ~34 ms | — |
| Cognitive Pipeline (
BALANCEDProfile) | 97.97% | 100.00% | 100.00% | ~34 ms | 4 W / 6 T / 0 L |Verification