在AI应用开发中,JSON格式的数据传输消耗了大量token。开发者Mahesh Vaikri提出了一种名为ISON(Interchange Simple Object Notation)的新格式,能在保持数据完整性的同时显著减少token使用。
JSON的token浪费问题
传统JSON格式充斥着大量括号、引号和冒号。以一个典型的用户数据为例:
{
"users": [
{"id": 1, "name": "Alice", "email": "alice@example.com", "active": true},
{"id": 2, "name": "Bob", "email": "bob@example.com", "active": false},
{"id": 3, "name": "Charlie", "email": "charlie@example.com", "active": true}
]
}
这个结构需要87个token,其中大部分被语法符号占用。
ISON的简洁设计
同样的数据用ISON表示:
table.users
id:int name:string email active:bool
1 Alice alice@example.com true
2 Bob bob@example.com false
3 Charlie charlie@example.com true
仅需34个token,减少了61%。ISON采用表格状结构,基于LLM训练时已熟悉的TSV模式。
核心特性详解
数据块类型:
-
table.name– 多行数据表 -
object.name– 单行键值配置
引用系统:
-
:1– 引用id=1的行 -
:user:42– 命名空间引用 -
:RELATIONSHIP:id– 关系引用
类型注解:
-
支持 :int、:string、:bool、:float -
field:computed– 计算字段 -
空值用 ~或null表示
权威性能测试
项目进行了300道题目的大规模基准测试,覆盖20个数据集,使用GPT-4o标准分词器:
| 格式 | Token数 | 相比JSON | 准确率 | 每千Token准确率 |
|---|---|---|---|---|
| ISON | 3,550 | -72.0% | 88.3% | 24.88 |
| TOON | 4,847 | -61.7% | 88.7% | 18.29 |
| JSON压缩 | 7,339 | -42.1% | 89.0% | 12.13 |
| JSON | 12,668 | 基准线 | 84.7% | 6.68 |
ISON在所有20项token效率测试中获胜,比JSON高出272%的token效率。
完整生态系统
ISON已构建跨5种编程语言的11个包,通过303+项测试:
安装使用:
# JavaScript/TypeScript
npm install ison-parser ison-ts isonantic-ts
# Python
pip install ison-py isonantic
# Rust
cargo add ison-rs isonantic-rs
# Go
go get github.com/maheshvaikri-code/ison/ison-go
代码示例(Python):
from ison_py import parse, to_json
doc = parse("""
table.users
id:int name:string active:bool
1 Alice true
2 Bob false
""")
# 访问数据
for row in doc['users']['rows']:
print(f"{row['id']}: {row['name']}")
# 转换为JSON
print(to_json(doc))
ISONL流式格式
对于大数据集,ISON提供基于行的ISONL格式:
table.users|id name email|1 Alice alice@example.com
table.users|id name email|2 Bob bob@example.com
每行自包含,适合流式处理和大数据场景。
类型安全验证
ISONantic提供类似Pydantic的验证功能:
import { table, string, int, boolean } from 'isonantic-ts';
const userSchema = table('users')
.field('id', int().required())
.field('name', string().min(1).max(100))
.field('email', string().email())
.field('active', boolean().default(true));
const users = userSchema.validate(doc);
小结
对于需要频繁与LLM交换数据的应用,ISON提供了一个更高效的替代方案。特别是在RAG、智能体等场景下,每个token都值得精打细算。


