Pourquoi TOON surpasse les autres formats

LLM
Benchmarks
RAG

Si vous construisez des applications LLM, spécifiquement des systèmes de Génération Augmentée par Récupération (RAG) ou des agents qui consomment de grands ensembles de données, vous combattez probablement une guerre constante sur deux fronts : le coût des tokens et les limites de fenêtre de contexte.

Pendant des années, JSON a été la lingua franca par défaut de l'échange de données. C'est lisible par l'homme (principalement) et omniprésent. Mais lorsque vous collez un tableau JSON de 500 lignes dans un prompt, vous brûlez des milliers de tokens en noms de champs répétés ("id":, "name":, "email":) qui n'ont aucune valeur sémantique pour la ligne spécifique.

Entrez TOON. C'est un format conçu spécifiquement pour résoudre le problème du rapport signal/bruit dans les entrées LLM. Je me suis plongé dans les derniers benchmarks, et les résultats sont surprenants : TOON ne fait pas qu'économiser de l'espace ; il aide en fait des modèles comme GPT-5-nano et Gemini-2.5-flash à comprendre les données mieux.

Décomposons pourquoi TOON bat les poids lourds (JSON, CSV, YAML, XML) et regardons les chiffres bruts.

Le piège de la verbosité : JSON vs TOON

Le plus grand ennemi de l'efficacité des tokens est la répétition de structure. Regardons un ensemble de données d'analyse de séries temporelles standard. En JSON, chaque point de données individuel porte le bagage de son schéma.

JSON (Standard) Tokens utilisés dans le benchmark : 22 250

C'est beaucoup d'espace gaspillé. Maintenant, regardez l'équivalent TOON. TOON définit le schéma une fois dans l'en-tête, puis passe à une disposition dense de style CSV pour les valeurs.

TOON Tokens utilisés dans le benchmark : 9 120

Le résultat : Une réduction massive de 59,0 % de l'utilisation des tokens.

En supprimant les clés répétées, TOON vous permet de faire tenir plus d'historique dans la fenêtre de contexte du modèle. Mais surtout, contrairement au CSV, il maintient la conscience des types et une structure explicite via la définition d'en-tête metrics[5]{...}.

Pourquoi ne pas simplement utiliser CSV ?

C'est le contre-argument le plus courant. "Si vous voulez des données plates, utilisez simplement CSV."

Le problème est que les données du monde réel sont rarement parfaitement plates. CSV s'effondre complètement dès que vous avez des structures imbriquées, des listes à l'intérieur d'objets ou des descriptions complexes contenant des virgules et des guillemets.

Dans les benchmarks, spécifiquement la Piste de Structure Mixte (qui inclut les commandes e-commerce et les journaux d'événements), le CSV a été entièrement exclu car il ne pouvait pas représenter les données sans un aplatissement avec perte.

TOON gère cela avec grâce. Il permet les objets imbriqués tout en optimisant les tableaux. Dans un test de 100 dépôts GitHub (qui contiennent des descriptions textuelles mixtes et des métadonnées), l'écart d'efficacité était clair :

  • JSON : 15 145 tokens
  • TOON : 8 745 tokens (42,3 % d'économies)

Même contre JSON Compact (minifié), TOON a tout de même extrait près de 24 % d'économies supplémentaires. Lorsque vous payez par million de tokens, c'est un ROI immédiat.

Précision : Le gagnant surprise

Voici la partie qui m'a surpris. Habituellement, lorsque vous compressez des données, vous perdez en clarté. Vous vous attendriez à ce que le LLM ait du mal à analyser un format plus dense. Les benchmarks montrent le contraire.

Sur 209 questions de récupération de données testées sur des modèles comme Claude Haiku, Gemini Flash et GPT-5-nano, TOON a atteint une précision de récupération de 73,9 %, contre 69,7 % pour le JSON standard.

Pourquoi ? Cela se résume probablement à la Charge Cognitive (ou l'équivalent LLM).

  1. Moins de bruit : Le modèle n'a pas à prêter attention à des milliers de tokens "key" répétés. Les valeurs pertinentes sont plus proches les unes des autres dans le mécanisme d'attention.
  1. Métadonnées explicites : Les en-têtes TOON incluent le nombre ([N]) et les noms de champs explicitement.
  1. Conscience de la structure : Dans les tests posant des questions sur la structure de l'ensemble de données (par exemple, "Combien de lignes y a-t-il ?"), TOON a atteint 88 % de précision, tandis que JSON et XML traînaient derrière. Le nombre explicite dans l'en-tête TOON (repositories[100]) agit comme un indice qui empêche le modèle d'avoir à "compter" manuellement les tokens, ce pour quoi les LLM sont notoirement mauvais.

La fatigue XML et YAML

Nous devrions mentionner brièvement les autres concurrents.

XML est le grand perdant ici. Il est verbeux, difficile à lire et coûteux à traiter. Dans les benchmarks, XML a systématiquement utilisé le plus de tokens (plus de 5 000 pour un ensemble d'enregistrements d'employés uniforme que TOON a représenté en ~2 700) et a eu la précision la plus faible (67,1 %).

YAML fonctionne mieux que XML mais souffre toujours d'une inflation de tokens par rapport à TOON. Bien que YAML soit excellent pour les fichiers de configuration humains, sa nature sensible aux espaces et la répétition des clés le rendent sous-optimal pour les contextes de données à volume élevé. Dans le test "Commandes e-commerce", YAML a utilisé ~14 % de tokens de plus que TOON.

Quand changer ?

Les données sont assez concluantes. Si vous traitez avec :

  1. Listes d'objets : Journaux, historiques de transactions, résultats de recherche ou catalogues de produits.
  1. Pipelines RAG : Où vous récupérez des morceaux de données d'une base de données pour alimenter un prompt.
  1. API à volume élevé : Où la bande passante et la latence comptent.

TOON offre un scénario du "meilleur des deux mondes". Vous obtenez la densité du CSV avec l'intégrité structurelle du JSON.

Dans les benchmarks, GPT-5-nano a atteint une précision stupéfiante de 90,9 % sur les données formatées en TOON. Cela suggère que les modèles plus récents et plus intelligents deviennent de plus en plus adeptes à analyser ces formats optimisés, ce qui signifie que la "pénalité de lisibilité" de l'abandon de JSON est effectivement nulle pour la machine.

Si vous formatez toujours votre contexte RAG comme JSON.stringify(data, null, 2), vous payez effectivement une "taxe de lisibilité" sur chaque appel d'API. Il est peut-être temps de changer de format.