> For the complete documentation index, see [llms.txt](https://weekly-essay.mikey.wang/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://weekly-essay.mikey.wang/ja/2025/w45-thoughts-from-participating-in-a-data-compression-competition.md).

# W45-データ圧縮コンテストに参加して感じたこと

LLMの小さなコミュニティが開いたデータ圧縮コンテストに参加し、半日余りで提出を終えた。水準がどの程度かは、ほかの参加者の提出を待たないとわからない。それでもAI Codingで仕上げる速さは本物だった。

今回はWindsurfのCodemapを使い、すぐにリポジトリを理解できた。AI Coding製品の大半は出力側に集中し、人が読むのが遅く、理解が散らかる問題を見落としている。生成速度がリアルタイムに近づくと、認知の入力側の遅延が新たな性能上のボトルネックになる。CodemapやDeepwikiのようなツールは入力側を強化し、エンジニアがメンタルモデルを素早く作るのを助ける。

データ圧縮の理論的基盤は情報理論だ。シャノンが定義した情報量は、不確実性がどれだけ解消されたかを測る。不確実性が高いほど情報エントロピーは大きい。不確実性を実際に減らす部分こそ、本当に情報を運んでいる。予測できる部分や繰り返しは冗長性であり、データ圧縮の目的はその冗長性を減らし、符号化の効率を上げることだ。

課題を見て、三つの方法を考えた。それぞれ異なる層の圧縮に対応する。

**一つ目は、意味の圧縮と構造化した要約だ。** データを通常の方法で分析し、冗長性を取り除く。提出した版はこの方法を採用し、主に次の戦略を使った。

1. リストの集約。消費、行動、位置などの長いリストを、時間窓や種類で集約し、注文数、平均購入単価、滞在日数などの主要指標だけを残す。
2. 意味の要約。会話や検索などのテキストデータから、正規表現やパターン抽出によってtop\_issues、top\_keywordsなどの価値ある手がかりを作る。
3. 共通のクレンジング。safe\_json\_list、日付解析、フィールドの正規化といった汎用ツールを使い、さまざまな出所の汚れたデータを共通の枠組みで圧縮し、解釈する。

**二つ目は、符号化による圧縮、記号レベルの最適化だ。** 統計的な確率に基づいて効率的な語彙マッピングを作り、頻出内容を短い記号で表す。ハフマン符号に似ている。ただし、圧縮後のデータを使うのは大規模言語モデルだ。モデルがその記号体系を知らなければ理解できない。符号化規則も渡したとしても、コンテキストの消費は減らないだろう。変換作業までモデルに任せることになるからだ。この方法を実現するには専用モデルを再訓練する必要があり、コストが極めて高い。

**三つ目は、エンジニアリングによる圧縮、Context Engineeringの方向だ。** 実際の運用では、データ圧縮だけでコンテキストの空間を節約するのも一つの戦略だが、Context Engineeringとして捉えれば、もっと有効な方法が見つかる。LLMにクエリーを書かせ、RAGなどのツールを呼ばせ、得られた統計情報を入力にする。そこに高圧縮率のアルゴリズムを組み合わせれば、効果は何倍にもなるはずだ。
