W45-参加数据压缩竞赛的感受

参加了大模型小社区的数据压缩竞赛,用了大半天时间就完成交卷。什么水平还要等等看别人的提交,但用 AI Coding 的完成速度是真快呀。

这次用了 Windsurf 的 Codemap,很快就读懂了仓库。AI Coding 的大多数产品集中在输出端,忽视了人读得更慢、更乱的问题。当生成的速度逼近实时,认知输入端的延迟就成了新的性能瓶颈。像 Codemap、Deepwiki 这样的工具,是输入端的增强器,帮助工程师快速建立 mental model。

数据压缩的理论基石是信息论。香农定义的信息量,用于度量不确定性的消除,不确定性越高,信息熵越大。能有效消除不确定性的部分,才是真正的信息载荷。可预测、重复的部分属于冗余,数据压缩的目标是减少冗余、提升编码效率。

拿到题目后,想到了三种思路,对应三个层次的压缩逻辑。

第一种思路是语义压缩,结构化摘要。对数据做常规分析、消除冗余。我提交的版本用的就是这个思路,主要策略包括:

  1. 列表聚合:消费、行为、位置等长列表按时间窗口或类型聚合,只保留核心指标(订单数、平均客单价、停留天数等);

  2. 语义摘要:文本类数据(对话、搜索等)通过正则与模式抽取,生成 top_issues、top_keywords 等高价值线索;

  3. 统一清洗:利用通用工具(safe_json_list、日期解析、字段归一化),让不同来源的脏数据在统一框架下被压缩和解释;

第二种思路是编码压缩,符号级优化。通过统计概率生成更高效的词表映射,用更短的符号表达高频内容,类似哈夫曼编码。但问题是压缩后的数据要交给大语言模型使用,如果模型没见过这种符号体系它就看不懂。哪怕把编码规则一并提供,context 的开销估计也不会减少,相当于把转译工作也交给了大模型。所以这个思路的实现需要重新训练一个专属模型,成本极高。

第三种思路是工程压缩,Context Engineering 的方向。在实际生产中,单纯从数据压缩的角度节省 context 空间属于一种策略,放在 Context Engineering 下可以找到更多有效策略让大模型编写查询语句、调用 RAG 等工具,把得到的统计信息作为输入,再加上高压缩比的压缩算法,最终效果应该会成倍放大。

最后更新于