RHELM: Beyond Static Dialogues

June 5, 2026 ยท View on GitHub

Beyond Static Dialogues: Benchmarking Realistic, Heterogeneous, and Evolving Long-Horizon Memory

Paper Project Page HuggingFace GitHub

RHELM Overview

๐Ÿ“– Overview

RHELM is a comprehensive benchmark for evaluating long-horizon memory capabilities in AI systems. Unlike existing benchmarks that focus on static dialogues, RHELM introduces realistic, heterogeneous, and evolving memory challenges that better reflect real-world assistant scenarios.

Key Features

  • ๐ŸŽญ Realistic Profiles: Diverse characters with rich backstories, preferences, and evolving life circumstances
  • ๐Ÿ“Š Heterogeneous Data: Multi-modal external memory sources including conversations, emails, documents
  • ๐Ÿ”„ Temporal Evolution: Time-aware questions that test memory across different temporal contexts
  • ๐Ÿง  Challenging Question Taxonomy: 7 major categories with 26 complex characteristics requiring multi-hop reasoning, temporal synthesis, preference tracking, and hallucination detection
  • โš ๏ธ Memory-Conditioned Misleading Queries: "Trap" queries that conflict with the user's updated life state, requiring the assistant to detect the implicit conflict, decline the unsafe request, and propose a constraint-compliant alternative

๐Ÿ“‹ Challenge Taxonomy

RHELM features a comprehensive taxonomy of challenging memory questions across three major QA domains with 7 categories and 26 complex characteristics.

๐Ÿ‘‰ View Full Challenge Taxonomy

๐Ÿ† Leaderboard

We evaluate three families of systems โ€” RAG Baselines, Long-Context Models, and Memory Frameworks โ€” under two settings (without / with external data sources). Scores are accuracy (%), reported across Dialogue History QA (FC: Fact, TP: Temporal, AG: Aggregation, HL: Hallucination, MI: Misleading), External Source QA (EX: Attachment & Email), and Hybrid Context QA (MX: Mixed).

๐ŸŸข Without External Data Sources

ModelFCTPAGHLMIEXMXAvg
RAG Baselines
GPT-4.1-mini (k=5)35.817.317.715.23.18.010.016.3
GPT-4.1-mini (k=20)44.032.431.818.33.112.112.923.5
GPT-4.1-mini (k=50)59.941.640.115.71.512.916.728.9
Hybrid (k=5)34.320.514.119.81.58.010.516.7
Hybrid (k=20)47.335.731.819.33.110.415.224.8
Hybrid (k=50)56.541.135.915.23.113.716.727.8
GPT-4.1 (k=20)51.734.135.923.97.716.117.628.2
Gemini-2.5-Pro (k=20)45.435.127.166.023.112.418.132.6
Claude-Opus-4.5 (k=20)50.737.833.368.047.713.716.236.2
Long-Context Models
Gemini-2.5-Flash-Lite (1M)33.222.715.217.30.09.55.616.0
Qwen-2.5-14B-Instruct (1M)29.515.129.73.10.011.79.115.3
GPT-4.1-mini (1M)55.131.940.14.11.511.212.424.0
Qwen3.5-397B-A17B (1M)49.833.035.973.623.110.814.834.6
Claude-Opus-4.6 (1M)72.567.658.367.069.216.121.449.7
GPT-5.5 (1M)82.683.865.177.726.224.929.157.0
Memory Frameworks
MemGPT31.918.422.90.50.07.68.113.9
Mem041.631.428.110.73.110.813.321.1
MemU49.332.433.98.64.612.011.423.1

๐Ÿ”ต With External Data Sources

ModelFCTPAGHLMIEXMXAvg
RAG Baselines
GPT-4.1-mini (k=5)34.814.119.311.73.116.912.417.5
GPT-4.1-mini (k=20)42.528.730.713.23.128.513.825.1
GPT-4.1-mini (k=50)54.639.538.011.21.538.622.432.6
Hybrid (k=5)31.919.514.119.31.516.110.517.6
Hybrid (k=20)45.930.826.616.84.626.915.726.0
Hybrid (k=50)53.137.833.98.63.133.318.629.6
GPT-4.1 (k=20)50.229.232.319.86.232.519.529.5
Gemini-2.5-Pro (k=20)43.031.926.064.526.231.320.535.5
Claude-Opus-4.5 (k=20)50.230.831.860.941.533.721.038.1
Long-Context Models
Gemini-2.5-Flash-Lite (1M)31.714.123.47.60.019.013.117.3
Qwen-2.5-14B-Instruct (1M)16.97.015.61.00.05.26.28.1
GPT-4.1-mini (1M)49.327.033.92.01.543.40.333.9
Qwen3.5-397B-A17B (1M)50.228.737.058.924.648.246.744.3
Claude-Opus-4.6 (1M)68.164.356.871.167.774.777.669.1
GPT-5.5 (1M)76.873.056.875.629.281.586.773.3
Memory Frameworks
MemGPT27.514.628.71.51.518.917.117.3
Mem046.429.227.110.23.131.335.728.9
MemU54.636.235.410.23.136.536.733.6

๐Ÿ’ก Notes: All long-context models are evaluated with a batch_size of 10 for inference cost. The relatively low scores of Qwen3.5-397B-A17B are mainly caused by JSON parsing failures during evaluation, which suppress its effective accuracy.

๐Ÿ—‚๏ธ QA Format

Each QA file is in JSONL format

{
  "id": "fact_19130b",
  "question": "Reflecting on the morning when my routine felt particularly unsettled and I ended up with a less-than-ideal start, what did I actually have for my first meal of the day?",
  "answer": "Leftover lentil soup",
  "question_date": "2024-10-28",
  "question_type": "fact",
  "supporting_evidence": ["2024-05-26:5"],
  "characteristics": ["State-Dependent Attribute"]
}
FieldTypeDescription
idstringUnique question identifier, prefixed by its question type (e.g. fact_19130b).
questionstringThe user query posed to the memory system.
answerstringThe ground-truth answer used for evaluation.
question_datestring (YYYY-MM-DD)The date from which the question is asked. To better utilize the benchmark complexity, it is recommended to use all history evidence.
question_typestringOne of: fact, temporal, hallucination, aggregation, misleading, attachment, mixed.
supporting_evidencelist[string]References to source items that ground the answer. Conversation evidence uses the form "<session-date>:<turn-index>" (e.g. "2024-05-26:5" = turn 5 of the 2024-05-26 session); attachment evidence references the file/section (e.g. "56_report_task_*.md:Section").
characteristicslist[string]Fine-grained challenge labels for the question (e.g. State-Dependent Attribute, Multi-Hop Traversal). See the Challenge Taxonomy.

๐Ÿš€ Quick Start

Installation


# Create virtual environment (recommended)
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

Running Evaluation

The evaluation reads its dataset from the data/ directory (conversations, emails, attachments) and a QA file in JSONL format. Provide the QA file via --input-file:

# Basic RAG evaluation (dense retrieval, top-k=5)
python -m evaluation.rag_benchmark \
    --character "David_R._Ellis" \
    --input-file "data/QA_final/low_score_qa_David_R._Ellis_all_validated.jsonl"

# Full-context evaluation (no retrieval, feed all evidence to the model)
python -m evaluation.rag_benchmark \
    --character "David_R._Ellis" \
    --input-file "data/QA_final/low_score_qa_David_R._Ellis_all_validated.jsonl" \
    --full-context

# RAG evaluation including emails and attachments, with hybrid (BM25 + dense) retrieval
python -m evaluation.rag_benchmark \
    --character "David_R._Ellis" \
    --input-file "data/QA_final/low_score_qa_David_R._Ellis_all_validated.jsonl" \
    --include-attachment \
    --hybrid \
    --k 10

Configuration

LLM credentials are read from environment variables (never hard-coded):

# OpenAI
export OPENAI_API_KEY="sk-..."

# or Azure OpenAI
export AZURE_OPENAI_ENDPOINT="https://<resource>.openai.azure.com/"
export AZURE_OPENAI_API_KEY="..."

Dataset locations, embedding model, chunking and output paths can be customised in evaluation/configs/config.py.

๐Ÿ“ฆ Data & Code Release

ComponentStatus
Evaluation Frameworkโœ… Available
Benchmark Data๐Ÿค— HuggingFace
Data Generation Code๐Ÿ”œ To be released

Note: Data generation pipeline will be released upon paper acceptance