TOON:一种为大模型设计的JSON压缩型数据结构

TOON(Token-Oriented Object Notation,面向令牌的对象表示法) 是一种专为大模型(LLM) 设计的 JSON 压缩型数据结构。它不是新的数据模型,而是对 JSON 数据模型的无损、紧凑重编码,专门优化 LLM 的 token 消耗和解析可靠性。

它融合了 YAML 的缩进式嵌套 + CSV 的表格布局,特别适合同构对象数组(如用户列表、产品目录、日志记录等),在这些场景下可将 token 数减少 30–60%,同时提升模型的数据检索准确率(基准测试中 TOON 约 73.9–74% vs JSON 的 69.7–70%)。

为什么 JSON 在 LLM 中“浪费” token?

JSON 的 {}[]""、重复的 key(如每个对象都写一次 "id":)会被 tokenizer 切成很多小 token。
TOON 把这些“噪声”去掉:

  • 键名只声明一次(header)
  • 用缩进表示嵌套
  • [N]{field1,field2,...}: 显式标注数组长度和结构(给模型“护栏”,减少幻觉)

经典对比示例

JSON(85 tokens 示例)

{
  "users": [
    { "id": 1, "name": "Alice", "role": "admin" },
    { "id": 2, "name": "Bob", "role": "editor" },
    { "id": 3, "name": "Eve", "role": "viewer" }
  ]
}

TOON(33 tokens,节省约 61%)

users[3]{id,name,role}:
  1,Alice,admin
  2,Bob,editor
  3,Eve,viewer

另一个真实场景示例(产品列表):

JSON

{
  "products": [
    { "id": 1, "name": "Laptop", "price": 3999.90 },
    { "id": 2, "name": "Mouse", "price": 149.90 },
    { "id": 3, "name": "Headset", "price": 499.00 }
  ]
}

TOON

products[3]{id,name,price}:
  1,Laptop,3999.90
  2,Mouse,149.90
  3,Headset,499.00

更复杂的嵌套示例(官方 GitHub 示例)

JSON

{
  "context": {
    "task": "Our favorite hikes together",
    "location": "Boulder",
    "season": "spring_2025"
  },
  "friends": ["ana", "luis", "sam"],
  "hikes": [ { "id":1, "name":"Blue Lake Trail", ... }, ... ]
}

TOON

context:
  task: Our favorite hikes together
  location: Boulder
  season: spring_2025
friends[3]: ana,luis,sam
hikes[3]{id,name,distanceKm,elevationGain,companion,wasSunny}:
  1,Blue Lake Trail,7.5,320,ana,true
  2,Ridge Overlook,9.2,540,luis,false
  3,Wildflower Loop,5.1,180,sam,true

Token 节省基准(来自多个独立测试)

  • 简单对象:节省 ~40%
  • 同构数组(产品/用户/订单):节省 50–61%
  • 混合结构大数据集:平均节省 39–42%
  • 实际案例:500 行客户表,JSON 花 $1940,TOON 只需 $760(同一模型、同一答案)

适用场景 & 边界

强烈推荐用 TOON 的情况

  • 大量同构记录(RAG 检索结果、工具输出、日志、数据库查询结果)
  • 需要降低 API 成本或扩大有效上下文窗口
  • 希望模型解析更准(显式 [N] 和 {header} 像 schema 一样指导注意力)

建议继续用 JSON 的情况

  • 深度嵌套、结构不规则的数据
  • 作为通用 API/存储格式(生态最成熟)
  • 对延迟极敏感的本地小模型(解析开销可能抵消 token 收益)

纯表格数据:CSV 比 TOON 还小一点,但 TOON 多了结构标注,对 LLM 更友好。

如何使用 TOON?

官方仓库(22k+ stars,已有 TypeScript、Python、Go、Rust 等多语言实现):

  • GitHub: https://github.com/toon-format/toon
  • 在线 Playground: https://toonformat.dev/playground
  • CLI 一键转换:npx @toon-format/cli input.json > output.toon

在提示词里直接把 JSON 转成 TOON 喂给模型即可,模型能无缝理解(甚至准确率更高)。

一句话总结
TOON 不是要取代 JSON,而是 LLM 时代的“提示词压缩协议” —— 在结构化数据喂模型的环节,把每一分 token 都用在刀刃上。

需要我给你一个具体的 JSON → TOON 转换工具代码(Python/JS)、更多基准数据,还是帮你把某个数据集转成 TOON 格式演示?随时说!🚀

文章已创建 5021

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部