LoCoMo-Refined

May 18, 2026 ยท View on GitHub

A stricter and cleaner recalibration of LoCoMo for long-conversation memory evaluation.

Version Dataset Python Judge License: CC BY-NC 4.0

LoCoMo Refined recalibrates the original LoCoMo benchmark for long-conversation memory evaluation. It focuses on whether an agent can accurately recall time, events, relationships, and preferences after very long dialogues.

We found that the original evaluation could over-credit answers that were close in topic but wrong in detail, especially around time, missing facts, and unsupported additions. LoCoMo-Refined tightens the judge and audits the QA set so scores better reflect real memory reliability.

  • ๐Ÿ“ฆ Dataset: data/raw/locomo_refined.json ยท data/public/questions.jsonl
  • โš–๏ธ Official judge: Qwen/Qwen3-14B
  • ๐Ÿš€ Evaluation: scripts/run_eval.sh

News

  • [Coming soon] ๐Ÿ”ฅ Technical report.
  • [2026-04-26] ๐Ÿ† New SOTA! MemoraX AI reached 82.65% on LoCoMo-Refined.
  • [2026-04-14] ๐ŸŽ‰ Dataset release โ€” LoCoMo-Refined is now open for long-conversation memory benchmarking.

Overview

At a Glance

ItemValue
Questions1,382
Revised QA samples337
Human annotators5
Human-alignment samples300
Original judge agreement43.67%
Refined judge agreement86.33%
Official judge modelQwen/Qwen3-14B

What LoCoMo-Refined Changes

This release focuses on two changes: a stricter LLM judge and a cleaner QA set.

ComponentOriginal LoCoMoLoCoMo-Refined
QA qualityContains noisy or ambiguous samples337 samples revised after AI screening and human audit, covering issues such as ambiguous wording, reversed subject-object relationships, and time information inconsistent with the original conversations
Judge behaviorBoundaries are too loose for memory evaluationStricter judge with clearer correctness rules
Temporal answersCan gloss over vague conversion or unsupported extra detailRequires strict temporal granularity alignment
List / set answersCan allow partial or over-extended answers to passRequires required information to be covered without unsupported additions
EvaluationOriginal setupUnified scripts for lexical and LLM-judge metrics

1. โš–๏ธ A stricter judger

The refined judge is built around one principle:

Inclusive without contradiction, complete without overreach.

That means the answer must cover the required information, avoid unsupported additions, and preserve strict temporal granularity. The full prompt is in src/llm_judge.py; the original judge is kept for comparison.

2. ๐Ÿงน A cleaner dataset

We used AI-assisted screening plus review from 5 human annotators to revise 337 samples with logical or factual issues, including ambiguous wording, reversed subject-object relationships, and inconsistent time information.

The public dataset is available at ./data/raw/locomo_refined.json (1,382 questions). The QA schema uses:

  • answer: list of acceptable gold answers. Each item in the list is a complete correct answer candidate. If a question requires multiple facts, those facts should appear together inside one answer string; they are not split across list items as a required set.

Evaluation Principle

Inclusive without contradiction, complete without overreach.

A prediction is considered correct only if it:

  1. includes all required information from the gold answer;
  2. does not contradict the gold answer;
  3. does not introduce unsupported extra details;
  4. preserves the correct temporal granularity;
  5. handles list-style answers without missing required items or adding unsupported ones.

What We Hope This Benchmark Solves

LoCoMo-Refined is designed to make memory scores more meaningful by exposing time drift, missing facts, redundant details, and unsupported claims that a looser judge may miss.

๐Ÿ“Š Evaluation Results

We re-scored the same system predictions with the LoCoMo-Refined judge. The drop is the absolute decrease from the original LoCoMo judge in percentage points.

SystemLoCoMo-Refined scoreDrop vs. original judge
MemoraX AI82.65%N/A
EverMemOS58.25%22.07%
MemOS63.60%17.30%
MemPalace58.68%15.78%
Mem048.91%15.56%

๐Ÿš€ Quick Start

1. Environment setup

Requirements:

  • Python 3.11+
  • The openai and tenacity packages can be installed

Create a Python 3.11 environment:

cd /path/to/LoCoMo_refined
conda create -n locomo-refined python=3.11 -y
conda activate locomo-refined
pip install openai tenacity
export LOCOMO_PYTHON_BIN="$(which python)"

Or use an existing environment:

cd /path/to/LoCoMo_refined
conda activate <your-env-name>
python --version
python -m pip show openai tenacity
export LOCOMO_PYTHON_BIN="$(which python)"

2. Prepare the prediction file

By default, the evaluator reads ./outputs/predictions.jsonl. Each line should contain:

{"qa_id":"conv-26#q0000","predicted_answer":"7 May 2023"}
{"qa_id":"conv-26#q0001","predicted_answer":"2022"}

The qa_id values should match ./data/public/questions.jsonl.

3. Run lexical evaluation

./scripts/run_eval.sh --metrics f1 bleu

The evaluation outputs are written by default to:

  • ./outputs/predictions_scored.jsonl
  • ./outputs/predictions_scored_summary.json
  • ./outputs/predictions_scored_summary.md

4. Run LLM Judge evaluation

Configure the evaluator:

export EVALUATOR_MODEL=qwen3-14b
# Optional: set this if you use a custom OpenAI-compatible endpoint
export EVALUATOR_API_BASE=https://your-endpoint/v1
# Optional: set API key if your endpoint requires authentication
export EVALUATOR_API_KEY=your_api_key

Then run:

./scripts/run_eval.sh --metrics llm f1 bleu --llm-judge refined

LoCoMo-Refined's official judge LLM is Qwen3-14B. Non-Qwen models trigger a warning and require confirmation.


Reference

โš™๏ธ Judge Configuration

ItemValue
Judge modelQwen/Qwen3-14B
Temperature0.0
Thinking modeDisabled when supported
Judge promptsrc/llm_judge.py
Runtimesrc/llm_judge_runtime.py
Default judgerefined
Alternative judgeoriginal

Accepted model aliases for EVALUATOR_MODEL:

qwen3-14b
qwen3_14b
Qwen/Qwen3-14B
qwen/qwen3-14b
dashscope/qwen3-14b   (vendor-prefixed variants ending with the above)

If a non-Qwen model is specified, the script will warn and require manual confirmation before continuing.

Prediction Format

FieldTypeDescription
qa_idstringQuestion ID; should match data/public/questions.jsonl
predicted_answerstringModel-generated answer
{"qa_id":"conv-26#q0000","predicted_answer":"7 May 2023"}

Dataset Schema

data/public/questions.jsonl:

FieldTypeDescription
qa_idstringUnique question ID (<sample_id>#<index>)
sample_idstringSource conversation ID
conversation_idxintSource conversation index
qa_indexintQuestion index within the source conversation
speaker_astringFirst participant in the conversation
speaker_bstringSecond participant in the conversation
questionstringMemory question
answerlist[string]Acceptable complete gold answer candidates; any one candidate can be matched
categorystringQuestion category
is_multi_modalityboolWhether the question involves an image
evidencelist[string]Supporting dialogue turn IDs
evidence_messageslist[object]Resolved supporting turns when the evidence IDs can be matched

data/public/conversations.jsonl:

FieldTypeDescription
sample_idstringConversation ID
conversation_idxintConversation index
speaker_astringFirst participant
speaker_bstringSecond participant
session_countintNumber of sessions
message_countintNumber of text messages
multimodal_message_countintNumber of messages with image/caption/query context
image_countintNumber of referenced images
sessionslist[object]Session objects, each with session_index, date_time, and messages
conversation_history_textstringFlattened text-only conversation history
conversation_history_multimodal_textstringFlattened conversation history including image, caption, and query context

Messages inside sessions[].messages include dia_id, speaker, role, text, images, blip_caption, query, and has_multimodal_context.

๐Ÿ“Š Judge Validation

On 300 manually annotated samples, Qwen/Qwen3-14B + the refined prompt reached 86.33% agreement with human annotations, compared with 43.67% for the original LoCoMo setup.

Judge SetupModelHuman Agreement
Original LoCoMo judgeGPT-4o-mini43.67%
LoCoMo-Refined judgeQwen/Qwen3-14B86.33%

This suggests that the refined judge moves the decision boundary closer to human consensus rather than simply making the benchmark harsher.

Repository Structure

.
โ”œโ”€โ”€ data/
โ”‚   โ”œโ”€โ”€ raw/
โ”‚   โ”‚   โ””โ”€โ”€ locomo_refined.json        # Full annotated dataset (1,382 questions)
โ”‚   โ””โ”€โ”€ public/
โ”‚       โ”œโ”€โ”€ questions.jsonl            # Public QA format
โ”‚       โ”œโ”€โ”€ conversations.jsonl        # Conversation context
โ”‚       โ”œโ”€โ”€ manifest.json
โ”‚       โ””โ”€โ”€ submission_template.jsonl  # Blank prediction template
โ”œโ”€โ”€ scripts/
โ”‚   โ”œโ”€โ”€ run_eval.sh                    # Main evaluation entry point
โ”‚   โ”œโ”€โ”€ build_predictions.py
โ”‚   โ”œโ”€โ”€ env.sh
โ”‚   โ””โ”€โ”€ export_dataset.sh
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ llm_judge.py                   # Judge prompt definitions
โ”‚   โ”œโ”€โ”€ llm_judge_runtime.py           # Judge inference logic
โ”‚   โ”œโ”€โ”€ evaluate.py
โ”‚   โ”œโ”€โ”€ bleu_f1.py
โ”‚   โ”œโ”€โ”€ export.py
โ”‚   โ””โ”€โ”€ summarize.py
โ”œโ”€โ”€ outputs/                           # Evaluation outputs
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ LICENSE.txt
โ””โ”€โ”€ NOTICE

License and Citation

License and Attribution

LoCoMo-Refined is released under CC BY-NC 4.0. This benchmark modifies the original LoCoMo benchmark; see NOTICE for attribution and modification details.

Citation

@misc{locomo_refined_2026,
  author = {Mem-eval-suite Team},
  title  = {LoCoMo-Refined: Recalibrating LoCoMo for Long-Conversation Memory Evaluation},
  year   = {2026},
  url    = {https://github.com/mem-eval-suite/LoCoMo_refined}
}