我做了三年AI落地,发现最难的不是模型,而是数据根本不认识彼此
事情是这样的。
前两天跟一个做工业AI的朋友聊天,他给我讲了一个场景,听完我整个人沉默了大概五秒钟。
他负责一个大型工厂的设备预测性维护项目。简单说就是让AI盯着几百台设备的数据,在上游设备出问题之前提前预警,避免产线停摆。听起来是一个很典型的工业AI场景对吧?模型选好了,特征工程也做了,数据管道也通了。
然后上线第一周就翻车了。
有一台关键的压缩机,AI报了异常。温度曲线在上升,振动频率也在偏移。运维团队冲过去检查,折腾了两个小时,啥也没查出来。后来调了维修记录才发现,这台设备三天前刚做完例行保养,换了冷却液,温度短暂波动是正常的。就是设备根本没毛病,是AI不知道设备刚修过。
我当时就问他,你们没把维修记录接进去吗?
他叹了口气,说,维修记录在另一个系统里。设备状态数据在SCADA上,设备台账在ERP里,维修工单在EAM里,空间位置在GIS里。而且它不是一个简单的「加一个字段」的问题。这些系统从架构底层就是独立的,数据格式不一样,更新频率不一样,甚至时钟都对不齐。
他说完这句话,我突然意识到一个问题。
我们聊AI落地的时候,总是在聊模型、聊算法、聊算力。但真正在产线上跑过的人都知道,卡住的往往不是模型本身,而是数据根本不认识彼此。
一、有些墙不是一天砌起来的
这其实是一个非常吊诡的事情。
过去十几年,企业的数字化建设,基本走的是「缺啥补啥」的路子。需要监控设备就上SCADA,需要管资产就上ERP,需要管维修就上EAM。每个系统单拎出来,在自己的领域都干得挺好。但当AI来了,当业务要求你得把所有数据放在一起看的时候,问题就暴露了。
因为这些系统从来没有被设计成要互相「交谈」的。
坦率的讲,我一开始觉得这只是一个「数据集成」的老问题。做几条ETL管道,拉一个数据湖,不就解决了吗?
后来我才发现,我想得太简单了。
工业场景里的数据跟互联网场景是完全两回事。互联网的数据大多是人产生的,一个用户行为、一笔订单、一条评论,数据量虽然大,但结构相对规整,更新频率也基本可控。但工业场景的数据是设备产生的,高频、连续、海量。一台风机每秒可能产生几百个测点数据,一个中型工厂几千台设备,日积月累下来,数据量能有多大,你想想看。
二、时序数据的三个死穴
更麻烦的是时序数据。
什么叫时序数据?就是带时间戳的连续记录。温度每秒钟是多少,振动每分钟是多少,电流每毫秒是多少。这种数据跟一般的业务数据不一样,它有自己独特的问题。
第一个问题是写入压力。几千台设备同时往上写数据,一秒几百个数据点,你得保证一条都不丢。丢了就可能漏掉一次异常波动,漏掉了就可能是一次产线停机的代价。
第二个问题是存储。时序数据积累起来太快了。一个工厂跑一年,原始数据可能几十TB。不存不行,你需要历史数据做趋势分析和模型训练。全存又太贵,这是很现实的问题。
第三个问题是查询。当你需要做实时监控的时候,查询必须在毫秒级返回结果。想象一下,你盯着一个大屏,上面几百条设备曲线实时跳动,底层每一次刷新都在扫数据。如果你每次都要去扫描全部原始数据,那根本来不及。
这三个问题,就是为什么时序数据库这个东西会存在。
说到时序数据库,这里稍微岔开一下。其实时序数据库不是一个新概念。早在工业自动化时代就有人在做。但那时候的时序库更多是单机、封闭的,跟企业的其他系统老死不相往来。AI时代到来以后,时序数据库的需求被重新点燃了,因为AI需要看的不是一条孤立的曲线,而是曲线的「上下文」。
三、让四种数据围着一台设备说话
回到我朋友那个压缩机的故事。
AI判断一台设备是否异常,不能只看当前这一刻的温度。它需要知道过去一个小时、过去一天、过去一周的温度变化曲线,需要比对同型号设备在同样工况下的行为模式,需要了解这台设备的历史维修记录,甚至要知道它的安装位置,同一个工厂里,靠近锅炉房的设备和靠近通风口的设备,温度基准线本来就不一样。
这才是真正让数据「认识彼此」的含义。
不是简单地把不同系统的数据物理上放在一起,而是要围绕同一个业务对象,一台设备、一条产线、一个工厂,把时序数据、关系数据、空间数据、知识文档这些完全不同类型的数据,在逻辑上关联起来。
这个思路,用数据库行业的话说,叫「融合架构」。
金仓KES的时序能力KES TimeSeries,走的就是这个路线。它不是在外面挂一个独立的时序数据库,然后通过API调来调去。而是把时序能力直接做在融合数据库的架构里面,时序数据、关系数据、GIS数据、向量数据,在底层就是通的。
说人话就是,你查一台设备的实时温度曲线时,可以同时拿到它的维修记录、安装位置、同型号设备的故障知识库,不需要跨系统拼数据。
当然,融合的前提是时序能力本身要够硬。这块KES TimeSeries做了三个方向的优化。
写入,千万级指标点每秒
写入端,用了Append追加写加上无锁化和异步IO。说人话就是,数据来了直接往后追加,不搞复杂的随机写入,减少锁等待。在特定测试环境下,单节点能做到千万级指标点每秒的写入量。什么概念?一个大型工厂上万台设备的实时数据,基本可以稳定入库。
存储,10TB压成1TB
存储端,关键在压缩。时序数据有一个很有意思的特点,就是相邻的数据点之间变化通常很小。温度从25.1度变成25.2度,如果每次都存完整的浮点数就太浪费了。KES用了Delta-of-Delta增量编码和Gorilla浮点数压缩这类时序专用的算法,利用数据的连续性来大幅缩减存储。典型场景下压缩比能做到10比1,也就是说原来10TB的数据压缩完只有1TB。存储空间最高能减少90%左右。
查询,毫秒级响应怎么做到的
查询端,我觉得最实用的一个设计是连续聚合。什么意思呢?很多时候你看历史趋势,不需要看每秒的原始数据,你看的是分钟级甚至小时级的汇总。如果每次查询都要从头扫描全部原始数据,慢得要死。KES的做法是提前帮你把分钟、小时、天不同粒度的汇总数据算好存着。查的时候,把已经算好的历史部分跟最新这一小段原始数据一拼就行了,毫秒级就能出结果。
除了连续聚合,它还内置了时间桶聚合、动态降采样、数据补齐这些能力。这些名字听起来有点绕,其实都是在解决工业现场非常实际的问题。比如有些老旧的传感器采样频率不稳定,有时候一秒采一次,有时候五秒才采一次,采集到的数据就是「坑坑洼洼」的。数据补齐就是帮你把这些坑填上,恢复成一条连续、可分析的曲线。
四、北京地铁里的10倍
说真的,这些能力单拿出来看,每一项都是解决一个工程问题。但把它们放在融合架构里一起看,价值就不一样了。
因为这些工程问题解决得越彻底,AI应用能拿到的数据就越完整、越及时。数据完整了,模型的判断才准。数据及时了,预警才有意义。这个道理其实特别朴素。
落到实际业务上是什么样的?
北京轨道交通的应急指挥调度平台,用了KES时序库之后,写入性能比原来的系统提升了10倍以上,时序数据的存储空间占用量降了70%到80%,一些历史分析查询从分钟级缩短到了秒级。
10倍是什么概念?之前一分钟能写入的数据,现在六秒钟就写完了。之前需要等几分钟才能跑出来的分析结果,现在点一下就有了。对于应急指挥这种场景来说,几秒和几分钟的差距,可能就是一次事故预警能不能第一时间响应的差距。
我有时候觉得,这才是AI落地最被低估的部分。
大家都在盯着模型有没有变聪明,参数有没有变大,benchmark有没有刷新。但真正在产线上推过AI的人都知道,模型再聪明,喂进去的数据是碎片的、过时的、互相矛盾的,出来的结果就是垃圾。
Garbage in, garbage out,这个道理几十年前就有了,到现在仍然成立。
五、从建系统到建网
顺着这个再往深里聊一聊。
前面说的所有东西,时序库、融合架构、压缩、聚合,看起来都是非常「工程」的事情。但我觉得它背后折射出来的,其实是一个更大的趋势。
过去的数字化,是在「建系统」。
一条产线需要一个监控系统,就建一个监控系统。需要管库存了,就再上一个ERP。需要管客户了,再上一个CRM。每个系统都是独立的,数据格式不一样,接口不一样,甚至对同一个业务对象的定义都不一样。这就像在一张纸上画了很多独立的圈,每个圈里是一个世界,圈和圈之间只有偶尔画几根线连着。
但AI时代需要的,不是更多的圈,而是所有的圈长在同一张网上。
这件事的难度远比想象中大。因为它不是技术问题,是「遗产」问题。你不可能把一个运行了十几年的工厂里的所有系统全部推倒重来。你能做的,是在不破坏现有体系的前提下,逐步把数据「联通」起来。
融合架构的价值就在这。
它不要求你把所有的老系统都扔掉,但它给你一个底座,让新接入的数据,不管是时序的、关系的、空间的还是知识的,从一开始就长在一起。而老系统的数据可以通过逐步迁移,最终也进入这个统一的语境里。
故事讲到这里,其实已经不只是数据库的事了。
它更像是一个关于「如何让机器真正理解现实世界」的命题。现实世界本身就是多模态的。一个工厂不是由一堆孤立的传感器组成的,它是一个有机的整体。设备之间有关联,设备和人之间有关联,过去和现在之间有关联。如果你让AI只看某一个切面,它当然只能给你一个片面的答案。
回到开头那个压缩机的故事。如果那个AI知道设备刚做过保养,它就不会误报。如果它还能比对同型号设备的运行曲线,它就能更准确地判断什么是「异常」,什么是「正常波动」。如果它还能读到维修手册里的故障树,它甚至能告诉运维人员,大概率是哪个零件出了问题。
这不是科幻。技术层面所有拼图都已经有了。
缺的,只是让拼图真正拼在一起的那个底座。
我始终坚信一件事。AI落地的最后一公里,不是模型那一步,是数据那一步。谁能把数据这件事做得更透,谁才能真正让AI走进工厂、走进电网、走进地铁,而不是停留在PPT和Demo里。