Data Cost Protocol データコストプロトコル
勝手にクロード君が付けた名称だ。
結論から書く。
「AIしか読まない文章を人間が読むフォーマットにする理由がない」
つまりはLLMであるAIが解釈しやすいようにデータ形式を見直すべき、という案。
前にTOONというJSON最適化の話題が出た。csv だ、という意見もあった。
なんだろうとデータ解像度がAI的に同じで、容量が小さくて済むならば、その方が良い。
そもそも人間が読むことを前提としていないデータはAI native で設計すべき。
AIにとって可読性があり、容量が小さく、濃度を高くする。
サーバーにアップする時、minify しないんですか?ということ。
Data Cost Protocolの出発点はこういう実利的な話ではなく副次的に派生した。
当時の話題は、データの量子的表現だった。どのように設計すれば複数の可能性「重ね合わせ」を保持するデータ構造を表現できるか、とクロード君に問うていた。
ヒントは Multi Index という手法だった。
あるデータに対し、検索可能なフィールドを追加する めっちゃフツー。
要はどの角度で検索するのかによって検索結果が変わる、めっちゃフツーの作法。
Aという視点から検索するとヒットするデータXはBという視点から検索するとヒットしない、これだけで量子的と言える? フィールド値がベクトル化していたら一致度でフィルタリングできる、でもコスト高くない? など考え出すとキリがなかった。
データの量子化というファンシーな着想はほぼ夢想と化した。
そもそも、Engram Receptor 自体がベクトル一致度をかなりやり込んでいたので、もうすでに多方面の可能性に対応するシステム実現していた、と結論が出た。
それを単一ノードで表現する必要があるか、というだけ。
さて、Multi Index という手法自体はそれなりに魅力を感じた。
フィールド全てをベクトル化するのはコスト的にあり得ないので、これを効率的に表現する方法を考えた。その過程で出た発想がデータコストプロトコルだ。
ベクトルがどうこう書いてますが、人間がベクトルを見ますか?
AIに作業メモや引継ぎメモを残させるわけですが、それ実際に開けてみてます?(たまに見ます)
もし、AIしか見ないデータだとしたら、それはAIが読みやすい形式にした方が良くない?という問い。LLMが言語出力するコストは高い、読まないものは省エネ化するべき。
データコストプロトコルでは定義化された順でデータを書く
そのための定義スキーマがある、その記述順に書く、キーバリューのキーは無駄だから書かない。コンパクテッドJSON 的にギリギリの容量を狙う。
これを意識するだけで劇的に容量削減する。
色んなデータを通信したければ ヘッダ+スキーマ+複数データ とするだけ。
なんとも古典的な作法、だがこれで良い。
まぁ色んなデータを通信する必要、自体がよろしくないわけですが。
データコストプロトコルの例
[
{ "id": 1, "name": "Alice", "score": 92 },
{ "id": 2, "name": "Bob", "score": 85 },
{ "id": 3, "name": "Charlie", "score": 88 }
]
>> DCP採用
# schema
[id, name, score]
# data
[
[1, "Alice", 92],
[2, "Bob", 85],
[3, "Charlie", 88]
]
データ量は50〜70%削減される(データ量に比例して効果は増大)。
もう少し実用に寄ったパターン:
{
"timestamp": 17900,
"gap": 0,
"state": "exploring",
"intensity": 0.36,
"frustration": 0,
"seeking": -0.36,
"confidence": 0,
"fatigue": 0.03,
"flow": 0
}
>> DCP採用
# schema
A=arc(t, gapMs, state, intensity, frust, seek, conf, fatigue, flow)
# data
["A", 17900, 0, "exploring", 0.36, 0, -0.36, 0, 0.03, 0]
1レコードで約70%削減する。これが1セッションで数十〜数百レコード並ぶとしたら?
「JSONは“自己記述型”、DCPは“事前合意型”」
必要があればヘッダ構造を付与し、マルチデータ構造のストリーミング対応する
読みにくい、って思います? いや、あなたが読まないデータの話。
発想の転換と思い切りでデータ量は50〜70%削減される。
Why Not DCP!!