Skip to content

v7.13.6: 真实嵌入模型下的公开基准分数 + 语义融合重新定参 - #13

Merged
sixgodgit merged 2 commits into
mainfrom
claude/intelligent-hawking-oeyjx8
Oct 13, 2026
Merged

sixgodgit merged 2 commits into
mainfrom
claude/intelligent-hawking-oeyjx8

Conversation

@sixgodgit

Copy link
Copy Markdown
Owner

结果

第一次用真实嵌入模型(默认本地模型 paraphrase-multilingual-MiniLM-L12-v2)测公开基准。只测检索,零 LLM,用 nyx 真实代码实跑。

纯词法 v7.13.6(语义打开)
LongMemEval-S 前 5 命中 0.949 0.981
LongMemEval-S 前 5 全中 0.774 0.862
LongMemEval-S 偏好题 0.700 0.900
LongMemEval-S 多会话全中 0.603 0.785
LoCoMo recall@5 0.546 0.575(旧融合 0.527,BM25 0.498)

改动

  • 融合门槛:Z 从 2 改为 3(NYX_EMBED_Z)。
  • 语义一票的权重:从 1 改为 0.5,新增环境变量 NYX_EMBED_WEIGHT。原因:默认的小模型在英文闲聊上单独检索只有 0.424,和词法等权投票时会把好的词法结果挤出去。
  • 评测框架加 check_semantic:语义后端开着、索引却没建成时,直接按出错处理。开发中途发生过一次:本地模型加载失败,两组"语义打开"的分数其实全是纯词法,报告里却写着模型名。

参数怎么选的(分半交叉验证)

两个基准各分成两半。

  • A 半选参数:候选是 Z ∈ {2, 3} × 权重 ∈ {1, 0.5, 0.3}。按事先定死的规则选:LoCoMo recall@5 和 LongMemEval 前 5 全中的平均值最高。选出 Z=3、权重 0.5。
  • B 半只用来报告:
B 半(留出) 纯词法 旧融合 新融合
LoCoMo recall@5 0.539 0.510 0.566
LongMemEval 前 5 命中 0.957 0.983 0.987
LongMemEval 前 5 全中 0.753 0.872 0.843

新融合是唯一在两个基准上都不比纯词法差的方案。

代价:LongMemEval 前 5 全中比旧融合低约 3 个点,主要是多会话汇总题。README 里写明了这个取舍,以及回退到旧融合的参数。

回归

  • 纵向评测:35 个种子,在"语义关闭 / 假模型 + 新融合 / 假模型 + 旧融合"三种模式下,都与 v7.13.3 逐项相同。
  • 投毒演练:三种模式下都是 16 条攻击,0 条无标注进入提示,主人 0 误伤。
  • 事故演练:三种模式下都通过。
  • 全量测试:513 项通过。
  • 真实 Hermes 检查:通过。

防复发

  • tests/test_semantic_recall.py 新增 3 项:
    • 语义一票比词法轻(权重改回 1 时这项失败);
    • 语义认可能把排在后面的词法候选提上来;
    • 候选少时,同义改写仍能进前 3。
  • 用之前那套错误配置重跑评测,check_semantic 会直接报错退出。

如实说明

  • 只测了检索。端到端问答准确率需要大模型 API,还没跑。
  • LoCoMo 开放域推理类(92 题)打开语义后,比纯词法低 0.9 个点。
  • LongMemEval 的数据集许可是 MIT,LoCoMo 是 CC BY-NC。两者的数据都不进仓库,benchmarks/results/ 只存分数。

🤖 Generated with Claude Code

https://claude.ai/code/session_019ZZeQFn5F6mEbmX8vPsf4g


Generated by Claude Code

进行中:LongMemEval-S 全量独立验证、真实代码重跑、回归演练尚未完成,先不开 PR。

- search_router:融合时语义一票权重 0.5(NYX_EMBED_WEIGHT),词法一票为 1
- semantic:明显高于背景的门槛默认 Z=3(以前 2)
  LoCoMo(真实本地模型、离线复现与实跑吻合):纯词法 R@5 0.545,现行等权融合 0.524,
  新方案 0.578;10 段对话 9 段变好;同义改写(零字面重叠)仍有 4.1% 能进前 10
  (权重 0.3 时为 0,语义只剩重排,所以不再往下压)
- 评测框架 check_semantic:后端开着、索引没建成就报错。此前本地模型加载失败时,
  LoCoMo 与 LongMemEval「语义开」两组分数其实都是纯词法,报告里却写着 local:模型名
- tests:语义一票轻于词法 / 语义认可能提上词法候选 / 候选少时同义改写仍进前 3;
  权重改回 1 时第一项失败
- README:NYX_EMBED_Z 默认 3,新增 NYX_EMBED_WEIGHT、NYX_EMBED_CACHE

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019ZZeQFn5F6mEbmX8vPsf4g
在上一提交(语义一票减半、门槛 Z=3、评测框架拒绝空索引)基础上完成验证并发布:

- LongMemEval-S 首次真实数据分数(500 题,检索,nyx 真实代码实跑,本地模型):
  前 5 命中 0.981、前 5 全中 0.862、前 10 全中 0.885(纯词法 0.949 / 0.774 / 0.819)
- LoCoMo recall@5 0.575(纯词法 0.546,旧融合 0.527,BM25 0.498)
- 参数选择:两个基准各分两半,A 半按事先定死的规则选出 Z=3、w=0.5,B 半留出验证:
  LoCoMo 0.539 / 0.510 / 0.566(纯词法 / 旧 / 新),LongMemEval 全中 0.753 / 0.872 / 0.843。
  新融合两边都不低于纯词法;代价 LongMemEval 全中比旧融合低约 3 点,README 写明取舍与回退参数
- 纵向评测 35 种子三种模式逐项与 v7.13.3 相同;投毒 / 事故演练三种模式通过
- README Benchmark 改为真实分数;results 只存分数;更正开发中途「语义几乎无贡献」的错误结论

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019ZZeQFn5F6mEbmX8vPsf4g
@sixgodgit
sixgodgit merged commit 4b96f20 into main Oct 13, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants