Benchmark · LongMemEval-M · full-haystack
77,1 % sur des questions que le moteur n’avait jamais vues.
Tout le monde cite LongMemEval. Presque personne ne court la variante full-haystack, qui pose ~480 sessions distractrices devant chaque question. Nous l’avons courue avec un protocole publié avant le run. Sur 48 questions auxquelles le moteur n’avait jamais répondu, le juge officiel de LongMemEval donne 77,1 % (37/48). Sur les 48 questions qui ont servi à régler le moteur, notre juge strict donne 85,4 % (41/48). Mode hybride : les embeddings et la recherche tournent sur la machine, et un modèle cloud, gemini-3.8-flash, écrit les réponses. Une question ne compte que si deux passes séparées la réussissent toutes les deux. Le protocole et chaque réponse.
En septembre, un audit extérieur a trouvé un verdict faux dans notre résultat d’août. Nous l’avons corrigé, publié un erratum, puis relancé tout le benchmark. Les campagnes précédentes restent documentées plus bas, telles que publiées.
Depuis septembre, un second benchmark est à côté. Sur BEAM, noté par son propre juge officiel, nous faisons 61,7 % au palier 100K et 49,2 % au palier 10M. Le détail.
Ce qu'on publie, et ce qu'on retient
LongMemEval-M, variante full-haystack : ~480 sessions distractrices par question. Deux jeux de 48 questions et deux juges. Les chiffres se lisent côte à côte et ne s’enchaînent jamais comme une progression.
Questions jamais vues
77,1%
37/48 sur un holdout pré-enregistré, juge officiel de LongMemEval
Questions de réglage
85,4%
41/48 sur les questions qui ont servi à régler le moteur, juge strict
LongMemEval-S
—
La variante facile sur laquelle publie le secteur. Nous publions sur le haystack complet
Les deux chiffres se recalculent depuis les réponses publiées, en une commande. Recalcule-les toi-même ↗
LongMemEval-S est la variante facile sur laquelle publie le secteur : 48 sessions de bruit par question au lieu de ~480. On l’a lancée en août, sur un binaire plus ancien, en une seule passe. Les chiffres ci-dessus suivent un protocole publié avant le run, avec deux passes. La passe d’août ne tient aucune de ces règles, donc la case reste vide plutôt que de porter un chiffre que personne ne pourrait nous opposer.
Le moteur dans le temps
Chaque chiffre, dans l'ordre, chacun avec sa preuve.
13 juil. 2026
64,6 %
La ligne de base
La recherche seule, sans moteur de consolidation. 31/48 au juge flexible. C'est la ligne de départ, et chaque verdict est publié.
La campagne ↓14–23 juil. 2026
72,9 %
Le moteur de consolidation
Le rappel multi-sessions passe de 1/8 à 5/8. Publié comme un plancher composé, pas un plafond, et épinglé à son DOI tel que livré.
La campagne ↓4 août 2026
−31 pts
Le levier refusé
Piloter la recherche par la personnalité dégrade mesurablement le rappel. Donc la fonctionnalité la plus séduisante de l'année est livrée en costume, pas en pilote.
Le récit →17 août 2026
72,9 %
Le canal lexical, au juge strict
Un second classement, entièrement local, fusionné par rangs. 35/48 au juge strict, après l’erratum du 28 septembre : un audit extérieur a trouvé un verdict faux, et nous avions d’abord publié 77,1 %.
Le récit →13 sept. 2026
49,2 %
Un second benchmark : BEAM
BEAM (ICLR 2026), noté par son propre juge officiel : 61,7 % au palier 100K, 49,2 % au palier 10M. Un corpus 76 fois plus grand coûte 20 % du score. Dans le papier, les baselines RAG en perdent 22 à 29 %.
La comparaison →30 sept. 2026
77,1 %
La relance, publiée avant de tourner
37/48 sur 48 questions auxquelles le moteur n’avait jamais répondu, juge officiel de LongMemEval, deux passes. Sur les 48 questions de réglage, 41/48 au juge strict.
Chaque réponse ↗Le chiffre de chaque tuile se recalcule depuis les lignes publiées, question par question. audite-les toi-même ↗.
Vitesse
Ce que coûtent une écriture, et un souvenir.
Nous avons mesuré sur une seule machine, un Intel Core Ultra 7 155H, CPU seul, aucun GPU, core-engine 1.2.0, le 2026-08-30. Nous avons lancé deux passes et nous affichons la plus lente. Ce sont nos propres mesures, pas un benchmark jugé comme les scores plus haut.
Écriture
0,10ms
p50 dans le coffre. L'embedding qui la précède n'est pas compté
Rappel vectoriel
20ms
p50, top 10, cache chaud, canal lexical coupé, 10 200 souvenirs
Rappel hybride
108ms
Ce que le chat exécute vraiment : BM25 fusionné au classement
Le rappel hybride est le chemin par défaut depuis le 17 août, et c'est lui qui porte les chiffres ci-dessus. Il classe 200 candidats de profondeur, puis fusionne une passe BM25 sur les mêmes lignes. Ça coûte 5,3× un rappel vectoriel seul. Les deux répondent depuis le cache chaud en RAM, celui que sert l'application. Pendant que ce cache chauffe, un rappel vectoriel retombe sur un scan complet. À cette taille de corpus ce scan coûte 145 ms, et il grandit avec le corpus.
Le chiffre, campagne de juillet
~480 sessions distractrices par question.
La variante honnête. La plus dure.
Il existe une version plus confortable de ce benchmark. C'est celle que l'industrie affiche. Nous avons couru l'autre. Nous publions le chiffre comme un plancher, parce que deux catégories n'ont jamais été rejouées avec le moteur complet, faute de temps de calcul. D'autres modèles restent aussi à tester.
Aucune question n'a été choisie après coup. Nous avons utilisé une seule configuration pour toutes. Un succès ne compte que s'il se reproduit.
Ce qui a été mesuré
| Mesure | Avant | Après | Δ | Conditions |
|---|---|---|---|---|
| Full-haystack, 48 q | 64,6 % | 72,9 % | +8,3 | tous moteurs |
| Multi-session | 1/8 | 5/8 | +4 | la catégorie la plus dure |
| Chemin de requête réel de l'app, 61 q | 78,7 % | 83,6 % | +4,9 | topK 32 |
| Temporel (A/B inline) | 7/10 | 10/10 | +3 | reproduit ×2 |
| Rappel à ~1 M vecteurs | — | 1.000 | — | MNEMO_ANN |
| 100 % local, zéro cloud | — | ~50 % | plancher | Qwen2.5-3B · Vulkan · n=12 · machine chargée |
La ligne « 100 % local » mérite sa précision. C'est un plancher, pas un plafond. Nous avons lancé un modèle de 3 milliards de paramètres sur douze questions, sur une machine occupée à autre chose. Nous n'avons pas encore la puissance nécessaire pour tester les gros modèles locaux à raisonnement. Nous ne savons donc pas jusqu'où ça monte, et nous ne le prétendons pas.
Les leviers qui n'ont rien donné comptent autant. Les registres de relations ont dégradé le score. La passe master aussi. Le pré-tri k-means n'a servi à rien, et le balayage de réserve n'a produit que du bruit. Les nombres premiers ne portent aucun signal mémoriel. Nous avons falsifié cette piste six fois, puis nous l'avons enterrée.
Les échecs
Ce qu'on rate.
Sur le full-haystack, trois questions résistent encore. Voici chacune d'elles, décomposée ligne à ligne.
×2 · structurel au benchmark
Le benchmark empile plusieurs utilisateurs dans une seule mémoire. Le projet d'un inconnu devient indiscernable du tien dans le texte servi. Nous avons vérifié qu'aucun filtre côté réponse ne peut les distinguer. Mnemosyne OS est souverain et sert un seul humain, donc ce mode d'échec n'existe pas chez toi. Nous ne courrons pas après ces deux points.
×1 · notre dette, pas notre design
Un plafond de corpus tronque un sujet trop dense, donc ce qu'on écrit et ce qu'on relit se déséquilibrent. C'est une vraie limite d'ingénierie. Elle a un ticket et elle sera corrigée. Nous ne la maquillons pas en choix.
Ne nous crois pas sur parole
Le grader et les verdicts sont publics. Audite-les.
Le correcteur publié et les verdicts par question te laissent re-dériver le score en une commande. Tu n'as besoin ni de moteur ni de réseau. La méthodo complète, l'analyse des causes et les 16 logs bruts sont ouverts aussi.