2. 算法架构总览:智能寻源算法的整体架构图、模块划分、数据流向
智能寻源算法并非单一模型,而是一套由多个协同模块组成的决策引擎。在中标场景下,算法需要实时处理招标信息、供应商画像、历史报价与市场行情,最终输出推荐排序与中标概率。本节从架构层面拆解其核心组件与数据流转路径。
2.1 整体架构图
下图展示了智能寻源算法的四层架构:数据接入层、特征工程层、算法推理层、业务输出层。各层之间通过标准化接口解耦,支持离线训练与在线推理的混合部署。
架构要点: 数据接入层与特征工程层支持离线批处理(每日更新),算法推理层同时部署在线实时版本与离线批量版本,业务输出层通过 RESTful API 对外暴露。
2.2 模块划分与职责
按照功能边界,智能寻源算法可拆分为以下 6 个核心模块。每个模块独立部署、独立迭代,通过消息队列或 RPC 通信。
| 模块名称 | 核心职责 | 输入数据 | 输出数据 |
|---|---|---|---|
| 数据采集器 | 对接招标平台、供应商系统、行情数据源 | 原始 PDF/HTML/JSON | 结构化招标记录、供应商档案 |
| 特征处理器 | 文本解析、价格归一化、资质量化、图构建 | 结构化数据 | 特征向量、邻接矩阵 |
| 中标预测器 | 基于历史数据训练中标概率模型 | 特征向量 + 标签 | 中标概率分数 (0~1) |
| 报价优化器 | 结合成本与竞争博弈,输出报价建议 | 中标概率 + 市场行情 | 报价区间、期望利润 |
| 排序引擎 | 多目标排序(概率、利润、风险) | 多维度评分 | Top-K 推荐列表 |
| 监控与回馈 | 跟踪中标结果,更新模型参数 | 实际中标结果 | 模型增量更新包 |
模块解耦收益: 当报价优化器需要更换算法(如从线性规划切换为强化学习)时,只需修改该模块内部逻辑,不影响特征处理器与排序引擎的接口契约。
2.3 数据流向详解
数据在模块间的流转遵循“宽进严出”原则:原始数据尽量保留,特征工程层完成清洗与降噪,算法层只消费标准化特征。以下按阶段说明关键流向。
阶段一:数据接入与清洗
- 来源: 招标公告(PDF/网页)、供应商注册信息、历史中标记录、第三方行情 API。
- 处理: 数据采集器执行 OCR 解析、HTML 结构化、字段映射,写入 Kafka 消息队列。
- 输出: 统一 JSON Schema,包含
bid_id、supplier_id、bid_price、bid_time、qualification_tags等字段。
阶段二:特征工程
- 文本特征: 对招标描述、供应商简介做 BERT 嵌入,输出 768 维向量。
- 时序特征: 提取近 6 个月该供应商的报价波动率、中标间隔、降价幅度。
- 图特征: 构建“供应商-招标项目”二部图,计算 PageRank 与 Jaccard 相似度。
- 输出: 特征宽表,每行对应一个
(bid_id, supplier_id)组合。
阶段三:算法推理
- 中标预测: 使用 LightGBM 或 Transformer 模型,输出中标概率
p_win。 - 报价优化: 基于
p_win与成本曲线,求解最优报价price*使得期望利润最大。 - 异常检测: 识别低于成本价 20% 或高于市场价 50% 的报价,标记为“高风险”。
阶段四:业务输出与回馈
- 排序输出: 按综合得分
score = α·p_win + β·expected_profit - γ·risk_flag降序排列。 - 回馈闭环: 实际中标结果通过离线管道回流至训练集,每周触发一次模型增量训练。
数据流向避坑: 特征处理器与中标预测器之间禁止传递原始文本或未归一化的价格字段,否则会导致模型训练不稳定。建议在特征处理器内部完成所有标准化操作,并缓存特征宽表到 Redis 以加速在线推理。
2.4 接口调用关系总览
下表汇总了各模块对外暴露的核心接口及其调用方式,后续章节将逐一深入每个接口的参数配置细节。
| 接口名称 | 所属模块 | 协议 | 调用频率 | 典型延迟要求 |
|---|---|---|---|---|
/v1/bid/parse |
数据采集器 | HTTP POST | 按需/定时 | < 5s |
/v1/feature/extract |
特征处理器 | gRPC | 实时 | < 200ms |
/v1/predict/win |
中标预测器 | gRPC | 实时 | < 100ms |
/v1/price/optimize |
报价优化器 | HTTP POST | 实时 | < 500ms |
/v1/rank/topk |
排序引擎 | HTTP GET | 实时 | < 300ms |
/v1/feedback/collect |
监控与回馈 | HTTP POST | 离线批量 | < 1h |
架构设计原则: 所有实时接口(gRPC/HTTP)均采用无状态设计,支持水平扩展;离线接口通过消息队列异步处理,避免阻塞在线链路。