신뢰 가능한 메모리의 벤치마크 결정적 · 사전 등록 · self-run

지표의 문제

Recall@k는 자신만만한 오답을 정직한 「모르겠습니다」와 구분하지 못한다.

대칭적인 점수는 모든 것에 답하는 메모리에 보상을 줍니다 —— store가 뒷받침할 수 없는 질문까지 포함해서요. VeriBench는 배포가 실제로 지불하는 방식으로 메모리를 채점합니다: NET(λ) = (정답 − λ·오답) / n. λ는 침묵 대비 오답의 선언된 비용입니다. 법률·의료는 높은 λ로, 브레인스토밍은 낮은 λ로 운영합니다. 숫자 하나를 λ ∈ {1, 2, 5, 10}에서 스윕 —— 어떤 실행보다도 먼저 고정.

LLM 심판 없음, 네트워크 없음, 리더보드 쇼 없음 —— 명령 하나, 원시 JSON은 저장소에 커밋.

기권정직
답 없는 프로브
「Meridian 금고의 접근 코드는?」
store가 답을 뒷받침할 수 없음 —— 임계값 없는 메모리는 그래도 최근접 이웃을 반환합니다.
VeriBench는 그 답에 −λ를 부과하고, 기권은 0입니다.
§01왜 새로운 벤치마크인가

메모리 벤치마크는 얼마나 돌아오는지를 잽니다. 틀리게 돌아오는 것에 값을 매기는 벤치마크는 없습니다.

코퍼스의 답변 가능한 절반에서는 게이트 있는 메모리와 날것의 벡터 스토어가 거의 동일하게 검색합니다 —— recall@k는 차이를 보지 못합니다. 차이는 store가 답할 수 없는 질문에서 나타납니다: 기권 임계값이 없는 메모리는 그래도 최근접 이웃을 완전한 확신으로 반환합니다. 프로덕션에서 그것은 조작된 답이고, 대칭 벤치마크에서는 보이지 않습니다.

NET(λ)는 구조적으로 그것을 보이게 만듭니다: 정답은 +1, 오답은 −λ, 침묵은 0. 손익분기 정확도는 λ/(1+λ) —— Verimem의 SLA 노브가 store를 맞추는 바로 그 임계값입니다. 벤치마크는 운영자가 조정에 쓰는 바로 그 숫자에서 store를 측정합니다.

§02프로토콜 —— 숫자보다 먼저 고정

01사전 등록

가설·지표·λ 스윕·반증 조건은 어떤 실행보다 먼저 PREREGISTRATION.md에 커밋됩니다. 채점과 결과 매핑은 먼저 작성되고 단위 테스트를 거쳤습니다 —— 사후에 지표를 골라 유리한 결과를 만들 수 없습니다.

02외부 코퍼스

우리가 쓰지 않은 실제 데이터셋: HaluEval QA와 SQuAD v2(답변 가능 + 답변 불가 분할, 서로소). 정답 판정은 id로 결정 가능한 검색 —— 루프 어디에도 LLM 심판이 없습니다.

03실패해야 하는 대조군

뒤섞인 store는 깊은 순손실로 떨어져야 하고(실제: NET(1) = −0.94), 임계값을 끈 동일 검색은 답변 불가에서 조작해야 합니다(실제: 오답 100건). 대조군이 통과하면 벤치마크가 고장난 것 —— 대조군이 존재하는 이유입니다.

04같은 조건

맞대결은 두 엔진에서 동일한 embedder(multilingual-e5-base)를 오프라인으로 사용합니다. mem0는 raw-store 모드(그 LLM은 한 번도 호출되지 않음 —— 이 축은 누락이 아니라 선언에 의해 범위 밖입니다).

§03결과 —— HaluEval QA, 프로브 300개(답변 가능 200 + 답변 불가 100)
시스템coverageNET(1)NET(2)NET(5)NET(10)λ부터 순손실
Verimem · 임계값 τ=0.8(제품 기본값) 1824114 0.62 +0.593 +0.580 +0.540 +0.473 45.5
mem0 2.0.11 · 출하 상태(임계값 없음) 2001000 1.00 +0.333 0.000 −1.000 −2.667 2.0
mem0 + 볼트온 임계값 0.75(평가셋에서 조정) 1660134 0.55 +0.553 +0.553 +0.553 +0.553 절대 아님
같은 store, 임계값 OFF(τ=0 대조군) 1921008 0.97 +0.307 −0.027 −1.027 −2.693 1.9
뒤섞인 대조군(sanity: 실패해야 함) 52878 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.

§03bSQuAD v2 —— 더 어려운 코퍼스, 솔직하게
시스템coverageNET(1)NET(2)NET(5)NET(10)λ부터 순손실
Verimem · 임계값 τ=0.8(제품 기본값) 1634988 0.71 +0.380 +0.217 −0.273 −1.090 3.3
Verimem · 최적 임계값 0.85(평가셋에서 조정) 987195 0.35 +0.303 +0.280 +0.210 +0.093 14.0
mem0 2.0.11 · 출하 상태(임계값 없음) 2001000 1.00 +0.333 0.000 −1.000 −2.667 2.0
mem0 + 볼트온 임계값 0.80(평가셋에서 조정) 440256 0.15 +0.147 +0.147 +0.147 +0.147 절대 아님

SQuAD의 방해 지문은 점수 대역을 압축하고, 그것이 드러납니다: 제품 기본값에서 crossover는 λ≈3.3까지 내려가고, λ=10에서 NET을 양수로 유지하려면 coverage 0.35를 지불해야 합니다. 기권은 노브이지 마법이 아닙니다 —— 정직의 값은 코퍼스가 정합니다. 잘못은 이 표를 숨기는 것입니다.

§04검색 너머 —— recall@k가 표현할 수 없는 축

A실제 코퍼스 축

위의 표들: 외부 데이터, 답변 가능 + 답변 불가, 임계값 켬 vs 끔 vs 경쟁사, 뒤섞인 대조군. 조작이 값이 매겨진 사건이 되는 축입니다.

B인과 축

허위 상관을 충실히 뒷받침한 store는 do(X) 질문에 자신만만하게 오답하고 —— λ=1에서도 순손실이 됩니다. 출처는 인과가 아닙니다. 둘을 구분 못 하는 벤치마크는 그 혼동에 보상을 줍니다.

C적대 축

담합(N개의 신원, 단일 피드) + 신뢰받는 슬리퍼. 순이익을 유지하는 것은 2채널 신뢰 정책 —— 독립적 뒷받침 결과 피드백 —— 뿐입니다. 단일 채널은 각각 두 공격 중 정확히 하나에 무너집니다. Verimem의 2채널 source-trust 뒤에 있는 축입니다.

§05실행하기 —— 명령 하나, 원시 파일은 커밋됨

모든 축, 결정적, 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로 보내주시면 같은 조건에서 실행합니다.