运行状态
近 30 天的调用量、延迟与成本
当前 p95 样本不足,主要延迟来自外部模型 API
外部嵌入、重排、生成与支持度审计占中位请求约 61.7%; 当前最慢 p95 阶段是 关键词召回(10.9s)。优化优先级应放在供应商往返、超时和降级,不是本地 SQL 微调。
下一步:保持 SiliconFlow 嵌入/重排不变;生成模型记录在 数据库的单行配置里,换模型后新调用会带上新的价目快照, 与旧模型的成本、延迟和质量可以直接比较。
金额是怎么算的
金额是价目估算,不是供应商账单;token 与延迟是实测。V024 之后每次生成都会保存模型、配置版本和当时的输入/缓存/输出单价, 后续改价不会篡改历史。更早的 0 次调用没有价目快照,仍按 fallback (输入 ¥2/M · 缓存 ¥0.5/M · 输出 ¥8/M)回算,并在下表逐行标记。
命中缓存的输入 token 按更低费率计价,且它包含在输入 token 内——两者都按全价算会把缓存记成花钱而不是省钱。
按操作分解
| 操作 | 调用 | 输入 token | 其中命中缓存 | 输出 token | 平均延迟 | 估算成本 | 每次 | 价格口径 |
|---|---|---|---|---|---|---|---|---|
| 报告生成 | 2,458 | 9,559,058 | 2,328,703 24% | 794,266 | 3.4s | ¥8.87 | ¥0.0036 | 调用时快照 |
| 内容结构化 | 4,177 | 6,964,282 | 1,798,388 26% | 1,896,818 | 2.5s | ¥9.00 | ¥0.0022 | 调用时快照 |
| 推荐理由 | 1,668 | 2,643,057 | 178,299 7% | 144,225 | 1.3s | ¥2.76 | ¥0.0016 | 调用时快照 |
| RAG 问答生成 | 16 | 408,713 | 47,232 12% | 23,461 | 6.5s | ¥0.41 | ¥0.0256 | 调用时快照 |
延迟去了哪里
| 阶段 | 样本 | p50 | p95 / SLO | p99 | 占单次请求比例 | 位置 |
|---|---|---|---|---|---|---|
| 生成回答 | 16 | 3.6s | 8.3s / 15.0s 样本不足 | 8.4s | 35.1% | 外部 API |
| 高风险数值关系审计 | 11 | 3.1s | 6.2s / 15.0s 样本不足 | 6.3s | 22.8% | 外部 API |
| 稠密召回 | 16 | 2.3s | 10.2s / 10.0s 样本不足 | 10.2s | 12.8% | 本地 |
| 关键词召回 | 16 | 2.2s | 10.9s / 10.0s 样本不足 | 14.2s | 16.4% | 本地 |
| 交叉编码器重排 | 16 | 723ms | 1.0s / 10.0s 样本不足 | 1.1s | 5.4% | 外部 API |
| 引用支持度打分 | 16 | 253ms | 320ms / 10.0s 样本不足 | 341ms | 1.8% | 外部 API |
| temporal | 10 | 103ms | 161ms / 10.0s 样本不足 | 166ms | 0.6% | 本地 |
| 父块展开 | 16 | 36ms | 54ms / 10.0s 样本不足 | 61ms | 0.3% | 本地 |
| 证据选择 | 16 | 33ms | 54ms / 10.0s 样本不足 | 56ms | 0.2% | 本地 |
| RRF 融合 | 16 | 32ms | 81ms / 10.0s 样本不足 | 90ms | 0.3% | 本地 |
| 查询规划 | 16 | 0ms | 0ms / 10.0s 样本不足 | 0ms | 0.0% | 本地 |
| 问题嵌入 | 16 | 0ms | 0ms / 5.0s 样本不足 | 0ms | 0.0% | 外部 API |
阶段占比是怎么算的
阶段样本数可以少于问答总数:重排在 reranker 不可用时会被跳过并记为降级,把缺席当成 0 毫秒平均进去,会报出一次从未发生的提速。
比例是先按每次请求算、再取中位数,不是「阶段 p50 ÷ 总 p50」。后者拿两个不同样本群的中位数相除——支持度打分只在有引用的 请求上计时,生成在全部请求上——却把它们当成同一个整体的切片, 结果是几项加起来 122.7%。现在每一格单独成立: 「在中位数的那次请求里,这个阶段占了多少」。
缓存
语义缓存的三条约束(ADR-0017)
资讯语料不能无脑上语义缓存(ADR-0017)。三条约束:答案键里含语料指纹,且指纹粒度由 planner 的 `freshness_required` 决定——「最新动态 / 时间线」绑定到精确语料状态, 其余按天;近邻阈值取 0.97 而不是常见的 0.85, 因为「DeepSeek 发布了什么」与「OpenAI 发布了什么」在嵌入空间里很近, 阈值放松的后果是自信地回答另一家公司;拒答永不缓存,因为它的含义是「语料里还没有」。 答案 TTL 60 分钟。
答案命中率 0% 是设计结果,不是缓存坏了:键里含语料指纹, 而采集每 120 秒写一次,所以时间型问题几乎必然未命中——这正是它该有的行为。 对照之下嵌入命中率 31% 是真的在省钱: 嵌入是纯函数,同一段文字永远得到同一个向量,没有新鲜度可言。
线上检索行为
近 30 天 16 次真实提问、652 个候选的聚合。90 题黄金集回答不了这一节——那是事先选定的固定样本, 这里是总体。
| 候选去向 | 条数 | 含义 |
|---|---|---|
dropped_budget | 163 | 证据位已满(上限 10 条) |
dropped_source_cap | 144 | — |
dropped_document_cap | 138 | 同一篇文章已超额(单篇霸榜保护) |
evidence_uncited | 81 | 进入证据集,但答案没用上 |
cited | 70 | 进入证据集,且答案引用了它 |
dropped_story_fold | 32 | 同一事件已有代表(四家媒体报道同一件事只算一条) |
ranked_out | 24 | 重排后排名不够靠前 |