前情提要: 决战阿布扎比,用seekdb的AI原生功能预测总冠军 - 社区问答- OceanBase社区-分布式数据库
过程紧张但是结果平淡的阿布扎比烟花中,地效时代结束了。而2026年,则是F1规则大改的一年,从赛车尺寸到动力单元规格再到气动规则,都有极大的变化。除此之外,奥迪和凯迪拉克的入围,也让明年充满了变数。在有限且确定的变量面前,我用seekdb精准预测了2025年的车手总冠军归属后,一个更大胆的想法在我脑子里萌生,能不能预测一下盲盒年的开局究竟如何?
一、建表
我们先模拟五大厂队的动力单元开发情况,五大厂队按照今年的排名分别是:梅赛德斯奔驰、红牛-本田、法拉利,以及新入围的福特和奥迪,一共五家。而来年红牛将更换福特的动力单元,阿斯顿马丁变成本田阵营(阿隆索:GP2 engine again),因此来年的五家厂队分别是:梅赛德斯奔驰、红牛-福特、法拉利、阿斯顿马丁-本田、奥迪。考虑到奥迪和福特过去在F1的参与度较低,我们要给五家赋予不同的权重。
除此之外,现有的动力单元制造商也存在着差异,我们会分为混动功率、可持续燃料效率、动能回收效率、发动机热效率、可靠性、燃料适配度几个维度来建表。
-- 一、清理旧环境
DROP DATABASE IF EXISTS f1_2026_constructors;
CREATE DATABASE f1_2026_constructors CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE f1_2026_constructors;
-- 二、创建核心表
-- 1. 动力单元表
CREATE TABLE f1_power_unit (
id INT PRIMARY KEY AUTO_INCREMENT,
manufacturer VARCHAR(50) NOT NULL COMMENT '车队厂商',
power_supplier VARCHAR(50) NOT NULL COMMENT '动力单元供应商',
season INT NOT NULL COMMENT '赛季(2026)',
power_kw INT NOT NULL COMMENT '混动综合功率(kW)',
fuel_efficiency DECIMAL(3,1) NOT NULL COMMENT '可持续燃料效率(km/L)',
hybrid_recycle INT NOT NULL COMMENT '混动回收效率(%)',
thermal_efficiency DECIMAL(3,2) NOT NULL COMMENT '发动机热效率(%)',
reliability DECIMAL(2,1) NOT NULL COMMENT '动力单元可靠性评分(1-10)',
fuel_adaptation INT NOT NULL COMMENT '可持续燃料适配度(0-10分)',
power_vector VECTOR(6) NOT NULL COMMENT '动力单元核心指标向量',
VECTOR INDEX idx_power_vector(power_vector) WITH (distance=L2, type=hnsw, lib=vsag, M=16, ef_construction=200),
INDEX idx_manufacturer_season(manufacturer, season),
UNIQUE KEY uk_power_manufacturer(manufacturer, season)
) COMMENT '2026F1新规动力单元表';
除了动力单元,还有一个就是空气动力学能力,如果大家看了F1电影就会知道,一个单圈快0.1秒的前翼都会给比赛结果带来完全不一样的东西。根据2026年新规,我们从最大下压力、空气阻力系数、空力效率比、低速弯适配性、新规合规度、赛道类型几个维度来拆解各家车队的空气动力能力。
-- 2. 空气动力学表
CREATE TABLE f1_aerodynamics (
id INT PRIMARY KEY AUTO_INCREMENT,
manufacturer VARCHAR(50) NOT NULL COMMENT '车队厂商',
season INT NOT NULL COMMENT '赛季(2026)',
downforce_kn DECIMAL(3,1) NOT NULL COMMENT '最大下压力(kN)',
drag_coeff DECIMAL(3,2) NOT NULL COMMENT '空气阻力系数(Cd)',
aero_efficiency DECIMAL(4,2) NOT NULL COMMENT '空力效率比',
low_speed_adapt INT NOT NULL COMMENT '低速弯适配性(0-10分)',
regulation_compliance INT NOT NULL COMMENT '新规合规度(0-10分)',
track_type VARCHAR(20) NOT NULL COMMENT '赛道类型',
aero_vector VECTOR(5) NOT NULL COMMENT '空力核心向量',
VECTOR INDEX idx_aero_vector(aero_vector) WITH (distance=cosine, type=hnsw, lib=vsag),
INDEX idx_manufacturer_season_aero(manufacturer, season),
UNIQUE KEY uk_aero_manufacturer(manufacturer, season)
) COMMENT '2026F1空气动力学表';
除此之外,在盲盒年,各家厂商的研发能力、纠错能力、经验都是决定比赛中期开始走向的重要因素(否则法拉利也不会出现2022年的高开不走),我们同样建立两张表
-- 3. 研发能力表
CREATE TABLE f1_rnd_capability (
id INT PRIMARY KEY AUTO_INCREMENT,
manufacturer VARCHAR(50) NOT NULL COMMENT '车队厂商',
season INT NOT NULL COMMENT '赛季(2026)',
rnd_ratio DECIMAL(4,2) NOT NULL COMMENT '研发投入占比(%)',
iteration_speed DECIMAL(2,1) NOT NULL COMMENT '技术迭代速度',
regulation_adapt_progress INT NOT NULL COMMENT '新规适配进度(0-10分)',
patent_weight INT NOT NULL COMMENT '专利权重(1-10分)',
rnd_vector VECTOR(4) NOT NULL COMMENT '研发核心向量',
VECTOR INDEX idx_rnd_vector(rnd_vector) WITH (distance=L2, type=hnsw, lib=vsag),
INDEX idx_manufacturer_season_rnd(manufacturer, season),
UNIQUE KEY uk_rnd_manufacturer(manufacturer, season)
) COMMENT '2026F1研发能力表';
-- 4. 厂商经验表
CREATE TABLE f1_manufacturer_experience (
id INT PRIMARY KEY AUTO_INCREMENT,
manufacturer VARCHAR(50) NOT NULL COMMENT '车队厂商',
debut_year INT NOT NULL COMMENT '首次参赛年份',
total_championship INT NOT NULL COMMENT '历史冠军总数',
new_regulation_exp INT NOT NULL COMMENT '新规技术积累年限',
experience_vector VECTOR(3) NOT NULL COMMENT '经验核心向量',
VECTOR INDEX idx_experience_vector(experience_vector) WITH (distance=cosine, type=hnsw, lib=vsag),
INDEX idx_manufacturer_experience(manufacturer),
UNIQUE KEY uk_manufacturer_experience(manufacturer)
) COMMENT 'F1车队历史经验表';
还有吗?有,要模拟就模拟大点,动力单元和赛车性能,我们顺便把揭幕战也一起预测了,那么再引入两个内容,过去3个赛季的车队表现以及车手表现
-- 5. 过往赛季表现表
CREATE TABLE f1_past_season_perf (
id INT PRIMARY KEY AUTO_INCREMENT,
manufacturer VARCHAR(50) NOT NULL COMMENT '车队厂商',
points_2023 INT NOT NULL COMMENT '2023积分',
points_2024 INT NOT NULL COMMENT '2024积分',
points_2025 INT NOT NULL COMMENT '2025积分',
win_rate DECIMAL(5,2) NOT NULL COMMENT '近3赛季胜率(%)',
reliability_rank INT NOT NULL COMMENT '可靠性排名(1-10)',
past_perf_vector VECTOR(5) NOT NULL COMMENT '过往表现核心向量',
VECTOR INDEX idx_past_perf_vector(past_perf_vector) WITH (distance=L2, type=hnsw, lib=vsag),
INDEX idx_manufacturer_past(manufacturer),
UNIQUE KEY uk_manufacturer_past(manufacturer)
) COMMENT 'F1车队过往赛季表现表';
-- 6. 车手能力表
CREATE TABLE f1_driver_ability (
id INT PRIMARY KEY AUTO_INCREMENT,
manufacturer VARCHAR(50) NOT NULL COMMENT '所属车队',
driver_name VARCHAR(50) NOT NULL COMMENT '车手姓名',
single_lap_speed DECIMAL(2,1) NOT NULL COMMENT '单圈速度评分(1-10)',
corner_control DECIMAL(2,1) NOT NULL COMMENT '弯道操控评分(1-10)',
start_reaction DECIMAL(2,1) NOT NULL COMMENT '起步反应评分(1-10)',
tire_adaptation DECIMAL(2,1) NOT NULL COMMENT '轮胎适配评分(1-10)',
pressure_handling DECIMAL(2,1) NOT NULL COMMENT '压力应对评分(1-10)',
driver_vector VECTOR(5) NOT NULL COMMENT '车手能力核心向量',
VECTOR INDEX idx_driver_vector(driver_vector) WITH (distance=cosine, type=hnsw, lib=vsag),
INDEX idx_manufacturer_driver(manufacturer, driver_name),
UNIQUE KEY uk_driver(manufacturer, driver_name)
) COMMENT '2026F1车手能力表';
二、插入数据
接下来我们插入数据,我先叠个buff,这部分内容相对主观,每个人看到的内容和角度都有不同,加上个人喜好,很难完全客观。大体情况如下:
- 先插入动力单元表,目前根据FIA规则,动力单元制造商会在每个赛季开始前提交动力单元,并由FIA随即分发给使用该品牌的所有车队,因此这种给客户车队的动力单元性能不如自己的情况不太会出现。但是厂队的优势在于,自研动力单元之后,对该动力单元的了解程度以及使用情况更加了解,在新规第一年有额外的优势,因此我们需要对5大厂队中的法拉利、奔驰、红牛-福特做微调。
- 而空气动力学方面,纽维加入阿斯顿马丁带来的增益,要考虑进去,加上各家赛车传统的优势以及研发投入等等,做一个综合的评分。
- 研发能力也是根据过往做一个预估,各家都有自己的烟雾弹,以及过往的固有印象,都要做一个权重评估
- 厂商经验和过往成绩,这个基本上一目了然,各家在F1领域的经验都是一目了然,相对简单一点
说完赛车,还有一个可能更主观的内容——车手,截止
USE f1_2026_constructors;
-- 1. 动力单元表(f1_power_unit)
INSERT INTO f1_power_unit (
manufacturer, power_supplier, season, power_kw, fuel_efficiency,
hybrid_recycle, thermal_efficiency, reliability, fuel_adaptation, power_vector
)
VALUES
-- 奔驰供应商
('奔驰', '奔驰', 2026, 443, 4.5, 95, 0.53, 9.8, 10, '[443, 9.8, 88, 0.45, 9.4, 9.9]'),
('法拉利', '法拉利', 2026, 441, 4.3, 93, 0.51, 8.8, 9, '[441, 8.8, 86, 0.47, 9.2, 9.7]'),
('阿斯顿马丁', '本田', 2026, 443, 4.4, 94, 0.52, 9.4, 9, '[443, 9.4, 87, 0.46, 9.3, 9.8]'),
('红牛', '福特', 2026, 442, 4.2, 92, 0.50, 9.1, 8, '[442, 9.1, 85, 0.48, 9.1, 9.6]'),
('迈凯伦', '奔驰', 2026, 443, 4.5, 95, 0.53, 9.9, 10, '[443, 9.9, 89, 0.44, 9.5, 9.9]'),
('奥迪', '奥迪', 2026, 435, 4.0, 90, 0.48, 7.7, 9, '[435, 7.7, 82, 0.51, 8.8, 9.3]'),
('威廉姆斯', '奔驰', 2026, 443, 4.5, 95, 0.53, 9.8, 10, '[443, 9.8, 88, 0.45, 9.4, 9.9]'),
('阿尔派', '奔驰', 2026, 443, 4.4, 94, 0.52, 9.5, 9, '[443, 9.5, 87, 0.46, 9.3, 9.8]'),
('凯迪拉克', '法拉利', 2026, 438, 4.1, 91, 0.49, 7.4, 8, '[438, 7.4, 83, 0.50, 8.9, 9.4]'),
('哈斯', '法拉利', 2026, 438, 4.1, 91, 0.49, 7.9, 8, '[438, 7.9, 84, 0.49, 9.0, 9.5]'),
('小红牛', '福特', 2026, 437, 4.0, 90, 0.48, 8.1, 8, '[437, 8.1, 83, 0.49, 8.9, 9.4]');
-- 2. 空气动力学表(f1_aerodynamics)
INSERT INTO f1_aerodynamics (
manufacturer, season, downforce_kn, drag_coeff, aero_efficiency,
low_speed_adapt, regulation_compliance, track_type, aero_vector
)
VALUES
('奔驰', 2026, 12.7, 0.73, 16.85, 9, 10, '高速赛道', '[16.85, 0.72, 16.5, 8.9, 9.8]'),
('法拉利', 2026, 12.9, 0.77, 16.70, 9, 10, '高速赛道', '[16.70, 0.73, 16.3, 8.8, 9.7]'),
('阿斯顿马丁', 2026, 12.8, 0.74, 16.72, 9, 9, '多弯赛道', '[16.72, 0.74, 16.4, 8.7, 9.6]'),
('红牛', 2026, 12.6, 0.74, 16.75, 8, 9, '高速赛道', '[16.75, 0.75, 16.2, 8.6, 9.5]'),
('迈凯伦', 2026, 12.5, 0.76, 16.60, 9, 10, '多弯赛道', '[16.60, 0.76, 16.1, 8.5, 9.4]'),
('奥迪', 2026, 12.4, 0.80, 15.90, 7, 8, '高速赛道', '[15.90, 0.78, 15.5, 8.3, 9.2]'),
('威廉姆斯', 2026, 12.3, 0.84, 15.77, 8, 8, '多弯赛道', '[15.77, 0.79, 15.3, 8.2, 9.1]'),
('阿尔派', 2026, 12.3, 0.86, 15.80, 8, 8, '高速赛道', '[15.80, 0.77, 15.4, 8.4, 9.3]'),
('凯迪拉克', 2026, 12.1, 0.81, 15.50, 6, 7, '多弯赛道', '[15.50, 0.80, 15.1, 8.1, 9.0]'),
('哈斯', 2026, 12.5, 0.85, 15.60, 7, 7, '高速赛道', '[15.60, 0.81, 15.2, 8.0, 8.9]'),
('小红牛', 2026, 12.2, 0.81, 16.05, 7, 8, '多弯赛道', '[16.05, 0.77, 15.6, 8.2, 9.1]');
-- 3. 研发能力表(f1_rnd_capability)
INSERT INTO f1_rnd_capability (
manufacturer, season, rnd_ratio, iteration_speed, regulation_adapt_progress,
patent_weight, rnd_vector
)
VALUES
('奔驰', 2026, 15.80, 1.6, 10, 9, '[15.8, 1.6, 9.8, 9.4]'),
('法拉利', 2026, 15.50, 1.5, 9, 9, '[15.5, 1.5, 9.7, 9.3]'),
('阿斯顿马丁', 2026, 15.20, 1.4, 9, 8, '[15.2, 1.4, 9.6, 9.2]'),
('红牛', 2026, 14.80, 1.3, 9, 8, '[14.8, 1.3, 9.5, 9.1]'),
('迈凯伦', 2026, 14.50, 1.2, 10, 8, '[14.5, 1.2, 9.4, 9.0]'),
('奥迪', 2026, 13.50, 1.1, 8, 7, '[13.5, 1.1, 9.2, 8.8]'),
('威廉姆斯', 2026, 13.20, 1.0, 8, 7, '[13.2, 1.0, 9.1, 8.7]'),
('阿尔派', 2026, 13.80, 1.1, 8, 7, '[13.8, 1.1, 9.3, 8.9]'),
('凯迪拉克', 2026, 12.50, 0.9, 7, 6, '[12.5, 0.9, 9.0, 8.6]'),
('哈斯', 2026, 12.80, 0.8, 7, 6, '[12.8, 0.8, 8.9, 8.5]'),
('小红牛', 2026, 13.00, 0.9, 7, 6, '[13.0, 0.9, 9.0, 8.6]');
-- 4. 厂商经验表(f1_manufacturer_experience)
INSERT INTO f1_manufacturer_experience (
manufacturer, debut_year, total_championship, new_regulation_exp, experience_vector
)
VALUES
('奔驰', 1954, 8, 5, '[8, 9.8, 3.8]'),
('法拉利', 1950, 16, 6, '[16, 9.9, 3.9]'),
('阿斯顿马丁', 1959, 0, 3, '[0, 9.2, 3.5]'),
('红牛', 2005, 5, 4, '[5, 9.7, 3.7]'),
('迈凯伦', 1966, 8, 5, '[8, 9.6, 3.6]'),
('奥迪', 2026, 0, 1, '[0, 8.5, 3.2]'),
('威廉姆斯', 1977, 9, 4, '[9, 9.3, 3.4]'),
('阿尔派', 2021, 2, 3, '[2, 9.0, 3.3]'),
('凯迪拉克', 2026, 0, 1, '[0, 8.2, 3.1]'),
('哈斯', 2016, 0, 2, '[0, 8.0, 3.0]'),
('小红牛', 2006, 0, 3, '[0, 8.8, 3.2]');
-- 5. 过往赛季表现表(f1_past_season_perf)
INSERT INTO f1_past_season_perf (
manufacturer, points_2023, points_2024, points_2025, win_rate, reliability_rank, past_perf_vector
)
VALUES
('法拉利', 406, 458, 482, 28.50, 3, '[406,458,482,28.50,8]'),
('奔驰', 515, 528, 546, 35.20, 1, '[515,528,546,35.20,10]'),
('红牛', 580, 610, 630, 42.80, 2, '[580,610,630,42.80,9]'),
('阿斯顿马丁', 220, 255, 290, 11.30, 7, '[220,255,290,11.30,4]'),
('奥迪', 0, 0, 0, 0.00, 8, '[0,0,0,0.00,3]'),
('迈凯伦', 280, 310, 345, 15.60, 6, '[280,310,345,15.60,5]'),
('小红牛', 180, 205, 230, 8.70, 9, '[180,205,230,8.70,2]'),
('哈斯', 120, 145, 170, 5.30, 10, '[120,145,170,5.30,1]'),
('凯迪拉克', 0, 0, 0, 0.00, 8, '[0,0,0,0.00,3]'),
('威廉姆斯', 150, 180, 210, 7.20, 9, '[150,180,210,7.20,2]'),
('阿尔派', 200, 230, 260, 10.50, 7, '[200,230,260,10.50,4]');
-- 6. 车手能力表(f1_driver_ability)
INSERT INTO f1_driver_ability (
manufacturer, driver_name, single_lap_speed, corner_control, start_reaction,
tire_adaptation, pressure_handling, driver_vector
)
VALUES
('奔驰', '拉塞尔', 9.2, 9.0, 8.8, 8.9, 9.1, '[9.3, 9.1, 9.0, 8.9, 8.8]'),
('奔驰', '安东内利', 9.1, 8.9, 8.7, 8.8, 9.0, '[9.2, 9.0, 8.9, 8.8, 8.7]'),
('法拉利', '勒克莱尔', 9.6, 9.4, 9.2, 9.3, 9.5, '[9.4, 9.3, 9.2, 9.1, 9.0]'),
('法拉利', '汉密尔顿', 9.1, 9.3, 9.0, 9.2, 9.4, '[9.3, 9.2, 9.1, 9.0, 8.9]'),
('阿斯顿马丁', '阿隆索', 9.1, 9.0, 8.9, 8.8, 9.2, '[9.2, 9.1, 9.0, 8.9, 8.8]'),
('阿斯顿马丁', '斯特罗尔', 8.6, 8.5, 8.4, 8.3, 8.2, '[9.0, 8.9, 8.8, 8.7, 8.6]'),
('红牛', '维斯塔潘', 9.8, 9.6, 9.4, 9.5, 9.7, '[9.5, 9.4, 9.3, 9.2, 9.1]'),
('红牛', '哈贾尔', 8.6, 8.4, 8.3, 8.2, 8.1, '[8.9, 8.8, 8.7, 8.6, 8.5]'),
('迈凯伦', '诺里斯', 9.5, 9.2, 9.0, 9.1, 9.3, '[9.3, 9.2, 9.1, 9.0, 8.9]'),
('迈凯伦', '皮亚斯特里', 9.2, 9.0, 8.8, 8.9, 9.1, '[9.1, 9.0, 8.9, 8.8, 8.7]'),
('奥迪', '霍肯伯格', 9.2, 8.8, 8.6, 8.7, 8.9, '[9.0, 8.9, 8.8, 8.7, 8.6]'),
('奥迪', '博托莱托', 8.8, 8.6, 8.4, 8.5, 8.7, '[8.8, 8.7, 8.6, 8.5, 8.4]'),
('威廉姆斯', '阿尔本', 8.8, 8.5, 8.3, 8.4, 8.6, '[8.7, 8.6, 8.5, 8.4, 8.3]'),
('威廉姆斯', '塞恩斯', 9.0, 8.7, 8.5, 8.6, 8.8, '[8.9, 8.8, 8.7, 8.6, 8.5]'),
('阿尔派', '加斯利', 9.0, 8.6, 8.4, 8.5, 8.7, '[8.8, 8.7, 8.6, 8.5, 8.4]'),
('阿尔派', '克拉平托', 8.7, 8.3, 8.1, 8.2, 8.4, '[8.6, 8.5, 8.4, 8.3, 8.2]'),
('凯迪拉克', '佩雷兹', 9.1, 8.8, 8.6, 8.7, 8.9, '[8.9, 8.8, 8.7, 8.6, 8.5]'),
('凯迪拉克', '博塔斯', 8.9, 8.6, 8.4, 8.5, 8.7, '[8.7, 8.6, 8.5, 8.4, 8.3]'),
('哈斯', '贝尔曼', 8.4, 8.2, 8.0, 8.1, 8.3, '[8.5, 8.4, 8.3, 8.2, 8.1]'),
('哈斯', '奥康', 8.7, 8.4, 8.2, 8.3, 8.5, '[8.6, 8.5, 8.4, 8.3, 8.2]'),
('小红牛', '林德布拉德', 8.5, 8.3, 8.1, 8.2, 8.4, '[8.4, 8.3, 8.2, 8.1, 8.0]'),
('小红牛', '劳森', 8.6, 8.4, 8.2, 8.3, 8.5, '[8.5, 8.4, 8.3, 8.2, 8.1]');
