ai-memory LongMemEval-S 检索基准全解析:zero-llm 基线、评分口径与复现指南

发布时间:2026/9/17 23:06:02

ai-memory LongMemEval-S 检索基准全解析:zero-llm 基线、评分口径与复现指南 ai-memory LongMemEval-S 检索基准全解析zero-llm 基线、评分口径与复现指南【免费下载链接】ai-memorySolution for long term memory for agent coding CLIs and to facilitate handoff between different agent vendors项目地址: https://gitcode.com/GitHub_Trending/ai/ai-memory导读本文以 ai-memory 仓库发布的 docs/benchmarks/longmemeval-s-2026-09-01.md 为骨架完整解读这份检索质量基线报告它记录的是 ai-memory 在 2.0 检索重构之前、纯确定性zero-llm模式下的 LongMemEval-Sv1检索成绩。读完本文你将掌握该基准的 slice 划分与每项指标的确切含义、hitk 与 recallk 在会话级评分的实现差异、数据从注入hook 回放到查询MCP memory_query再到打分的完整链路以及如何在本地用仓库自带的ai-memory-eval工具复现这份数字并通过同一套 harness 对比 FTS 与本地 embedding 两条检索路径的差距。一、这份基准报告记录了什么docs/benchmarks/longmemeval-s-2026-09-01.md是 ai-memory 检索质量的公开基线之一报告头部完整保留了四项溯源信息溯源字段值含义commit496e419ff60ece21e1c7dfc76a960c92043e75c8跑分时检出的代码版本保证数字可回溯datasetlongmemeval_ssha25608d8dad4be43ee20…LongMemEval-S v1 数据集及其校验和modezero-llm完全离线确定性模式无任何 LLM 参与hardwareAMD Ryzen 9 7950X3D32 线程运行环境questions scored47030 个 abstention 题除外计分题量与排除规则这份报告属于三份同日2026-09-01基准中的最早期基线。对照 docs/benchmarks/README.md 中的 Baselines 表可以看到完整的演进脉络datemodeoverall hit5对应报告2026-09-01zero-llmpre-2.0 FTS0.617longmemeval-s-2026-09-01.md2026-09-01zero-llm、stopword-filtered FTS0.668longmemeval-s-2026-09-01-fts.md2026-09-01local embeddings2.0 默认0.823longmemeval-s-2026-09-01-local.md也就是说这份文档是 2.0 检索重构的起点基线floor它测量的不是带 embedding 的混合检索而是 FTS5 entity/graph 的纯确定性检索栈。二、逐项解读 470 道题的切片成绩报告按 LongMemEval 官方的 question type 切成 6 个 slice全部成绩如下slicenhit1hit3hit5hit10recall1recall3recall5recall10knowledge-update720.5280.6530.7080.8060.2640.4510.4930.604multi-session1210.3880.5040.5700.6690.1680.2900.3330.448overall4700.4490.5660.6170.7130.2970.4300.4720.570single-session-assistant560.6960.7500.8040.8750.6960.7500.8040.875single-session-preference300.3670.5670.6000.7330.3670.5670.6000.733single-session-user640.4060.4530.4840.5470.4060.4530.4840.547temporal-reasoning1270.3940.5510.5980.7090.1900.3640.4100.507解读这份表需要注意三点slice 规模差异temporal-reasoning127 题和multi-session121 题是最大的两个分类也是纯 FTS 模式下相对最弱的两个——前者考验时间推理后者要求跨多个会话召回证据recall1 分别只有 0.190 和 0.168说明第一个返回结果就命中全部证据会话在这两类题上极难。hitk 与 recallk 的差距multi-session的 hit10 为 0.669 但 recall10 仅 0.448temporal-reasoning的 hit10 为 0.709 但 recall10 仅 0.507。差距大说明能找到至少一个证据会话与找全所有证据会话之间仍有明显鸿沟——这正是多会话问题的本质难点。single-session 系列single-session-assistant表现最好hit1 已达 0.696hit10 达 0.875且其 hitk 与 recallk 完全相同——因为单会话题只有一个证据会话命中即满分、未命中即零分。三、指标口径hitk 与 recallk 的准确定义报告末尾的 Notes 明确了两套指标的定义这是理解一切成绩的前提hitk 任意一个证据会话出现在 top k 中即大多数记忆系统对外发布的 Recallkrecallk 找到的证据会话数占该题全部证据会话数的比例对多会话题更严格会话归属session attribution来自sessions/id.md页面与原始 observation 命中无法归属到会话的页面永不参与计分捕获是生产形态的excerpt 被限制在 2 KB 隐私边界内。3.1 评分器的源码实现在 score.rs 中可以精确看到这两套指标如何落地let top: HashSetuuid::Uuid ranked_sessions.iter().take(k).collect(); let found evidence.iter().filter(|e| top.contains(e)).count(); hit_at.insert(k, if found 0 { 1.0 } else { 0.0 }); recall_at.insert(k, found as f64 / evidence.len() as f64);关键实现细节会话去重检索结果先按会话折叠同一会话的多个 chunk 只占据一个排名槽位。score.rs中duplicate_session_chunks_fill_one_slot_not_three测试验证了这一点——3 个噪声会话 chunk 只能占 rank 0随后出现的证据会话即命中 hit2。abstention 题排除没有证据会话的题目既不参与 hitk 也不参与 recallkscore_question中 evidence 为空时 recallk 记 0但这类题在进入评分前已被剔除见retrieval/mod.rs的questions.retain(|q| !q.is_abstention())。聚合方式aggregate按 question_type 与 overall 分组对每题成绩做宏平均macro-average。控制测试random_sessions_score_zero测试保证随机检索结果计零分——评分器不会给任意命中以错误加分。3.2 不可归属页面的处理query.rs中session_uuid_from_path只把sessions/uuid.md路径解析为会话 UUID其余页面如gotchas/build.md归属为Noneunattributed_pages_never_score测试验证了这些命中不会得分。这意味着报告度量的是会话级召回而非页面级检索质量。四、zero-llm 模式的完整评测链路这份报告的数字不是理论推演而是由仓库自带的 evals 工具通过真实服务栈端到端跑出来的。评测链路共四步没有任何环节被 mock4.1 启动真实服务子进程retrieval/mod.rs中的EvalServer::launch会在一个全新的临时数据目录上启动真实的ai-memory serve子进程。zero-llm 模式意味着无 consolidation LLM无 embedder无 reranker完全确定性与离线可复现。该模式的等价生产配置是embedding_provider none见 config.default.toml 中关于 2.0 默认 embedding 与显式 opt-out 的注释或任何模型无法加载的主机。4.2 通过 /hook/batch 回放 haystack每道题对应一个私有项目lme-question_id其 ~50 个会话的 haystack 通过POST /hook/batch按生产 hook 节奏回放见 ingest.rssession-start → (user-prompt-submit stop) × 每轮对话 → session-end其中stop事件携带 opt-in 的助手摘要_ai_memory_assistant.excerptcapture_assistant1。回放忠实继承生产捕获的两条约束excerpt 上限 ~2 KB客户端cap_excerpt在 UTF-8 字符边界截断服务器端同样限流——证据若深埋在单个超长 turn 中索引确实够不到这是被度量的系统本身的一部分而非 harness 伪影会话日期前缀每个 turn 文本前注入[session date: …]补偿重放历史缺少真实时间戳的问题官方 LongMemEval harness 同样把时间戳暴露给检索器。注入还有一层健壮性保障ingest_question会重试被服务器限流跳过的 batch item直到全部接受——静默丢失 haystack 数据会直接污染基准因此这种失败被设计为硬失败而非软跳过。4.3 通过 MCP memory_query 查询查询走的是真实 MCP Streamable-HTTP 接口tools/call memory_query见 query.rs与真实 Agent 完全同一条路径并显式传入workspacelongmemeval与projectlme-id做作用域隔离。响应同时解析结构化页面命中hits与原始 observation 命中raw_hits并按编译页面优先、原始命中随后的顺序扁平化pages_rank_before_raw_hits_and_order_is_preserved测试保障。4.4 会话级打分与报告打分在 score.rs 完成之后report.rs输出带完整溯源commit、数据集 sha、硬件、逐题分数的report.{json,md}落盘到evals/runs/timestamp-retrieval/。发布基线时只需把 markdown 复制进docs/benchmarks/——本系列三份报告正是这样产生的。五、如何复现这份基准5.1 准备与运行按照 evals/README.md 与 docs/benchmarks/README.md复现命令如下# 1. 构建被测服务端ai-memory-cli 的 release 二进制 cargo build --release -p ai-memory-cli # 2. 下载数据集并跑完整 500 题278 MB校验和固定上游漂移会响亮报错 cargo run --release -p ai-memory-eval -- retrieval --fetch # 3. 快速冒烟前 10 题用于迭代 cargo run -p ai-memory-eval -- retrieval --sample 10retrieval子命令支持的参数见RetrievalArgs包括参数默认值说明--datasetevals/datasets/longmemeval_s.json数据集路径--fetch关缺失时先下载--server-bintarget/release/ai-memory被测服务端二进制--sample N无只跑前 N 题确定性前缀--ks 1,3,5,101,3,5,10hitk / recallk 的截断点--concurrency8并发题数--outevals/runs输出根目录--embeddings none\|localnonenone zero-llmlocal 进程内 all-MiniLM-L6-v25.2 复现三种模式本报告的 zero-llmpre-2.0 FTS--embeddings none在当时的 commit 上运行即 0.617 基线stopword-filtered FTS对 bare-query 的 FTS OR-join 去掉停用词后重跑hit5 提升至 0.6685.1 点hit1 提升 0.449 → 0.5348.5 点对应 longmemeval-s-2026-09-01-fts.mdlocal embeddings2.0 默认--embeddings local进程内 all-MiniLM-L6-v2384 维嵌入器模型首次使用时拉取约 87 MB 到evals/models/校验和锁定整体 hit5 达 0.823。5.3 诚实数字的边界README 明确给出可比性说明外部可比口径agentmemory 0.967 R5hybrid reranking、doobidoo/mcp-memory-service 0.804 R5 均为 embedding-based 检索在原始聊天日志上的成绩本项目对外可比的口径是 hit5。不可忽略的成本本流水线额外承担了生产形态捕获的开销2 KB excerpt 隐私边界因此长 turn 深处的证据确实在索引可达范围之外——基准度量的是交付的系统而不是理想化的检索器。回归门槛Roadmap 2-6 项会重跑此基准任何使某个 slice 明显下降的改动都被视为需要修复的回归而非可发布的注记。六、从 0.617 到 0.823两份姊妹报告串起 2.0 检索升级路径将三份报告并排阅读可以看到 2.0 检索重构在同一个 harness 上实测的两次跃迁停用词过滤zero-llm 内部把 bare-query FTS OR-join 中的停用词剔除overall hit5 从 0.617 升至 0.668hit1 从 0.449 升至 0.534——一次零模型成本、完全确定性的改进本地 embedding 混合检索进程内 all-MiniLM-L6-v2 嵌入器正确 masked-mean pooling与 FTS5 entity graph 融合overall hit5 进一步升至 0.823recall5 达 0.680。注意 docs/benchmarks/README.md 特别指出仅 pooling 修复一项就值约 6.6 个点对比 padded-attention 实现且是被 calibration 测试捕获的——这解释了为什么仓库强调每个中间数字都在该改动落地前于同一 harness 上实测。从 slice 视角看local embedding 对multi-session和knowledge-update的提升最为显著hit5 分别 0.570 → 0.876、0.708 → 0.903说明向量检索对跨会话、知识更新类问题的增益最大。七、延伸阅读与关键证据路径基准总览与可比性说明docs/benchmarks/README.md另外两份同日基准longmemeval-s-2026-09-01-fts.mdstopword-filtered FTS、longmemeval-s-2026-09-01-local.mdlocal embeddings评测 harness 使用手册含完整命令行示例evals/README.md评测入口与参数定义evals/src/main.rs、evals/src/retrieval/mod.rs会话级评分器及全部单元测试evals/src/retrieval/score.rshook 回放注入生产节奏、2 KB excerpt、日期前缀evals/src/retrieval/ingest.rsMCP 查询与页面归属evals/src/retrieval/query.rs2.0 默认 embedding 配置说明crates/ai-memory-cli/templates/config.default.tomlunset 进程内 all-MiniLM-L6-v2384 维embedding_provider none即回到本文 zero-llm 的确定性检索栈本地嵌入的详细设计docs/local-embeddings.md【免费下载链接】ai-memorySolution for long term memory for agent coding CLIs and to facilitate handoff between different agent vendors项目地址: https://gitcode.com/GitHub_Trending/ai/ai-memory创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/17 23:06:02

AVA-Encoder:当AI终于学会看懂一部电影

你有没有想过一个问题:现在的AI已经能写代码、能画画、能生成视频,为什么还是拍不出一部像样的电影?不是技术不够先进,是它压根不知道该怎么"看电影"。想象一下,你把《泰坦尼克号》甲板拥抱那场戏丢给一个AI…

2026/9/18 0:06:10

Adam优化器:原理、手写实现与PyTorch调参实战

调参这件事,真正让人头大的往往不是网络结构本身,而是优化器。同一个模型、同一份数据,换个优化器或者改一下默认参数,收敛速度和最终指标能差出一大截。我这些年做模型训练和工程落地,从早期手写SGD加动量&#xff0c…

2026/9/18 0:06:10

Python构建Web漏洞智能检测系统:规则+模型+安全设计实战

简介:针对Web应用安全检测需求,这份毕业设计论文提出并实现了基于Python的Web漏洞智能检测系统,借助Django框架与漏洞库机制完成漏洞扫描、入侵检测、安全建议与病毒库更新等功能。资源面向具备Python基础、从事网络安全研究与开发的技术人员…

2026/9/18 0:06:10

钢管订购与运输问题:数学建模与Python求解

简介:数学建模B题钢管订购和运输全解答是一份面向数学建模竞赛参赛者的完整优化方案,聚焦钢管订购与运输调度问题。包含一个Word文档(约459KB),系统梳理了从问题分析、模型建立到求解的全过程:采用Floyd算法…

2026/9/18 0:06:10

PentAGI实操指南:开源AI代理的本地部署与任务自治实践

说实话,"PentAGI"这个名字第一眼挺劝退的,"AGI"三个字母在大模型圈子里已经被用得太滥了。但真正把仓库拉下来、把项目跑通之后,我的态度发生了很大变化:这个开源项目确实在认真往"通用任务代理"的…

2026/9/18 0:06:10

拆解AI应用型技术栈:从Java到机器学习与OpenCV项目实战

简介:一份面向高职计算机应用技术(人工智能应用技术)专业的三年制人才培养方案PDF,适合院校教务人员、专业教师及有报考意向的学生和家长参阅。方案以2021级为对象,系统给出专业代码510201、入学要求与全日制学制&…

2026/9/18 0:01:09

考研高数解题链路思维导图:从知识组织到真题决策

简介:本资源是一份专为考研学子与高校理工科新生设计的《高等数学》核心知识体系梳理工具,以结构化思维导图形式系统覆盖极限、一元函数微分学、一元函数积分学、多元函数微分学及微分方程五大主干模块,直击考研高频考点与学习难点。文件为单…

2026/9/16 12:52:37

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/18 0:01:09

Google Colab 实战:运行模型、数据加载与报错排查

1. 为什么我劝你先搞懂 Colab 的运行模型1.1 Colab 到底是什么,跟本地跑代码差在哪Google Colab 简单说就是一台跑在浏览器里的 Linux 虚拟机,你打开一个 Notebook,背后就连上了一台带 GPU 的远程机器。你在单元格里敲的每一行 Python&#x…

2026/9/18 0:01:09

C语言数据类型与表达式详解

1. C语言数据与数据类型概述在C语言编程中,数据是程序处理的核心对象。理解数据的分类和特性是掌握C语言的基础。C语言中的数据主要分为四大类:常量、变量、表达式和函数。这些数据类型构成了C语言程序的基本元素,每种类型都有其独特的特性和…

2026/9/18 0:01:09

SQL时间字段指定时间段查询:区间语义、索引与时区避坑

上周排查一个线上问题&#xff0c;用户反馈"昨天的订单一条都没查到"&#xff0c;但数据库里明明躺着两千多条。最后定位下来&#xff0c;不是数据丢了&#xff0c;也不是接口挂了&#xff0c;而是那个查询条件把时间段写成了> 2024-05-20 00:00:00 AND < 2024…

2026/9/16 22:55:57

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行&#xff0c;Type-C接口算是典型的“看着简单&#xff0c;做起来全坑”的东西。光引脚就24个&#xff0c;高低速信号、电源、控制线全部塞在一个小小的连接器里&#xff0c;如果PCB布局不做规划&#xff0c;打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/16 22:56:09

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/16 22:56:16

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码