Complete phase two benchmarks, plot previews and static export workflow

This commit is contained in:
2026-09-07 02:54:52 +08:00
parent 95095197df
commit 89df10bc4e
59 changed files with 2535 additions and 83 deletions
@@ -0,0 +1,18 @@
{
"version": "1.0.0",
"description": "手工编写的中文工程笔记检索集;每篇含关键词与改写问法,混淆主题分别建篇。用于小规模质量对照,不代表生产分布。",
"notes": [
{"id":"deadlock","title":"死锁的必要条件","text":"死锁需要互斥、占有并等待、不可抢占、循环等待四个条件同时成立。规定所有线程按相同顺序申请锁,可以破坏循环等待条件。","queries":["死锁有哪些必要条件","几个线程各占一把锁并等待对方释放,怎样避免一直卡住"]},
{"id":"starvation","title":"饥饿与公平调度","text":"饥饿指某个任务长期得不到资源,即使其他任务仍能运行。优先级老化会逐渐提高等待任务的优先级;公平队列可以减少长期等待。饥饿不等于所有进程互相等待的死锁。","queries":["优先级老化怎样缓解饥饿","系统一直有任务在跑,但一个低优先级任务永远轮不到怎么办"]},
{"id":"rrf","title":"RRF 排名融合","text":"RRF 使用每个候选在各通道中的名次进行融合,单通道贡献为 1/(k+rank)。它避免直接比较全文检索与向量余弦相似度的原始分数。k 越大,头部名次的差距越平缓。","queries":["RRF 的融合公式是什么","全文分数和向量分数尺度不同,如何按排名合并结果"]},
{"id":"rerank","title":"召回后的重排","text":"重排只重新排列已召回的候选,不能找回不在候选池中的相关段落。扩大候选池可能提高质量,但会增加精排成本。LexicalReranker 根据词面重合打分,不是 Cross-Encoder 神经模型。","queries":["重排能否找回未召回的文档","精排前候选池太小会导致什么问题"]},
{"id":"optimistic","title":"笔记的乐观并发控制","text":"保存笔记时携带读取时的内容摘要。服务端比较当前摘要,若已变化则拒绝覆盖并报告冲突。用户应重新加载或合并修改,避免把另一个窗口的新内容静默覆盖。","queries":["保存时为什么比较内容摘要","两个窗口同时修改同一篇笔记,怎样避免后保存者覆盖新内容"]},
{"id":"idempotency","title":"重复提交的幂等键","text":"客户端为一次逻辑上传创建唯一幂等键。网络重试使用相同的键和内容,服务端返回原附件编号;同键不同内容必须拒绝,防止错误复用。新的逻辑上传使用新的键。","queries":["幂等键如何处理重复上传","上传成功但响应丢失,重试怎样不生成两个附件"]},
{"id":"sse","title":"事件流断线续读","text":"SSE 事件携带递增 sequence。客户端保存最后接收的序号,重连后请求后续事件并去重。终止事件只能出现一次;连接中断本身不代表后台任务被取消。","queries":["SSE 重连如何去重","页面断网后任务仍在运行,如何恢复之前错过的进度"]},
{"id":"cancel","title":"后台任务取消边界","text":"取消标志由运行循环和工具边界检查。排队任务可以立即结束;正在同步渲染的工作应在安全边界检查取消,并丢弃产物。取消后不能发布完成事件或允许下载未完成文件。","queries":["导出任务取消后怎样处理产物","用户停止渲染时工作线程还没返回,应当如何收尾"]},
{"id":"embedding","title":"向量空间隔离","text":"不同 Embedding 模型或维度产生的向量属于不同空间,不能直接比较。索引按模型、版本、维度隔离;切换模型后需要重建对应索引。向量不可用时的全文回退必须在报告中明确记录。","queries":["Embedding 模型切换后为什么要重建索引","两个模型生成的向量长度一样就能混着搜索吗"]},
{"id":"citation","title":"引用定位与块标识","text":"引用记录笔记编号、块编号以及起止偏移。点击引用可定位原文。候选搜索结果不等于回答实际引用的来源;引用质量需要核对正文标记对应的支持性内容。","queries":["引用如何定位到原文","搜索返回十段资料,是否都应该算作回答已引用的来源"]},
{"id":"zip","title":"ZIP 安装路径检查","text":"解压前检查每个条目的规范路径,拒绝绝对路径、父目录穿越、符号链接和超出解压大小预算的条目。安装完成保存包摘要,重启时复核,包被修改后重新审查。","queries":["ZIP 安装如何阻止路径穿越","扩展包里有指向安装目录外的文件名,为什么必须拒绝"]},
{"id":"plot","title":"函数图像的安全解析","text":"function-plot 围栏支持 y = x^2 和 y = sin(x),可以设置 domain 和 range。解析器只允许数学语法,不执行任意代码。函数采样应限制表达式节点和求值次数,渐近线处断开曲线。","queries":["函数图像怎样处理渐近线","让用户输入公式绘图时如何避免执行任意程序"]}
]
}