Benchmarks / LoCoMo
LoCoMo
Ten long conversations, 1,540 questions with annotated evidence turns. Hanzo Context measured against cosine over turns and against the annotated gold turns, on the same split, embedder, reader and k.
- dataset
- LoCoMo
- licence
- CC BY-NC 4.0
- introduced by
- Evaluating Very Long-Term Conversational Memory of LLM Agents — Maharana, Lee, Tulyakov, Bansal, Barbieri, Fang, ACL 2024
- harness
- hanzoai/cloud · bench/brain
- our paper
- Hops Do Not Fix Multi-Hop Retrieval
node results.mjsregenerates every table on this page from the raw runs
What is measured
Ten conversations, 5,882 turns, 1,540 questions, each annotated with the turns that answer it. Retrieval is scored against those turns; answering is scored by token F1 and exact match under LoCoMo’s own normalisation. Configurations are chosen on conversations 0–2 and frozen at a commit before conversations 3–9 run once. Adversarial questions are excluded, as Mem0 and Zep exclude them, and the reason is arithmetic rather than convenience: a system that replies “No information available” to every question scores 0.228 on the full set, above every arm that has to find its own evidence, because the metric awards a point for declining a trap. Any aggregate over the whole set rewards silence, so there is no aggregate over the whole set here.
Retrieval
Each row adds one candidate generator — BM25, the atomic fact index, canonical entities, the timeline, adjacency, one hop of typed expansion, then a second retrieval hop asked with what the first resolved. On the held-out split multi-hop ALL@20 goes from 18.8 to 37.5 and R@20 from 70.9 to 80.7. It costs candidates and time: 77 candidates examined against 40, and 1.67 ms against 0.55 ms — three times the retrieval latency, on a budget three orders of magnitude below the reader that consumes the result. The greyed rows are the shapes that lost, kept because a design is only informative next to what it was chosen over.
all ten conversations · zen-embedding-0.6b · k=20
facts LoCoMo’s own observation annotations · weights frozen on dev at 33d0f8749bd1 · ALL = every annotated turn inside the top 20; ANY = at least one; R@20 = |retrieved ∩ gold| / |gold|
| configuration | multi-hop ALL | multi-hop ANY | single-hop ALL | temporal ALL | open-domain ALL | R@k | nDCG@k | supported | candidates | tokens/q | p50 ms |
|---|---|---|---|---|---|---|---|---|---|---|---|
| semantic only | 22.7 | 79.8 | 78.2 | 77.3 | 33.7 | 71.9 | 49.6 | 81.0 | 40 | 660 | 0.55 |
| +lexical | 22.7 | 78.0 | 82.5 | 78.8 | 37.0 | 74.6 | 53.2 | 83.3 | 52 | 665 | 0.61 |
| +facts | 36.9 | 88.3 | 82.3 | 82.6 | 42.4 | 78.2 | 59.6 | 86.4 | 71 | 787 | 0.83 |
| +adjacency | 39.0 | 88.7 | 84.2 | 83.5 | 44.6 | 79.7 | 61.4 | 87.8 | 74 | 782 | 0.83 |
| +iterative hops | 39.0 | 87.9 | 86.8 | 84.4 | 45.7 | 80.9 | 62.6 | 88.0 | 76 | 788 | 1.65 |
| failed: global RRF | 33.7 | 89.0 | 86.8 | 83.8 | 40.2 | 80.5 | 56.2 | 89.0 | 137 | 762 | 1.73 |
all ten conversations · all-MiniLM-L6-v2 · k=10
facts LoCoMo’s own observation annotations · weights frozen on dev at 33d0f8749bd1 · ALL = every annotated turn inside the top 10; ANY = at least one; R@10 = |retrieved ∩ gold| / |gold|
| configuration | multi-hop ALL | multi-hop ANY | single-hop ALL | temporal ALL | open-domain ALL | R@k | nDCG@k | supported | candidates | tokens/q | p50 ms |
|---|---|---|---|---|---|---|---|---|---|---|---|
| semantic only | 9.6 | 49.6 | 51.4 | 46.1 | 16.3 | 45.3 | 31.1 | 53.1 | 40 | 283 | 0.25 |
| +lexical | 13.8 | 58.9 | 67.2 | 62.0 | 23.9 | 59.2 | 43.7 | 67.6 | 54 | 301 | 0.31 |
| +facts | 20.9 | 73.4 | 73.1 | 72.0 | 25.0 | 66.7 | 52.0 | 75.6 | 73 | 364 | 0.42 |
| +adjacency | 21.6 | 74.5 | 74.6 | 72.6 | 27.2 | 67.7 | 53.3 | 76.3 | 77 | 361 | 0.42 |
| +iterative hops | 24.1 | 78.0 | 77.5 | 73.5 | 27.2 | 70.1 | 55.8 | 78.5 | 78 | 377 | 0.76 |
| failed: global RRF | 20.2 | 74.8 | 73.4 | 74.1 | 28.3 | 67.2 | 48.6 | 76.1 | 143 | 382 | 0.43 |
test split, conversations 3–9 · zen-embedding-0.6b · k=20
facts LoCoMo’s own observation annotations · weights frozen on dev at 33d0f8749bd1 · ALL = every annotated turn inside the top 20; ANY = at least one; R@20 = |retrieved ∩ gold| / |gold|
| configuration | multi-hop ALL | multi-hop ANY | single-hop ALL | temporal ALL | open-domain ALL | R@k | nDCG@k | supported | candidates | tokens/q | p50 ms |
|---|---|---|---|---|---|---|---|---|---|---|---|
| semantic only | 18.8 | 80.3 | 78.3 | 72.3 | 35.6 | 70.9 | 48.8 | 80.5 | 40 | 651 | 0.55 |
| +lexical | 21.2 | 78.4 | 82.8 | 73.6 | 38.4 | 73.9 | 52.9 | 83.2 | 53 | 656 | 0.62 |
| +facts | 35.1 | 88.5 | 83.0 | 78.8 | 43.8 | 77.9 | 58.7 | 86.4 | 71 | 771 | 1.15 |
| +entities | 35.1 | 88.5 | 83.0 | 78.8 | 43.8 | 77.9 | 58.7 | 86.4 | 71 | 771 | 1.10 |
| +timeline | 34.6 | 88.5 | 83.3 | 79.7 | 45.2 | 78.2 | 59.9 | 86.8 | 71 | 769 | 1.04 |
| +adjacency | 37.5 | 88.5 | 84.6 | 80.1 | 45.2 | 79.1 | 60.5 | 87.5 | 75 | 767 | 1.03 |
| +typed graph | 37.5 | 88.5 | 84.6 | 80.1 | 45.2 | 79.1 | 60.5 | 87.5 | 75 | 767 | 0.98 |
| +iterative hops | 37.5 | 88.0 | 87.7 | 81.4 | 45.2 | 80.7 | 61.6 | 87.8 | 77 | 771 | 1.67 |
| failed: PRF | 19.7 | 75.5 | 72.4 | 69.3 | 35.6 | 66.4 | 46.3 | 75.8 | 634 | 665 | 1.10 |
| failed: chain search | 37.5 | 88.0 | 83.8 | 78.8 | 45.2 | 78.5 | 56.7 | 86.3 | 79 | 764 | 1.64 |
| failed: surface entities | 35.6 | 88.0 | 83.0 | 78.8 | 43.8 | 77.9 | 58.2 | 86.2 | 82 | 773 | 0.98 |
| failed: global RRF | 32.2 | 88.5 | 86.7 | 80.1 | 38.4 | 79.6 | 55.5 | 88.4 | 139 | 751 | 1.20 |
Answers
The same questions, answered by a reader from the retrieved context. Within a reader the rows differ only in what was retrieved: cosine over turns, the engine, or the annotated gold turns. That last row is the ceiling and it is the column to read first, because it separates retrieval’s share of the error from the reader’s.
The comparison below is gemma4:31b on the 208 multi-hop questions of the test split, because it is the one that finished: the same reader answered every one of them under all three policies. Cosine reaches 36.3 token F1, the engine 39.0, and the annotated gold turns 50.8. So retrieval is worth 2.7 points here and perfect retrieval would be worth about 11.8 more — the larger part of the remaining multi-hop error is the reader, not what was retrieved.
3 readers finished the same questions from the same context, which puts a number on that share: gemma4:31b 39.0, enso-flash 43.1, gpt-oss-120b 43.1 — a spread of 4.1 points from the choice of reader alone, against the 2.7 points retrieval contributes. That is why every table here names its reader, and why a score quoted without one is not a score.
locomo-all-single-k20-gemma4-31b
k=20 · reader gemma4:31b · 282 of 282 answered · commit ddc076f5dd0506ce50428416c336e45c4a7ada73 · run locomo-all-single-k20-gemma4-31b
| questions | n | in set | F1 | EM | tokens/q |
|---|---|---|---|---|---|
| all | 282 | 282 | 37.6[33.6, 41.5] | 9.9[6.7, 13.5] | 835 |
| all:multi-hop | 282 | 282 | 37.6[33.6, 41.5] | 9.9[6.7, 13.5] | 835 |
| dev | 74 | 74 | 41.1[33.2, 49.0] | 6.8[1.4, 12.2] | 831 |
| dev:multi-hop | 74 | 74 | 41.1[33.2, 49.0] | 6.8[1.4, 12.2] | 831 |
| test | 208 | 208 | 36.3[31.5, 40.9] | 11.1[7.2, 15.4] | 836 |
| test:multi-hop | 208 | 208 | 36.3[31.5, 40.9] | 11.1[7.2, 15.4] | 836 |
locomo-all-context-k20-gemma4-31b
k=20 · reader gemma4:31b · 282 of 282 answered · commit ddc076f5dd0506ce50428416c336e45c4a7ada73 · run locomo-all-context-k20-gemma4-31b
| questions | n | in set | F1 | EM | tokens/q |
|---|---|---|---|---|---|
| all | 282 | 282 | 40.5[36.4, 44.3] | 9.9[6.7, 13.5] | 971 |
| all:multi-hop | 282 | 282 | 40.5[36.4, 44.3] | 9.9[6.7, 13.5] | 971 |
| dev | 74 | 74 | 44.7[36.8, 53.2] | 9.5[4.1, 17.6] | 984 |
| dev:multi-hop | 74 | 74 | 44.7[36.8, 53.2] | 9.5[4.1, 17.6] | 984 |
| test | 208 | 208 | 39.0[34.7, 43.6] | 10.1[6.3, 14.4] | 967 |
| test:multi-hop | 208 | 208 | 39.0[34.7, 43.6] | 10.1[6.3, 14.4] | 967 |
locomo-all-oracle-k20-gemma4-31b
k=20 · reader gemma4:31b · 282 of 282 answered · commit ddc076f5dd0506ce50428416c336e45c4a7ada73 · run locomo-all-oracle-k20-gemma4-31b
| questions | n | in set | F1 | EM | tokens/q |
|---|---|---|---|---|---|
| all | 282 | 282 | 53.0[49.0, 57.0] | 16.0[12.1, 20.2] | 169 |
| all:multi-hop | 282 | 282 | 53.0[49.0, 57.0] | 16.0[12.1, 20.2] | 169 |
| dev | 74 | 74 | 59.2[51.9, 67.0] | 13.5[6.8, 21.6] | 135 |
| dev:multi-hop | 74 | 74 | 59.2[51.9, 67.0] | 13.5[6.8, 21.6] | 135 |
| test | 208 | 208 | 50.8[46.0, 55.7] | 16.8[12.0, 21.6] | 180 |
| test:multi-hop | 208 | 208 | 50.8[46.0, 55.7] | 16.8[12.0, 21.6] | 180 |
locomo-all-context-k20-enso-flash
k=20 · reader enso-flash · 282 of 282 answered · commit 9eab30f73493a28244d1cd00b3fa53b83fdfba3c · run locomo-all-context-k20-enso-flash
| questions | n | in set | supported | F1 | EM | tokens/q |
|---|---|---|---|---|---|---|
| all | 282 | 1536 | 13.5 | 45.1[41.2, 49.1] | 13.8[9.9, 18.1] | 971 |
| dev | 74 | 383 | 13.5 | 50.9[42.8, 58.6] | 14.9[6.8, 23.0] | 984 |
| test | 208 | 1153 | 13.5 | 43.1[37.9, 47.5] | 13.5[9.1, 18.3] | 967 |
locomo-all-context-k20-gpt-oss-120b
k=20 · reader gpt-oss-120b · 282 of 282 answered · commit 9eab30f73493a28244d1cd00b3fa53b83fdfba3c · run locomo-all-context-k20-gpt-oss-120b
| questions | n | in set | supported | F1 | EM | tokens/q |
|---|---|---|---|---|---|---|
| all | 282 | 1536 | 13.5 | 45.3[41.6, 49.5] | 13.5[9.9, 17.4] | 971 |
| dev | 74 | 383 | 13.5 | 51.5[42.9, 59.4] | 14.9[6.8, 23.0] | 984 |
| test | 208 | 1153 | 13.5 | 43.1[38.4, 47.8] | 13.0[8.7, 17.3] | 967 |
locomo-all-cer-k20-gemma4-31b
k=20 · reader gemma4:31b · 282 of 282 answered · commit ddc076f5dd0506ce50428416c336e45c4a7ada73 · run locomo-all-cer-k20-gemma4-31b
| questions | n | in set | F1 | EM | tokens/q |
|---|---|---|---|---|---|
| all | 282 | 282 | 40.7[36.7, 44.9] | 11.0[7.4, 14.5] | 968 |
| all:multi-hop | 282 | 282 | 40.7[36.7, 44.9] | 11.0[7.4, 14.5] | 968 |
| dev | 74 | 74 | 44.5[36.6, 53.1] | 10.8[4.1, 17.6] | 964 |
| dev:multi-hop | 74 | 74 | 44.5[36.6, 53.1] | 10.8[4.1, 17.6] | 964 |
| test | 208 | 208 | 39.3[34.6, 44.2] | 11.1[7.2, 15.4] | 970 |
| test:multi-hop | 208 | 208 | 39.3[34.6, 44.2] | 11.1[7.2, 15.4] | 970 |
locomo-all-cer-k20-enso-flash
k=20 · reader enso-flash · 282 of 282 answered · commit 885a21a63c3254415e40555f7905c8c04aa0be65 · run locomo-all-cer-k20-enso-flash
| questions | n | in set | supported | F1 | EM | tokens/q |
|---|---|---|---|---|---|---|
| all | 282 | 1536 | 11.0 | 42.5[38.1, 46.5] | 11.7[8.2, 15.2] | 968 |
| all:multi-hop | 282 | 282 | 11.0 | 42.5[38.1, 46.5] | 11.7[8.2, 15.2] | 968 |
| dev | 74 | 383 | 10.8 | 49.6[41.3, 57.7] | 14.9[6.8, 24.3] | 964 |
| dev:multi-hop | 74 | 74 | 10.8 | 49.6[41.3, 57.7] | 14.9[6.8, 24.3] | 964 |
| test | 208 | 1153 | 11.1 | 39.9[35.5, 45.0] | 10.6[6.7, 14.9] | 970 |
| test:multi-hop | 208 | 208 | 11.1 | 39.9[35.5, 45.0] | 10.6[6.7, 14.9] | 970 |
locomo-all-cer-k20-gpt-oss-120b
k=20 · reader gpt-oss-120b · 282 of 282 answered · commit 885a21a63c3254415e40555f7905c8c04aa0be65 · run locomo-all-cer-k20-gpt-oss-120b
| questions | n | in set | supported | F1 | EM | tokens/q |
|---|---|---|---|---|---|---|
| all | 282 | 1536 | 11.0 | 42.6[38.8, 46.9] | 11.3[7.8, 15.2] | 968 |
| all:multi-hop | 282 | 282 | 11.0 | 42.6[38.8, 46.9] | 11.3[7.8, 15.2] | 968 |
| dev | 74 | 383 | 10.8 | 48.9[40.5, 57.0] | 13.5[6.8, 21.6] | 964 |
| dev:multi-hop | 74 | 74 | 10.8 | 48.9[40.5, 57.0] | 13.5[6.8, 21.6] | 964 |
| test | 208 | 1153 | 11.1 | 40.4[35.9, 45.2] | 10.6[6.7, 14.9] | 970 |
| test:multi-hop | 208 | 208 | 11.1 | 40.4[35.9, 45.2] | 10.6[6.7, 14.9] | 970 |
locomo-all-single-k20-qwen3.6-35b-a3b — partial
k=20 · reader qwen3.6:35b-a3b · 1525 of 1536 answered · commit bea5d0ad184462b76db19ad2d601f39c329b7c09 · run locomo-all-single-k20-qwen3.6-35b-a3b
| questions | n | in set | F1 | EM | tokens/q |
|---|---|---|---|---|---|
| all | 1525 | 1525 | 48.8[46.6, 51.0] | 26.2[23.9, 28.5] | 841 |
| all:multi-hop | 282 | 282 | 36.7[32.9, 41.0] | 9.2[6.0, 12.8] | 835 |
| all:temporal | 321 | 321 | 47.5[43.3, 51.7] | 17.4[13.7, 21.8] | 856 |
| all:open-domain | 92 | 92 | 17.7[11.5, 25.4] | 12.0[5.4, 19.6] | 781 |
| all:single-hop | 830 | 830 | 56.9[54.1, 59.5] | 37.0[33.9, 40.1] | 844 |
| dev | 383 | 383 | 48.8[44.9, 52.7] | 24.8[20.6, 28.7] | 864 |
| dev:multi-hop | 74 | 74 | 40.9[33.4, 49.6] | 8.1[2.7, 14.9] | 831 |
| dev:temporal | 90 | 90 | 52.7[45.2, 60.3] | 21.1[13.3, 30.0] | 893 |
| dev:open-domain | 19 | 19 | 4.5[0.0, 12.0] | 0.0[0.0, 0.0] | 782 |
| dev:single-hop | 200 | 200 | 54.2[48.2, 59.7] | 35.0[28.5, 41.5] | 872 |
| test | 1142 | 1142 | 48.8[46.5, 51.4] | 26.7[24.2, 29.5] | 833 |
| test:multi-hop | 208 | 208 | 35.2[31.0, 40.3] | 9.6[5.8, 13.5] | 836 |
| test:temporal | 231 | 231 | 45.4[40.5, 50.5] | 16.0[11.7, 20.8] | 842 |
| test:open-domain | 73 | 73 | 21.2[13.4, 29.6] | 15.1[6.8, 23.3] | 781 |
| test:single-hop | 630 | 630 | 57.7[54.5, 61.2] | 37.6[33.8, 41.4] | 835 |
locomo-all-context-k20-qwen3.6-35b-a3b — partial
k=20 · reader qwen3.6:35b-a3b · 1525 of 1536 answered · commit 12468828cfba9497ebbb927af840534bb7e3fce2 · run locomo-all-context-k20-qwen3.6-35b-a3b
| questions | n | in set | F1 | EM | tokens/q |
|---|---|---|---|---|---|
| all | 1525 | 1525 | 53.3[51.2, 55.4] | 29.0[26.9, 31.3] | 969 |
| all:multi-hop | 282 | 282 | 43.0[38.7, 47.1] | 13.1[9.6, 17.4] | 971 |
| all:temporal | 321 | 321 | 49.5[45.1, 53.6] | 18.1[14.0, 22.7] | 994 |
| all:open-domain | 92 | 92 | 19.8[13.0, 27.4] | 13.0[6.5, 20.7] | 917 |
| all:single-hop | 830 | 830 | 61.9[59.1, 64.4] | 40.4[37.1, 43.5] | 964 |
| dev | 383 | 383 | 51.9[48.0, 55.8] | 26.4[22.2, 30.8] | 1015 |
| dev:multi-hop | 74 | 74 | 45.1[36.6, 53.6] | 13.5[6.8, 21.6] | 984 |
| dev:temporal | 90 | 90 | 52.0[44.2, 59.0] | 18.9[11.1, 26.7] | 1058 |
| dev:open-domain | 19 | 19 | 7.4[1.3, 16.0] | 0.0[0.0, 0.0] | 987 |
| dev:single-hop | 200 | 200 | 58.6[52.9, 64.0] | 37.0[30.5, 44.0] | 1010 |
| test | 1142 | 1142 | 53.7[51.5, 56.1] | 29.9[27.3, 32.6] | 954 |
| test:multi-hop | 208 | 208 | 42.3[37.9, 47.0] | 13.0[8.7, 17.8] | 967 |
| test:temporal | 231 | 231 | 48.5[43.3, 53.3] | 17.7[13.0, 22.9] | 969 |
| test:open-domain | 73 | 73 | 23.0[15.1, 31.7] | 16.4[8.2, 26.0] | 899 |
| test:single-hop | 630 | 630 | 63.0[59.9, 66.1] | 41.4[37.6, 45.2] | 950 |
locomo-all-oracle-k20-qwen3.6-35b-a3b — partial
k=20 · reader qwen3.6:35b-a3b · 1525 of 1536 answered · commit 12468828cfba9497ebbb927af840534bb7e3fce2 · run locomo-all-oracle-k20-qwen3.6-35b-a3b
| questions | n | in set | F1 | EM | tokens/q |
|---|---|---|---|---|---|
| all | 1525 | 1525 | 61.8[59.7, 63.8] | 34.6[32.5, 36.9] | 82 |
| all:multi-hop | 282 | 282 | 55.6[51.2, 59.9] | 20.2[15.6, 24.8] | 169 |
| all:temporal | 321 | 321 | 54.4[50.3, 58.7] | 22.7[18.4, 27.7] | 64 |
| all:open-domain | 92 | 92 | 26.4[18.7, 34.9] | 19.6[12.0, 28.3] | 117 |
| all:single-hop | 830 | 830 | 70.8[68.2, 73.1] | 45.8[42.2, 49.0] | 56 |
| dev | 383 | 383 | 61.2[57.4, 65.1] | 32.6[27.9, 37.3] | 76 |
| dev:multi-hop | 74 | 74 | 60.6[53.0, 69.3] | 18.9[10.8, 28.4] | 135 |
| dev:temporal | 90 | 90 | 57.0[49.1, 64.5] | 28.9[20.0, 37.8] | 63 |
| dev:open-domain | 19 | 19 | 9.1[2.1, 17.4] | 0.0[0.0, 0.0] | 114 |
| dev:single-hop | 200 | 200 | 68.3[63.2, 73.3] | 42.5[36.0, 49.0] | 56 |
| test | 1142 | 1142 | 62.1[59.9, 64.4] | 35.3[32.5, 38.2] | 84 |
| test:multi-hop | 208 | 208 | 53.9[49.2, 58.9] | 20.7[15.4, 26.4] | 180 |
| test:temporal | 231 | 231 | 53.4[48.3, 58.2] | 20.3[15.2, 25.5] | 64 |
| test:open-domain | 73 | 73 | 31.0[22.2, 41.6] | 24.7[16.4, 35.6] | 118 |
| test:single-hop | 630 | 630 | 71.5[68.8, 74.5] | 46.8[43.0, 51.0] | 56 |
locomo-all-cer-k20-qwen3.6-35b-a3b — partial
k=20 · reader qwen3.6:35b-a3b · 1525 of 1536 answered · commit 12468828cfba9497ebbb927af840534bb7e3fce2 · run locomo-all-cer-k20-qwen3.6-35b-a3b
| questions | n | in set | F1 | EM | tokens/q |
|---|---|---|---|---|---|
| all | 1525 | 1525 | 50.3[48.2, 52.4] | 26.7[24.5, 28.9] | 970 |
| all:multi-hop | 282 | 282 | 40.2[35.9, 44.4] | 11.3[7.8, 15.2] | 968 |
| all:temporal | 321 | 321 | 48.6[44.3, 52.8] | 16.5[12.8, 20.9] | 995 |
| all:open-domain | 92 | 92 | 14.9[9.1, 22.0] | 9.8[4.3, 16.3] | 906 |
| all:single-hop | 830 | 830 | 58.4[55.7, 61.2] | 37.7[34.6, 40.8] | 967 |
| dev | 383 | 383 | 50.4[46.6, 54.4] | 25.1[20.9, 29.8] | 996 |
| dev:multi-hop | 74 | 74 | 43.3[34.8, 51.2] | 10.8[4.1, 18.9] | 964 |
| dev:temporal | 90 | 90 | 52.7[44.8, 60.5] | 17.8[11.1, 26.7] | 1039 |
| dev:open-domain | 19 | 19 | 7.3[1.1, 16.1] | 0.0[0.0, 0.0] | 940 |
| dev:single-hop | 200 | 200 | 56.1[50.6, 61.8] | 36.0[30.0, 42.5] | 994 |
| test | 1142 | 1142 | 50.3[47.9, 52.6] | 27.2[24.7, 29.9] | 961 |
| test:multi-hop | 208 | 208 | 39.1[34.3, 43.7] | 11.5[7.2, 15.9] | 970 |
| test:temporal | 231 | 231 | 47.0[42.0, 52.1] | 16.0[11.7, 21.2] | 978 |
| test:open-domain | 73 | 73 | 16.9[9.8, 24.8] | 12.3[5.5, 20.5] | 897 |
| test:single-hop | 630 | 630 | 59.1[55.7, 62.3] | 38.3[34.6, 42.1] | 959 |
Where it loses
The multi-hop answer gain does not clear its interval. Retrieval’s multi-hop ALL@20 roughly doubles — 18.8 to 37.5 — and the answer gain that follows it, 36.3 to 39.0, sits inside the bootstrap interval of the baseline. Two marginal intervals that overlap do not establish that there is no difference, and they do not establish that there is one. Finding the right turns is not the same problem as reasoning over them, and this benchmark says so.
Open-domain answers are below the baseline. On the 92 open-domain questions the earlier four-term re-rank scores 14.9 token F1 against cosine’s 17.7, on intervals wide enough that the ordering is all the table establishes. It is the one row where a shipped configuration is worse than the thing it replaced, and it is in the table above rather than in a footnote.
The full-question-set runs did not finish. The qwen3.6:35b-a3b runs are the only ones that answer all four question categories rather than multi-hop alone, and each stopped 11 questions short of its declared set. Their tables are above, dimmed, with both counts on them. They are not in the comparison, they carry the only open-domain figures on this page — which is why that loss is quoted from them and labelled — and the honest reading is that the whole-set answer picture on LoCoMo is not settled here yet.
The other LoCoMo harness
hanzoai/semantic · bench/locomo measures the same dataset and its numbers do not belong beside these. It uses lexical retrieval with no embedding model, a fixed extractive reader with no language model anywhere, and all 1,986 questions including the adversarial quarter, reported apart. Its absolute F1 is far below anything on this page for that reason, and comparing the two would be comparing readers, not memories. It has its own page and its own paper.
The other benchmarks
MemoryAgentBench · LongMemEval · RepoBench-R · LoCoMo · subject scope · LoCoMo-Conv · Fleet residency · Live agent footprint · Sandbox cold start · Inference vs llama.cpp · GPQA-Diamond · all of them, and the head-to-head
raw runs, traces, prompts and scoring: hanzoai/cloud · bench/brain · protocol in METHOD.md · every table above regenerated by node results.mjs