BENCHMARKS.md · 最後更新 2026-07-05Graphify 在開放 harness 上與其他系統在同一模型、同一預算、同一裁判下比較:
所有系統共用同一個模型(Kimi K2.6)、相同預算,裁判與第二個獨立裁判盲驗的一致性 90.6%(Cohen's kappa 0.81)。
| 套件 | 資料集 (n) | 指標 | graphify | 場上對手 |
|---|---|---|---|---|
| Memory | LOCOMO (300) | QA accuracy | 45.3% | supermemory 49.7%(11× ingest 成本)· bm25 31.3% · mem0 27.3% |
| Memory | LOCOMO (300) | recall@10 | 0.497 | bm25 0.362 · mem0 0.048 |
| Memory | LongMemEval-S (50) | QA accuracy | 76% | dense RAG 76% · hybrid 74% · mem0 70% |
| Cost | LOCOMO ingest | USD | ~$1.40 | supermemory $15.67 · mem0 $3.48 |
| Cost | graph build | LLM credits | $0 | 多數系統按 token 計費 |
Graphify 用自己的 harness,把其他系統(mem0、supermemory)當 adapter 塞進同一條流水線,所以大家看到的是同一個模型、同一 token 預算、同一個裁判:
ingest -> index -> search -> answer -> grade
(build) (store) (retrieve) (Kimi K2.6) (key-fact coverage)
memory/):graphify 圖檢索 vs 專用記憶系統(mem0、supermemory)與經典基線(BM25、dense RAG、hybrid RRF)。mem0/supermemory 以 self-hosted adapter 形式、透過 proxy 接上同一個 Kimi K2.6。crosstool/):固定程式代理(Claude Opus 4.8、最多 14 回合)在 ERPNext(約 1M 行)上回答評分問題,含 2011–2026 共 689 個每週 AST checkpoints 的時間子套件。答案由 Kimi K2.6 對照「一組正確答案必須包含的原子關鍵事實」評分:
coverage = (covered + 0.5 * partial) / total
每個評分都引述答案原文,所以可稽核而非一個不透明的分數。裁判本身先經盲驗(90.6% 一致、kappa 0.81)——多數發表的記憶基準完全不公開裁判驗證。
--max-spend。依 recall@10 排序:
| 系統 | QA accuracy | recall@10 | Ingest 成本 |
|---|---|---|---|
| graphify (graph-expand) | 45.3% | 0.497 | ~$1.40 |
| hybrid RRF | 43.3% | 0.493 | $0(共享索引) |
| graphify (SurrealDB engine) | 43.3% | 0.485 | $0 |
| dense RAG | 41.3% | 0.439 | $0 |
| BM25 | 31.3% | 0.362 | $0 |
| supermemory | 49.7% | 0.149* | $15.67 |
| mem0 | 27.3% | 0.048 | $3.48 |
* supermemory 的 recall 被 embedder 綁住:它用自己的 768-d 純英文 embedder,而非共用的 BGE-m3。QA accuracy 軸(共用 Kimi 讀者 + 裁判)才是乾淨的比較。
怎麼讀這張表:supermemory 原始 QA 高幾十分,但 ingest 成本約 11 倍、recall 差約 3 倍。Graphify 是測過系統中 LOCOMO 檢索 recall 最好的、共用 embedder 上 QA 最好的,成本約 supermemory 的十分之一——檢索正確記憶的次數約是 mem0 的 10 倍、答案準確度高 18 分。只做 seed 的消融(不圖擴充)仍有 42.7% / $1.40,所以最便宜設定就保有大部分準確度。
| 系統 | QA accuracy | recall@10 |
|---|---|---|
| graphify (graph-expand) | 76% | 0.844 |
| dense RAG | 76% | 0.848 |
| graphify (SurrealDB engine) | 74% | 0.833 |
| hybrid RRF | 74% | 0.822 |
| BM25 | 70% | 0.710 |
| mem0 | 70% | 0.344 |
Graphify 與 dense RAG 並列最佳 QA(76%);dense RAG 在 recall 上小勝(0.848 vs 0.844)。兩者都遠勝 mem0(recall 0.344)。
在約 1M 行的 ERPNext 上,給固定程式代理一個 graphify 工具,把評分問題集(n=6)的關鍵事實覆蓋率從 70.8%(grep+read 基線)拉到 82.0%,每次查詢約 140K token。Graphify 在準確度上勝過掃原始檔,並避開「把整個 repo 塞進每回合」的 context-stuffing 反模式(那要花約 20 倍 token、覆蓋率反而更低)。
689 個每週 AST checkpoints(2011–2026),確定性建圖、零 LLM:
| Checkpoint | Nodes | Edges | Files |
|---|---|---|---|
| 2011-06-08 | 3,069 | 2,900 | 1,032 |
| 2026-06-24 | 22,620 | 48,710 | 3,758 |
15 年間節點成長約 7 倍、邊成長約 17 倍。程式庫越大,純詞彙檢索找到的答案越少,而圖與語意檢索跟著規模成長,AST 抽取本身保持穩定。
設 MOONSHOT_API_KEY,資料集抓到 harness 文件中說明的本機布局,每次跑遵守 --max-spend 並寫 spend ledger:
# 記憶(LOCOMO)——呼叫 SurrealDB engine 那一行(43.3%);graph-expand 頭條(45.3%)是同一 harness 的獨立 adapter
python memory/runner.py --phase 3 --split locomo --n 300 \
--adapters graphify_v1_surreal --cn natural --workers 6 --max-spend 15
# 程式碼跨工具(ERPNext)
python crosstool/run.py --repo erpnext --max-spend <budget>
BENCHMARKS.md。這份基準測試的核心價值在於「公平比較」:所有系統用同一個模型(Kimi K2.6)、同一 token 預算、同一個裁判。這在記憶系統基準中很少見——多數發表的基準不公開裁判驗證。
關鍵數字:Graphify 在 LOCOMO 上的 recall@10 = 0.497,是 mem0 的約 10 倍。QA accuracy 45.3% 比 supermemory 低 4.4 分,但 ingest 成本只要它的約 1/11。這反映了「圖檢索 vs 向量檢索」的權衡:圖結構提供了更好的關係理解,但需要更多的預處理。
程式碼智慧方面,Graphify 在 ERPNext(約 1M 行)上把關鍵事實覆蓋率從 70.8% 拉到 82.0%,證明了「用圖取代 grep」的實際價值。
MOONSHOT_API_KEY 環境變數。python memory/runner.py --phase 3 --split locomo --n 300 --adapters graphify_v1_surreal --cn natural --workers 6 --max-spend 15。| 錯誤訊息 | 原因 | 解決方式 |
|---|---|---|
MOONSHOT_API_KEY not set | 未設定 API key | 執行 export MOONSHOT_API_KEY=your_key |
max-spend exceeded | 超過預算上限 | 提高 --max-spend 參數或減少測試數量 --n |
adapter not found: graphify_v1_surreal | SurrealDB 未安裝或未啟動 | 安裝 SurrealDB 並啟動,或改用其他 adapter |
裁判一致性低於 90% | 裁判模型或 prompt 有問題 | 檢查 Kimi K2.6 連線,確認裁判 prompt 未被修改 |
這次不是重現上游基準,而是為你自己的語料設計一次基準:你的團隊有一個 800 份 markdown + 60 個 Python 模組的內部知識庫,你被問「換成 graphify 當記憶層值不值得」。
graphify extract corpus/——markdown 走 Pass 3(花 token),Python 走 AST(免費);記下 spend ledger 與 nodes/edges/社群數。graphify benchmark 或本地 script),得到「無圖」的 recall 對照。graphify query(graph-expand)對同一組 50 題取 recall@10,再用固定的 reader 模型答題。graphify extract 的 token 統計)與搜尋的 token 用量,畫出「準確度/成本」座標。表裡出現兩個 graphify 引擎:graph-expand(預設,檢索時沿圖展開候選)與 SurrealDB engine(把圖倒進資料庫查)。兩者共用同一張 AST 圖、同一 embedder,差別在檢索策略——graph-expand 用圖結構把 seed 節點沿邊展開補召回,SurrealDB 版則靠資料庫索引做近鄰。LOCOMO 上 graph-expand 略勝(0.497 vs 0.485)。公平的脆弱點則藏在「共用 embedder」這條規則:supermemory 用自家 768-d 純英文 embedder,recall 被綁死(0.149);一旦有人偷偷換成對語料更好的 embedder,數字就不可比。所以讀基準要先問「哪一層共用」——模型、embedder、裁判、預算,四層共用才叫公平。
| 症狀 | 可能原因 | 解決方案 |
|---|---|---|
| 自己語料上 recall 遠低於表上的 0.497 | 語料分佈不同(多語言、文件比重高)或評分集太難 | 先確認 embedder(BGE-m3)有裝且被用到;對照純 BM25 基線看相對增益而非絕對值 |
| 重跑基準數字對不上 | token 預算(--max-spend)不同、reader/裁判模型換了、資料集版本不同 | 固定 MOONSHOT_API_KEY 對應的模型、固定 --n 與 seed、每次跑寫 spend ledger |
| supermemory/mem0 adapter 連不上 | adapter 需要 self-hosted 服務或額外 embedder 下載 | 看 harness 文件裝好 adapter 前置;確認共用 BGE-m3 而非 adapter 自帶 embedder |
| 裁判分數忽高忽低 | 裁判 prompt 被改動或模型 provider 路由不一致 | 跑盲驗(第二裁判一致性 > 90%)確認;固定裁判版本與温度 |
spend ledger 金額異常 | 重試機制、快取沒生效或并行 worker 暴衝 | 調低 --workers;確認 semantic cache 命中;檢查每 run 的 input/output token 分項 |
(covered + 0.5 * partial) / total 的 0.5 是「部分涵蓋折半」。如果改成 0 或 1,哪些系統的排名會翻轉?這說明了「評分機制的微小參數會改寫基準結論」——你如何避免自己被誤導?這次不是重現上游基準,而是從零設計基準:你有一個 300 份文件 + 100 個 Python 檔的內部知識庫,要回答「換成 graphify 當記憶層值不值得」。
graphify extract corpus/——記下 spend ledger(Pass 1 免費 + Pass 3 花 token)、nodes/edges/社群數。graphify benchmark 或本地 script)跑同一組 50 題,得到「無圖」的 recall@10 對照。graphify query(graph-expand)對同一組 50 題取 recall@10,再用固定的 reader 模型答題。graphify extract 的 token 統計)與搜尋的 token 用量,畫出「準確度/成本」座標。| 面向 | 考量 | 實務建議 |
|---|---|---|
| 效能 | LOCOMO ingest $1.40 vs supermemory $15.67——11 倍差距來自「AST 建圖零 LLM」 | 純程式碼語料的建圖成本確實為 $0;但混合語料的 Pass 3 仍要花 token——引用「$0 建圖」時務必標注語料類型 |
| 品質 | coverage 公式的 0.5(部分涵蓋折半)是任意參數——改成 0 或 1 可能翻轉排名 | 讀基準時先問「評分機制的微小參數會不會改寫結論」;用自己的語料重現而非照抄上游數字 |
| 安全 | benchmark harness 的 spend ledger 應防篡改(預算超限要 fail) | 用 --max-spend 硬上限;每次跑寫 per-run spend ledger;不要手動改 ledger |
| 面向 | 本文(效能基準) | 相關文 | 差異說明 |
|---|---|---|---|
| Token 經濟 | LOCOMO $1.40 vs supermemory $15.67;建圖 $0 | 運作原理 | 運作原理頁講「52 檔省 71.5×」的內部基準;效能基準頁做跨系統比較 |
| 圖檢索 | graph-expand vs SurrealDB engine 的 recall 比較 | 增量更新 | 增量頁講圖的增量更新機制;效能基準頁講圖的查詢效能 |
| 程式碼智慧 | ERPNext 82.0% vs grep+read 70.8% | 實作案例 | 實作案例頁展示單一專案的圖產出;效能基準頁量化「圖工具」的實際提升 |
| 裁判驗證 | 90.6% 一致性、kappa 0.81 | 架構總覽 | 架構頁不涉及裁判機制;效能基準頁詳細講 coverage 公式與盲驗 |
graphify query 跑出 recall@10--max-spend 和 spend ledger 控制基準執行的 token 預算,並解釋「預算超限要 fail」的設計理由