01事前登録
仮説・指標・λ 掃引・反証条件は、どの実行よりも前に PREREGISTRATION.md にコミットされます。採点と結果マッピングは先に書かれユニットテスト済み —— 後から指標を選んで有利な結果を作ることはできません。
指標の問題
対称的なスコアはすべてに答えるメモリに報酬を与えます —— store が支えられない質問まで含めて。VeriBench はデプロイが実際に支払うようにメモリを採点します:NET(λ) = (正解 − λ·誤答) / n。λ は沈黙に対する誤答の申告コストです。法務・医療は高い λ で、ブレインストーミングは低い λ で運用します。ひとつの数字を λ ∈ {1, 2, 5, 10} で掃引 —— どの実行よりも前に固定。
✓ LLM 審判なし・ネットワークなし・リーダーボード劇場なし —— 1 コマンド、生の JSON をリポジトリにコミット。
メモリのベンチマークは「どれだけ返るか」を測ります。「誤って返るもの」に値段を付けるものはありません。
コーパスの回答可能な半分では、ゲート付きメモリと生のベクトルストアはほぼ同一の検索結果を返します —— recall@k は違いを見ません。違いが現れるのは store が答えられない質問です:棄権閾値のないメモリは、それでも自信満々に最近傍を返します。本番ではそれは捏造された回答であり、対称的なベンチマークでは不可視です。
NET(λ) は構造的にそれを可視化します:正解は +1、誤答は −λ、沈黙は 0。損益分岐の精度は λ/(1+λ) —— Verimem の SLA ノブが store を合わせるのと同じ閾値です。ベンチマークは、運用者が調整に使うまさにその数字で store を測ります。
仮説・指標・λ 掃引・反証条件は、どの実行よりも前に PREREGISTRATION.md にコミットされます。採点と結果マッピングは先に書かれユニットテスト済み —— 後から指標を選んで有利な結果を作ることはできません。
私たちが書いていない実データ:HaluEval QA と SQuAD v2(回答可能+回答不能の互いに素なスプリット)。正解判定は id で決定可能な検索 —— ループのどこにも LLM 審判はいません。
シャッフルした store は深く負に落ちなければならず(実際:NET(1) = −0.94)、閾値を切った同一検索は回答不能で捏造しなければなりません(実際:誤答 100 件)。対照が通ればベンチマークが壊れている —— そのために対照があります。
直接対決は両エンジンで同一の embedder(multilingual-e5-base)をオフラインで使用。mem0 は raw-store モード(その LLM は一度も呼ばれません —— この軸は省略ではなく申告によりスコープ外です)。
| システム | ✓ | ✗ | ∅ | coverage | NET(1) | NET(2) | NET(5) | NET(10) | λ からネガティブ |
|---|---|---|---|---|---|---|---|---|---|
| Verimem · 閾値 τ=0.8(プロダクト既定) | 182 | 4 | 114 | 0.62 | +0.593 | +0.580 | +0.540 | +0.473 | 45.5 |
| mem0 2.0.11 · 出荷状態(閾値なし) | 200 | 100 | 0 | 1.00 | +0.333 | 0.000 | −1.000 | −2.667 | 2.0 |
| mem0 + 後付け閾値 0.75(評価セットで調整) | 166 | 0 | 134 | 0.55 | +0.553 | +0.553 | +0.553 | +0.553 | 決して |
| 同じ store、閾値 OFF(τ=0 対照) | 192 | 100 | 8 | 0.97 | +0.307 | −0.027 | −1.027 | −2.693 | 1.9 |
| シャッフル対照(sanity:失敗すべき) | 5 | 287 | 8 | 0.97 | −0.940 | −1.897 | −4.767 | −9.550 | 0.02 |
両方向から正直に読んでください:出荷状態の mem0 は λ=2 を超えるとネットで負に転じます —— 回答不能の半分で 100 件の捏造回答。Verimem のプロダクト既定は λ≈45 まで正のまま。しかし閾値はどのエンジンにも後付けできます:この評価セットで調整した閾値なら mem0 はフラットな +0.553 に達し —— このコーパスでは λ≥5 で私たちの既定を上回ります。残る違い:エンジン自体は閾値を同梱しない、後付け閾値はテストセット上で選ばれた、そしてフラットな線は確信のないものには一切答えないことを意味します —— coverage 0.55 対 0.62、λ=1 で正解 182 対 166。
| システム | ✓ | ✗ | ∅ | coverage | NET(1) | NET(2) | NET(5) | NET(10) | λ からネガティブ |
|---|---|---|---|---|---|---|---|---|---|
| Verimem · 閾値 τ=0.8(プロダクト既定) | 163 | 49 | 88 | 0.71 | +0.380 | +0.217 | −0.273 | −1.090 | 3.3 |
| Verimem · 最良閾値 0.85(評価セットで調整) | 98 | 7 | 195 | 0.35 | +0.303 | +0.280 | +0.210 | +0.093 | 14.0 |
| mem0 2.0.11 · 出荷状態(閾値なし) | 200 | 100 | 0 | 1.00 | +0.333 | 0.000 | −1.000 | −2.667 | 2.0 |
| mem0 + 後付け閾値 0.80(評価セットで調整) | 44 | 0 | 256 | 0.15 | +0.147 | +0.147 | +0.147 | +0.147 | 決して |
SQuAD のディストラクタ文はスコア帯を圧縮し、それが表れています:プロダクト既定では crossover が λ≈3.3 まで下がり、λ=10 で NET を正に保つには coverage 0.35 を支払います。棄権はノブであり、魔法ではありません —— 正直さの値段はコーパスが決めます。誤りは、この表を隠すことです。
上の表:外部データ、回答可能+回答不能、閾値オン vs オフ vs 競合、シャッフル対照。捏造が値付けされたイベントになる軸です。
疑似相関を忠実に裏付けた store は do(X) の質問に自信満々に誤答し —— λ=1 でもネットで負になります。来歴は因果ではありません。両者を区別できないベンチマークは、その混同に報酬を与えます。
共謀(N 個の ID、単一のフィード)+信頼されたスリーパー。ネットで正を保つのは2 チャネルの信頼ポリシー —— 独立した裏付けと結果フィードバック —— だけ。単独チャネルはそれぞれ 2 つの攻撃のうち片方に敗れます。Verimem の 2 チャネル source-trust の背後にある軸です。
全軸・決定的・API キー不要
git clone https://github.com/aureliocpr-ctrl/verimem && cd verimem
pip install -e .
python -m benchmark.veribench.run_all # every axis, one reproducible entrypoint 仕様・事前登録・すべての生の結果 JSON はリポジトリの benchmark/veribench/ と benchmark/results/ にあります。競合の参加を歓迎します —— mem0 アダプタが動く実例としてツリー内にあります。あなたのエンジンの公式アダプタを PR してください。同じ土俵で実行します。