Files
projectAIpopular/可行性调研与落地实现路线报告.md
tzt ce0f6170d3 chore: T-P-1 工作区收敛——并行会话成果与历史未入库文件整理入库
- 入库历史遗漏源码/测试:router_system 9 模块(agent/executors/inference/knowledge/
  memory/planner/skills/trace)、tests 11 个测试文件、config/knowledge 领域知识
- 入库根目录方案文档(v2/v3/可行性×2)、references 文献(arxiv 14-18/cnki_open/
  参考文献清单)、research 论文素材(routerarena/paper/中文文献 PDF)
- 前端构建产物刷新(新 hash);webapp 误写文档删除
- gitignore 增补:deepseek-harness、research/_refs、.mimosa/.zcode、网关日志/pid、
  临时调试脚本、tests/e2e/node_modules、AI代理功能开发/prefix
- 基线确认:318 passed
2026-09-05 08:28:25 +08:00

27 KiB
Raw Permalink Blame History

可行性调研与落地实现路线报告

项目:多专业小模型 + 路由模型系统(MVP) 报告日期:2026-08-12 依据:项目内《可行性分析报告》《实现方案》/ 13 篇 arXiv 论文 / 2026 最新业界动态 / 当前代码库实测


一、TL;DR(先看结论)

  1. 可行性:★★★★☆(强烈建议实施)。技术、成本、生态三个维度证据充分:
    • 路由已成为独立学科与独立服务类别,低成本路由器在 RouterArena 排行榜上以 $0.04/1K 查询成本全面超越 GPT-5$10.02/1K);
    • 小模型 + 路由替代大模型已有多篇顶会实证(The Avengers/AAAI 2025、R2R/NeurIPS 2025、StR/EMNLP 2025);
    • 本项目当前 MVP 已跑通全链路(20 项测试通过、demo 正常、分类 100%/15 条样例)。
  2. 核心问题答案:不需要全新架构(推倒重来),但需要"分层演进"
    • 现有架构骨架(缓存 → 分类 → 专家池 → Judge → 回退)与 2026 最新综述归纳的六种路由范式、与 Not Diamond / OrcaRouter / vLLM-SR 等生产路由产品完全同构;
    • 代码抽象(Base* 接口 + 配置驱动)已经为演进预留了接口,换实现不换架构
    • 需要变化的是每一层"内部实现"(规则 → 训练模型、Mock → 真实模型、启发式 → LLM-as-Judge)和部署形态(单体进程 → 推理服务 + 网关),这两者属于"升级"而非"重写"。
  3. 什么情况下才需要全新架构(见第四章):多租户高并发(QPS≥100)、流式输出、分布式多机推理、模型热加载、多模态/长上下文。若这些成为硬需求,给出三套备选方案与迁移路径(第五章)。
  4. 推荐落地路线(见第六章):5 个阶段、约 14–20 周,从"完全本地真实链路"起步(不依赖任何 API key),到"本地小模型推理 + 训练分类器 + embedding 缓存 + RouterArena 评测 + 生产化"。

二、项目现状盘点(2026-08-12 实测)

2.1 已完成(对应实现方案第一阶段 MVP)

能力 状态 实测结果
全链路路由(缓存→分类→专家→Judge→回退) 可运行 scripts/demo.py exit 0,平均延迟 ~14ms
5 领域意图分类(code/math/legal/medical/general 规则分类器 15 条评测样例准确率 100%
两阶段缓存(L1 精确 + L2 n-gram 语义) 零依赖 eval 缓存命中率 40%
Judge 质量控制器 + 升级机制 启发式 升级率 20%(达标 ≤20%
FastAPI 网关(/chat /health /metrics 20 项单元测试全部通过
论文调研(13 篇 PDF + 2026 survey research/2026_papers_survey.md

2.2 当前短板(决定路线图的输入)

短板 现状 与目标的差距
分类器 关键词规则,仅 15 条样例验证 目标 ≥95% 且可扩展;规则在更大数据上会掉点
专家池 全部 Mock 模板输出 无真实推理,成本/延迟/质量均未验证
Judge 启发式打分(覆盖度/长度/格式) 无法评估事实性与逻辑正确性
缓存 字符 n-gram 相似度 语义质量弱,应升级为 embedding 检索
回退层 Mock 升级为本地 7B 量化模型(DeepSeek-R1-Distill-Qwen-7B)兜底,完全本地
评测 自建 15 条迷你基准 未接入 RouterArena 标准化评测
路由决策 仅"领域+置信度" 无预算感知(R2-Router)、无级联深度控制
工程小问题 eval.py 控制台 GBK 崩溃、test_cache.py 中文损坏 见第七章修复清单

三、可行性调研结论

3.1 技术可行性:证据充分(2025–2026 最新)

(1"小模型集合 + 路由"已被顶会反复验证

  • The AvengersAAAI 2025:轻量框架聚合小模型集体智能,路由+评分+投票在数学/代码/逻辑任务超越专有大模型——本项目最直接的理论支撑(论文已在仓库:2505.19797v3.pdf)。
  • R2RNeurIPS 2025token 级路由,DeepSeek R1-1.5B + R1-32B 平均激活仅 5.6B 即超越 R1-14B,速度 2.8×。
  • Select-then-Route / StREMNLP 2025 Industry:先按语义类目选模型子池再级联路由——与本项目"分类器 + 专家池"结构完全一致,直接验证了当前架构。
  • Doing More with Less 综述(arXiv 2502.00409query 级路由 64.3% vs 领域式 52.2%,支持"逐查询路由"而非"按领域分区"。

22026 年路由已从"方法"变成"独立服务类别"

(3)必须正视的新风险(2026 年新增)

  • When Routing Collapses2602.03478:训练路由器时可能出现退化收敛——路由器坍缩到"总选同一个模型",丧失区分度。影响:本项目第一阶段用"可解释的规则/阈值路由"起步是正确选择;当引入学习型路由器时(路线图阶段 4+),需监控路由选择熵,避免过早用数据训练路由器。
  • Mixture of ParrotsICLR 2025:任意数量的小专家有表征容量天花板,必须保留大模型回退层——本项目回退设计是必要的,不是可选项。

3.2 经济可行性:成本降低 80–96% 有实测支撑

方案 平均激活参数 相对成本 来源
单一稠密大模型(70B 70B 1.0× 基线
MoE(激活 20B 20B 0.29×
本项目路由系统(80% 小模型 + 20% 升级) ~3B 0.040.15× 可行性分析 §6.1
RouteLLM 基准实测 0.150.70×(成本降 3085% 2026 业界实测
RouterArena 排行(2026-07 Hybrid Router $0.04/1K vs GPT-5 $10.02/1K 榜单实测

按实现方案 §4.2 估算(日均 10 万请求):全量大模型 ¥50,000–80,000/月 vs 路由系统 ¥5,00012,000/月,节省 8090%。量越大优势越明显。

3.3 理论边界(必须承认的"墙")

边界 说明 本项目应对
复杂推理 数学证明、逻辑链、多步规划仍需大模型 级联升级:仅 10–20% 请求升级(已实现,升级率 20%)
表征容量 专家宽度有下限(建议 ≥1B 配置已用 0.5B–7B 专家,符合下限
能力密度 3.5 月翻倍 模型会快速过时 模型注册表 + 定期替换(实现方案 §4.2)

3.4 综合评级(更新 2026 视角)

维度 评级 说明
技术可行性 ★★★★★ 顶会 + 商业产品双验证
成本效益 ★★★★★ 3085%(保守)~ 8596%(乐观)
部署复杂度 ★★★☆☆ 真实模型接入是主要工程量
推理天花板 ★★★★☆ 回退层兜底,可控
生态成熟度 ★★★★☆ vLLM/RouterArena/评测框架已就绪
综合 ★★★★☆ 强烈建议实施

四、核心问题:需不需要全新架构?

4.1 结论:不需要推倒重来,需要"分层演进"

判断依据(为什么现有骨架是对的):

  1. 结构与业界同构2026 综述(2603.04445)的六范式、StR 的两阶段结构、Not Diamond / OrcaRouter / vLLM-SR 的组件划分,与当前代码的 Router → (Cache / Classifier / Experts / Judge / Fallback / Stats) 完全对应。重写等于把已经验证正确的骨架再写一遍。
  2. 接口抽象已为演进预留BaseClassifier / Expert / BaseJudge / FallbackProvider 四个抽象接口 + build_* 工厂 + config.yaml 驱动。替换任何一层实现都不需要改 Router 主流程(20 项测试保证回归安全)。
  3. 成本不对称:推倒重来 = 丢掉已验证的 20 项测试、评测基线(缓存 40%、升级率 20%、分类 100%)、以及 5 个领域的规则语料;而演进每步都可验证、可回滚。
  4. 现有代码量小且整洁:核心 router_system/ 仅 ~50KB,无历史包袱、无耦合陷阱,不值得"重构"(重构解决的是"坏味道",这里没有)。

需要变化的两件事(注意这不是"新架构",是"换零件"):

现在 演进为 方式
分类器 规则关键词 训练的小模型分类器(BERT / Qwen3-0.6B build_classifier 实现,接口不变
专家池 Mock 模板 真实 LoRA 微调专家(vLLM 推理) build_expert 实现,接口不变
Judge 启发式 LLM-as-Judge / 规则+模型混合 build_judge 实现,接口不变
缓存 L2 n-gram 相似度 embedding 向量检索(BGE / text-embedding RouterCache 内部实现
回退层 Mock 本地 7B 量化模型(DeepSeek-R1-Distill-Qwen-7B Q4,按需加载) 新加 build_fallback 本地后端;type: api 保留为可选(默认关闭)
部署形态 单体进程 网关进程 + vLLM/llama.cpp 推理服务 + 向量库 新增部署层,不改核心代码

一句话:换的是"层内实现"和"部署拓扑",不是"分层架构"本身。

4.2 什么情况下才需要"全新架构"(触发条件)

出现以下任一硬需求时,单体演进方案不够用,需要系统形态升级(注意:即便如此,核心路由逻辑仍可复用,不是"从头写"):

# 触发条件 具体信号 需要的架构形态
1 多租户 / 高并发生产服务 目标 QPS ≥ 100,需要 SLA、限流、租户隔离 无状态网关集群 + 独立推理服务
2 流式输出(SSE/WebSocket 用户要求"打字机"效果,长文档生成 网关 → 推理服务全链路流式透传
3 分布式多机推理 专家池超过单卡容量(>24GB),或需要并发多专家 vLLM 推理集群 + 模型分发
4 模型热加载 / 热替换 灰度发布、模型更新不停服 推理服务与路由解耦 + 版本路由
5 多模态 / 长上下文 输入含图像/音频,或 128K+ 上下文 新增模态处理层、上下文工程
6 大规模语义缓存共享 多实例缓存一致性 外部向量数据库(Redis/FAISS/Qdrant

判断方法:先问"是不是必须",再问"现在能不能不做"。当前阶段(内部工具 / 限定领域 / 单机)以上 6 条都不是硬需求,因此不触发全新架构。建议在阶段 5 复查此表。


五、如果要用全新架构:三种方案详解

本节回答"怎么用"。三套方案按"改动量从小到大"排列,都基于同一原则:保留 Router 核心逻辑(它是对的),重构外围与部署形态。推荐方案 A。

方案 A:演进式分层架构(推荐 —— 当前形态的自然升级)

形态:单体代码库 + 进程拆分(网关与推理分离),仍是一个应用,但推理交给独立服务。

┌─────────────┐     ┌─────────────────────────────┐
│  客户端/调用方 │────▶│  Router Gateway (FastAPI)   │
└─────────────┘     │  · 缓存(L1精确 + L2向量检索)   │
                    │  · 分类器(训练模型, 已替换规则) │
                    │  · 路由决策 + 预算感知          │
                    │  · Judge(规则+LLM混合)         │
                    │  · 升级/回退决策                │
                    └──────┬──────────┬──────────┬──┘
                           ▼          ▼          ▼
                    ┌──────────┐ ┌──────────┐ ┌──────────────┐
                    │ vLLM 服务 │ │ vLLM 服务 │ │ 本地 7B 兜底    │
                    │ 专家池    │ │ Judge模型 │ │ (Q4量化, 按需加载)│
                    │(多模型并发)│ │(1-3B)    │ └──────────────┘
                    └──────────┘ └──────────┘

落地步骤(每步可独立上线):

  1. 保持 router_system/ 原样,新增 serving/ 目录:vllm_engine.py(封装 OpenAI 兼容推理服务调用)。
  2. experts.pyAPIExpert 指向本地 http://localhost:8001/v1(vLLM 启动多个 LoRA 专家的 OpenAI 兼容端点),一行配置切换experts.code.type: api
  3. 缓存 L2 升级:RouterCache 增加 embedding 后端抽象(SemanticStore 接口),默认 n-gram 实现保留,可选 BGE 向量实现(用 sentence-transformers 或调用本地 embedding 服务)。
  4. 分类器替换:训练后输出模型文件,build_classifier 增加 type: trained,加载本地 ONNX/transformers 模型。
  5. 网关增加流式透传(若需要):/chat/stream 走 SSE。

优点:改动可控(每步 1–3 天)、逐步验证、可回滚;代码与测试资产全部保留。 缺点:仍是"一个仓库一个应用",多实例共享缓存需要外部存储(阶段 5 处理)。


方案 B:事件驱动微服务(生产 SaaS / 多租户时采用)

形态:路由决策与模型推理完全解耦为独立服务,通过消息队列异步编排。

                      ┌────────────┐    ┌─────────────┐
  Client ──▶ API Gateway ──▶ Kafka/RabbitMQ ──▶ Router Worker (决策)
   (限流/鉴权)   │                      ▲           │
                 ▼                      │           ▼
            Redis Cache ◀───────────────┘      Expert Workers (vLLM池)
              (共享语义缓存)                     Judge Workers
                                                    │
                                                    ▼
                                               Fallback (外部API)

关键设计决策:

决策点 选择 理由
通信 同步(短任务)/ 异步队列(长任务)混合 80% 查询 <2s 走同步;升级/复杂任务走异步
路由状态 无状态 Worker + Redis 缓存 水平扩展、故障恢复
模型 每个专家一个 vLLM 实例(或单实例多 LoRA) LoRA 切换成本低,GPU 利用率高
观测 OpenTelemetry 全链路 trace 路由决策可审计(生产刚需)
评测 RouterArena 离线流水线 + 在线采样评估 防路由退化(见 3.1 风险 3

优点:水平扩展、租户隔离、故障域隔离、可审计。 缺点:工程量 4–8 周;引入 MQ/Redis 运维成本;对当前单机阶段是过度设计。


方案 C:拥抱推理框架生态("不自己造轮子"路线)

形态:放弃自研路由决策的某些部分,用生态组件拼装:

组件 可选生态 说明
推理 vLLM / SGLang / llama.cpp / Ollama 全支持 OpenAI 兼容 API
语义路由 vLLM Semantic Router 把路由内置到推理框架
路由器 RouteLLM(开源) / Not Diamond(商业) 数据驱动路由,含阈值校准
评测 RouterArena 标准 5 维评测
缓存 Redis + embeddingBGE / text-embedding-3 共享语义缓存

适用场景:团队规模小、不想维护推理细节;或希望直接使用成熟路由器的校准阈值。 注意vLLM-SR / RouteLLM 主要做"模型选择路由",不解决本项目"领域专家 + Judge + 回退"的业务编排——生态组件应作为"层内实现"嵌入方案 A,而不是替代 A


三方案对比

维度 A 演进式(推荐) B 微服务 C 生态拼装
触发条件 现在即可(无硬需求) QPS≥100 / 多租户 / 流式 团队小 / 想用现成
改动量 每步 13 天 48 周 24 周
保留现有代码 全部 路由核心逻辑 大部分(接口适配)
可扩展性 中(单机→双机) 中高
运维复杂度
风险 中(分布式一致性问题) 中(依赖第三方演进)
与路线图关系 是路线图的实现方式 路线图阶段 5 的选项 可嵌入 A

结论:先走 A;若业务爆发(触发条件 1/2),在 A 基础上平滑升级到 B 的部署形态;C 的选择性组件(vLLM、RouterArena)始终可用。


六、推荐落地实现路线(5 个阶段,14–20 周)

每阶段都有独立验收标准,可单独交付。里程碑用 标注。

阶段 1:真实链路打通(第 1–2 周)—— 完全本地化起步

目标:修复工程问题、下载本地模型、把 mock 换成真实本地推理,验证全链路真实成本/延迟/质量。本阶段起即完全本地,不需要任何 API key。

任务 产出 验收
修复工程问题(见 §7 eval.py 可在 GBK 控制台运行;test_cache.py 中文修复 全部测试通过
下载本地模型权重 Qwen3-0.6B(分类)、BGE-small-zhembedding)、Qwen2.5-Coder-7B / Qwen3-4B(专家)、DeepSeek-R1-Distill-Qwen-7B(回退,Q4 量化) 离线可加载,无需联网
回退层接入本地 7B build_fallback 新本地后端(llama.cpp / vLLM 量化加载) 低置信查询走本地 7B 返回真实回答
专家池接入本地推理 experts.*.type: hf 指向本地模型(或本地 OpenAI 兼容服务) 5 领域各 2 条查询真实回答
建立成本/延迟基线 scripts/eval.py 记录真实 cost_est 与延迟 输出报告:升级率 / 平均成本 / 延迟

验收标准(对齐实现方案 5.1,完全本地口径):端到端延迟 < 大模型 1.5×;升级率 ≤20%;全链路离线运行,无任何外部 API 依赖。

阶段 2:本地小模型推理(第 3–6 周)—— 真正降本的主体

目标:本地 vLLM/llama.cpp 跑 0.6B7B 开源模型池(专家 + 回退),全链路离线,无任何 API 依赖。

任务 产出 验收
安装推理栈 pip install -r requirements-ml.txt + vLLM(或 llama.cpp 量化) RTX 4060 8GB 可跑 Qwen3-0.6B / Qwen2.5-Coder-7B 量化
单实例多模型 vLLM 启动多模型(--served-model-name 区分)或单实例多 LoRA 5 领域专家并发可用
配置切换 experts.*.type: hf / 本地服务 base_url: http://127.0.0.1:8001/v1 全链路本地推理跑通
延迟/吞吐基线 压测脚本(1050 并发) P50 < 500msP99 < 2s(对齐实现方案 5.2
分类器试跑真实模型 HuggingFaceClassifier 加载 Qwen3-0.6B 或 BERT 与规则分类器准确率对比(≥90% 则保留,否则回退规则)

验收:全链路离线可跑(拔网线也能工作);分类准确率 ≥90%;延迟 P50 < 500ms。

阶段 3:训练分类器 + 升级 Judge(第 5–10 周,与阶段 2 并行)

目标:分类器从规则升级为训练模型(94–97% 目标),Judge 从启发式升级为"规则+LLM 混合"。

任务 产出 验收
构建训练数据 每领域 500–2000 条(人工标注 + 合成 + 公开数据集) data/train.jsonl / data/dev.jsonl 格式齐备
训练分类器 跑通 scripts/train_classifier.pyBERT 或 Qwen3-0.6B LoRA 开发集准确率 ≥94%,推理 <50ms
分类器 A/B 规则 vs 训练模型同评测集对比 训练模型胜出才切换(否则保留规则,成本更低)
Judge 升级 RuleJudge 保留快速过滤 + 增加本地 LLMJudge(本地 13B Judge 与人工评估一致性 ≥90%(实现方案 5.2)
阈值校准 参考 Conformal Cascade 校准 judge_fallback_threshold 升级率 ≤20% 且有分布无关保证

验收:分类准确率 ≥95%(正式目标);升级率 ≤20%;缓存命中率 ≥30%(对齐实现方案 5.2)。

阶段 4:语义缓存升级 + 标准化评测(第 9–14 周)

目标L2 缓存从 n-gram 升级为 embedding 检索;接入 RouterArena 标准评测。

任务 产出 验收
embedding 语义缓存 SemanticStore 抽象 + BGE 实现(BAAI/bge-small-zh-v1.5 同义改写查询命中率提升 ≥15%(vs n-gram
缓存评估 真实流量采样回放 缓存命中率 ≥30%(目标 40%+
RouterArena 接入 按 RouterArena 格式生成预测文件并评测 获得 Arena Score 与成本对比基线
引入预算感知(可选进阶) 参考 R2-Router:根据难度/置信度限制输出 token 预算 成本再降 2030% 且质量 Δ≥0

验收RouterArena 5 维指标全部可量化;成本/质量曲线优于"单一大模型"基线。

阶段 5:生产化(第 12–20 周,部分与阶段 4 并行)

目标:把系统从"能跑"变成"可运维、可监控、可替换"。

任务 产出 验收
监控 Prometheus + Grafana:延迟/升级率/成本/路由分布/选择熵 面板上线,路由决策可审计
模型注册表 + 热替换 配置文件驱动模型版本;新模型评测通过后灰度切换 不停服替换专家(对齐实现方案 5.3
灰度/A-B 网关按流量比例分流新旧路由器 可回滚
复查 §4.2 触发条件 若 QPS≥100/多租户 → 按方案 B 升级部署形态 架构决策记录

验收:整体成本降低 ≥80%(对比"全部请求走云端大模型"基线);系统可灰度发布;模型可热替换。

时间线总览

第1-2周     第3-6周       第5-10周       第9-14周       第12-20周
┌────────┐  ┌────────┐   ┌──────────┐   ┌──────────┐   ┌──────────┐
│阶段1    │→ │阶段2    │→ │阶段3      │→ │阶段4      │→ │阶段5      │
│真实链路  │  │本地推理  │   │分类器+Judge│  │缓存+评测   │  │生产化     │
└────────┘  └────────┘   └──────────┘   └──────────┘   └──────────┘
  修问题      本地推理     训练/微调       embedding     监控/热替换
  接本地模型   压测          A/B切换        RouterArena    复查触发条件

七、已知工程问题修复清单(建议阶段 1 一并处理)

# 问题 位置 修复
1 eval.py 打印 在 GBK 控制台抛 UnicodeEncodeError(已实测复现) scripts/eval.py:76 脚本开头 sys.stdout.reconfigure(encoding="utf-8"),或 emoji 改 ASCII
2 tests/test_cache.py 中文被 ? 替换(文件损坏,已确认字节级) tests/test_cache.py:16,17,20,27 重写为正确中文查询/注释
3 scripts/serve.py --stopos.kill(SIGTERM)Windows detached 进程可能杀不掉 scripts/serve.py:45 改用 taskkill /PID <pid> /T /F
4 conftest.py 注释同样有 ? 损坏 tests/conftest.py 同上修复

八、风险清单(2026 更新版)

风险 概率 影响 应对 阶段
路由误分类导致质量下降 置信度阈值 + 低置信走大模型(已实现);阶段 3 训练分类器 13
小模型推理天花板 级联升级兜底(已实现);Judge 阈值校准 持续
学习型路由器退化收敛(新) 规则/阈值起步;引入学习路由后监控选择熵(2602.03478) 45
多模型管理复杂度 vLLM 多 LoRA 统一管理 + 模型注册表 2,5
本地 GPU 资源不足 量化(4bit)+ 按需加载;回退降级为 4B 模型 2
领域数据不足微调效果差 合成数据 + few-shot 先验证;规则分类器作为保底 3
缓存击穿大模型负载飙升 限流 + 降级 + 预缓存热门查询 5
能力密度变化导致选型过时 接口抽象化(已具备),模型替换不动路由层 持续

九、参考文献与资源(2026 更新)

项目内已有

  • 《可行性分析报告_多专业小模型+路由模型路径.md》(15 篇论文)
  • 《实现方案_多专业小模型+路由模型.md》(三阶段 681 行)
  • research/2026_papers_survey.md + references/ 13 篇 PDF

2026 新增引用


报告完成。核心结论:可行性 ★★★★☆,架构沿用(分层演进),推荐方案 A 路线,5 阶段 14–20 周落地。