Drain: 简单有效的日志解析算法

很多云平台都有各种日志,但是并不是结构化的,但利用机器学习/数据挖掘从日志中挖掘信息的时候又希望输入是结构化数据

因此,如何从非结构化日志中提取结构化信息是一件很重要的事情,一个朴素的想法是:使用正则表达式自己做解析提取,但是这个方法有很多缺点1

  • 日志的量太多,肉眼看日志然后写正则表达式不可取
  • 日志来自系统里的每一个组件,每一个组件背后的开发者可能都有自己的写日志习惯,一个个适配太麻烦

在 Drain 算法被提出的时候(2017 年),很多日志解析手段都聚焦于离线批处理场景,但云平台的日志经常都是流式产生的,因此 Drain 算法聚焦在线流式处理场景,它可以自动从非结构化日志中挖掘日志模板,从而得到结构化数据

RIME 小鹤双拼极简配置:从零搭建

MacOS 自带的中文输入法只能说是勉强能用,有很多不舒服的点

  • 它没有第三方词库,很多流行的词都需要自己一个个字打
  • 好不容易自己打的词,多打几次希望它记住,但你会发现它经常记不住

诸如此类的吐槽我已经看到过很多,所以在这个 2026 的元旦假期,我决定做些改变——使用 RIME 输入法 🥳

更好的 TF-IDF: BM25

如果你经常翻阅 LLM (RAG) 或者信息检索相关文献的话,想必会经常看到 BM25 算法。BM25 是用来对检索到的东西按照相关性排序的算法。即在给定用户查询(Query)的情况下,计算每一个文档(Document)的相关性(Relevance)并进行排序