എന്താണ് TOON?
ഞങ്ങൾ എല്ലാവരും അവിടെ പോയിട്ടുണ്ട്. നിങ്ങൾ ഒരു ലാർജ് ലാംഗ്വേജ് മോഡലിന് (LLM) ഒരു പ്രോംപ്റ്റ് എഞ്ചിനീയറിംഗ് നടത്തുകയാണ്, നിങ്ങൾ ഘടനാപരമായ ഡാറ്റ കൈമാറേണ്ടതുണ്ട്. നിങ്ങൾ JSON-ലേക്ക് എത്തുന്നു. എല്ലാത്തിനുമുപരി, ഇത് വ്യവസായ നിലവാരമാണ്. എന്നാൽ നിങ്ങളുടെ സന്ദർഭ ജാലകം അനന്തമായ ചുരുണ്ട ബ്രേസുകൾ, ആവർത്തിച്ചുള്ള കീകൾ, ലളിതമായ പൂർണ്ണസംഖ്യകൾക്ക് ചുറ്റുമുള്ള ഉദ്ധരണി അടയാളങ്ങൾ എന്നിവയാൽ നിറയുന്നത് കാണുമ്പോൾ, നിങ്ങൾ ആശ്ചര്യപ്പെടാൻ തുടങ്ങുന്നു: ഇതൊരു മികച്ച മാർഗമുണ്ടോ?
YAML വായനാക്ഷമത വാഗ്ദാനം ചെയ്യുന്നുവെങ്കിലും അവ്യക്തത അനുഭവിക്കുന്നു. CSV ഇടതൂർന്നതാണെങ്കിലും ശ്രേണിയില്ല.
TOON നൽകുക.
TOON എന്നത് ഡവലപ്പർമാർക്ക് ശുദ്ധവായു പോലെയും AI മോഡലുകൾക്ക് മാതൃഭാഷയായും തോന്നുന്ന ഒരു ഡാറ്റ സീരിയലൈസേഷൻ ഫോർമാറ്റാണ്. ഇത് മനുഷ്യൻ്റെ വായനാക്ഷമതയും യന്ത്രത്തിൻ്റെ കാര്യക്ഷമതയും തമ്മിലുള്ള വിടവ് നികത്തുന്നു. ഇന്ന്, ഉയർന്ന കാര്യക്ഷമതയുള്ള ഡാറ്റാ കൈമാറ്റത്തിന് TOON പെട്ടെന്ന് പ്രിയങ്കരമായി മാറുന്നത് എന്തുകൊണ്ടാണെന്ന് മനസ്സിലാക്കാൻ അതിൻ്റെ വാക്യഘടനയിലേക്കും മെക്കാനിക്സിലേക്കും ആഴ്ന്നിറങ്ങാം.
തത്വശാസ്ത്രം: JSON സെമാൻ്റിക്സ്, YAML സൗന്ദര്യശാസ്ത്രം
അതിൻ്റെ കേന്ദ്രത്തിൽ, TOON JSON-ൻ്റെ അതേ ഡാറ്റാ മോഡൽ പങ്കിടുന്നു. JSON-പ്രിമിറ്റീവുകൾ (സ്ട്രിംഗുകൾ, നമ്പറുകൾ, ബൂലിയൻസ്, നൾ), ഒബ്ജക്റ്റുകൾ, അറേകൾ എന്നിവയിൽ നിങ്ങൾക്ക് ഇത് പ്രതിനിധീകരിക്കാൻ കഴിയുമെങ്കിൽ, നിങ്ങൾക്ക് അത് TOON-ൽ പ്രതിനിധീകരിക്കാം. എന്നിരുന്നാലും, അവതരണം തികച്ചും വ്യത്യസ്തമാണ്.
TOON ബ്രേസുകൾ ഒഴിവാക്കുന്നു. YAML പോലെയുള്ള ശ്രേണിയെ പ്രതിനിധീകരിക്കാൻ ഇത് ഇൻഡൻ്റേഷൻ ഉപയോഗിക്കുന്നു. ഒരു ലളിതമായ വസ്തു ശുദ്ധവും സമീപിക്കാവുന്നതുമായി തോന്നുന്നു:
YAML-ൽ നിന്ന് വ്യത്യസ്തമായി, TOON തരങ്ങളിൽ കർശനമാണ്. നോ എന്നാൽ ഫാൾസ് ആണോ അതോ സ്ട്രിംഗ് "ഇല്ല" ആണോ എന്ന് ഊഹിക്കേണ്ടതില്ല. TOON-ൽ, സ്ട്രിംഗുകൾക്ക് പ്രത്യേക പ്രതീകങ്ങൾ അടങ്ങിയിരിക്കുന്നതോ അക്കങ്ങളോട് സാമ്യമുള്ളതോ ശൂന്യമായതോ ആയ സന്ദർഭങ്ങളിൽ മാത്രമേ ഉദ്ധരണികൾ ആവശ്യമുള്ളൂ. നിങ്ങൾ സന്ദേശം: ഹലോ വേൾഡ് എന്ന് ടൈപ്പുചെയ്യുകയാണെങ്കിൽ, നിങ്ങൾക്ക് ഒരു സ്ട്രിംഗ് ലഭിക്കും. നിങ്ങൾ എണ്ണം: 42 എന്ന് ടൈപ്പ് ചെയ്താൽ, നിങ്ങൾക്ക് ഒരു നമ്പർ ലഭിക്കും.
ഐഡി: 123
പേര്: ആദ
സജീവം: സത്യം
അറേകളുടെ ശക്തി: നീളവും പട്ടികകളും
TOON യഥാർത്ഥത്തിൽ പാക്കിൽ നിന്ന് സ്വയം വേർതിരിക്കുന്നത് അതിൻ്റെ അറേകൾ കൈകാര്യം ചെയ്യുന്നതാണ്. ടോക്കൺ ഒപ്റ്റിമൈസേഷനായുള്ള "കില്ലർ ഫീച്ചർ" ഇതാണ്.
TOON ലെ എല്ലാ അറേയും ബ്രാക്കറ്റുകളിൽ അതിൻ്റെ ദൈർഘ്യം വ്യക്തമായി പ്രഖ്യാപിക്കുന്നു, ഇനങ്ങൾ[3]. ഇത് ഒരു മനുഷ്യനെ സംബന്ധിച്ചിടത്തോളം അനാവശ്യമായി തോന്നിയേക്കാം, എന്നാൽ ഒരു LLM ന് ഇത് ഒരു മഹാശക്തിയാണ്. ഘടനയെ ഉടനടി സാധൂകരിക്കാനും വെട്ടിച്ചുരുക്കൽ കണ്ടെത്താനും ഇത് മോഡലിനെ അനുവദിക്കുന്നു. രണ്ട് ഇനങ്ങൾക്ക് ശേഷം സ്ട്രീം കട്ട് ഓഫ് ആകുകയും എന്നാൽ ഹെഡർ മൂന്ന് വാഗ്ദാനം ചെയ്താൽ, എന്തോ കുഴപ്പം സംഭവിച്ചതായി പാഴ്സർക്ക് അറിയാം.
അറേകൾ കൈകാര്യം ചെയ്യുന്നതിനുള്ള മൂന്ന് വഴികൾ TOON ഫലപ്രദമായി വാഗ്ദാനം ചെയ്യുന്നു, ഏറ്റവും കാര്യക്ഷമമായ ഒന്ന് സ്വയമേവ തിരഞ്ഞെടുക്കുന്നു:
- ഇൻലൈൻ പ്രിമിറ്റീവ്സ്: അക്കങ്ങളുടെയോ സ്ട്രിംഗുകളുടെയോ ലളിതമായ ലിസ്റ്റുകൾക്ക്, TOON അതിനെ ഒതുക്കമുള്ളതായി നിലനിർത്തുന്നു.
ടാഗുകൾ[3]: അഡ്മിൻ,ഓപ്സ്,ദേവ്
- ** സ്റ്റാൻഡേർഡ് ലിസ്റ്റുകൾ:** മിക്സഡ് തരങ്ങൾക്ക്, ഇത് YAML-ന് സമാനമായ ഒരു ഹൈഫനേറ്റഡ് ലിസ്റ്റ് സിൻ്റാക്സ് ഉപയോഗിക്കുന്നു.
- ടാബുലാർ ഒബ്ജക്റ്റുകൾ: ഇതാണ് ഗെയിം ചേഞ്ചർ.
നിങ്ങൾക്ക് ഒരേ കീകൾ പങ്കിടുന്ന ഒബ്ജക്റ്റുകളുടെ ഒരു നിരയുണ്ടെങ്കിൽ—ഡാറ്റാബേസ് റെക്കോർഡുകളിലെ വളരെ സാധാരണമായ പാറ്റേൺ—ടൂൺ പിവറ്റുകൾ ടാബുലാർ ഫോർമാറ്റിലേക്ക്. ഓരോ വരിയിലും കീകൾ ആവർത്തിക്കുന്നതിനുപകരം, അത് ഹെഡ്ഡറിൽ ഒരിക്കൽ കീകൾ പ്രഖ്യാപിക്കുന്നു.
മുകളിലുള്ള ഉദാഹരണത്തിൽ, ഉപയോക്താക്കൾ[2]{id,name,role}: ഞങ്ങൾക്ക് 2 വരികൾ ഉണ്ടെന്ന് പറയുകയും സ്കീമ നിർവചിക്കുകയും ചെയ്യുന്നു. ഡാറ്റ ഒരു CSV പോലെയുള്ള ഘടനയിൽ പിന്തുടരുന്നു. ഇത് ഓരോ ഉപയോക്താവിനും "id":, "name":, "role": എന്നിവ ആവർത്തിക്കുന്നതിൻ്റെ വലിയ ടോക്കൺ ഓവർഹെഡ് ഒഴിവാക്കുന്നു.
ഉപയോക്താക്കൾ[2]{id,name,role}:
1, ആലീസ് അഡ്മിൻ, അഡ്മിൻ
2, ബോബ് സ്മിത്ത്, ഉപയോക്താവ്
ഡിലിമിറ്ററുകളും ടോക്കൺ കാര്യക്ഷമതയും
മുകളിലെ ഉദാഹരണങ്ങളിൽ കോമകളുടെ ഉപയോഗം നിങ്ങൾ ശ്രദ്ധിച്ചേക്കാം. TOON യഥാർത്ഥത്തിൽ മൂന്ന് ഡിലിമിറ്ററുകളെ പിന്തുണയ്ക്കുന്നു: കോമകൾ (ഡിഫോൾട്ട്), ടാബുകൾ, പൈപ്പുകൾ (|).
എന്തുകൊണ്ടാണ് ഇത് പ്രസക്തമാകുന്നത്? ടോക്കണൈസേഷൻ.
പല LLM ടോക്കണൈസറുകളിലും, ഒരു കോമയും ഒരു ഉദ്ധരണിയും ഒന്നിലധികം ടോക്കണുകളായി വിഭജിച്ചേക്കാം. എന്നിരുന്നാലും, ഒരു ടാബ് പ്രതീകം പലപ്പോഴും വളരെ വൃത്തിയായി ടോക്കണൈസ് ചെയ്യുന്നു. അറേ ഹെഡർ ലെവലിൽ ഡിലിമിറ്ററുകൾ മാറാൻ TOON നിങ്ങളെ അനുവദിക്കുന്നു. നിങ്ങൾ ഒരു ടാബ് ഡിലിമിറ്റർ ഉപയോഗിക്കുകയാണെങ്കിൽ, നിങ്ങളുടെ ഡാറ്റ കൂടുതൽ കംപ്രസ്സുചെയ്യുന്ന സ്പെയ്സുകൾ അടങ്ങിയ സ്ട്രിംഗുകൾ ഉദ്ധരിക്കേണ്ട ആവശ്യമില്ല.
"കൂട്ടിയിടികൾ" കൈകാര്യം ചെയ്യാൻ ഫോർമാറ്റ് സ്മാർട്ടാണ്. നിങ്ങളുടെ ഡാറ്റയിൽ സജീവ ഡിലിമിറ്റർ അടങ്ങിയിട്ടുണ്ടെങ്കിൽ, TOON ആ പ്രത്യേക മൂല്യം ഉദ്ധരിക്കുന്നു.
ഇനങ്ങൾ[2]{sku,name,qty}:
A1, വിജറ്റ് നാമം, 2
B2, ഗാഡ്ജെറ്റ് നാമം, 1
കീ ഫോൾഡിംഗ്: വക്രം പരത്തുന്നു
TOON-ൻ്റെ കാര്യക്ഷമതയിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കുന്ന മറ്റൊരു സവിശേഷത കീ ഫോൾഡിംഗ് ആണ്. ആഴത്തിൽ കൂടുകൂട്ടിയ വസ്തുക്കൾ സാധാരണയായി തിരശ്ചീന സ്ഥലവും ടോക്കണുകളും തിന്നുതീർക്കുന്ന ഇൻഡൻ്റേഷൻ്റെ "പടിക്കെട്ടിന്" കാരണമാകുന്നു.
ഇൻ്റർമീഡിയറ്റ് ഒബ്ജക്റ്റുകൾക്ക് സഹോദരങ്ങളില്ലാത്ത ആഴത്തിലുള്ള ശ്രേണി നിങ്ങൾക്കുണ്ടെങ്കിൽ, TOON-ന് അവരെ ഒരു ഡോട്ട്-നട്ടേഷൻ പാതയിലേക്ക് ചുരുക്കാൻ കഴിയും.
എഴുതുന്നതിനു പകരം:
നിങ്ങൾക്ക് എഴുതാം:
ഡാറ്റ:
മെറ്റാഡാറ്റ:
ഇനങ്ങൾ[2]: a,b
സ്പെക്ക് v1.5 മുതൽ ലഭ്യമായ ഈ സവിശേഷത, ലൈൻ എണ്ണവും ഇൻഡൻ്റേഷൻ ടോക്കണുകളും ഗണ്യമായി കുറയ്ക്കുന്നു. പ്രധാനമായി, ഇത് പൂർണ്ണമായും പഴയപടിയാക്കാവുന്നതാണ്. പാത്ത് എക്സ്പാൻഷൻ പ്രവർത്തനക്ഷമമാക്കി നിങ്ങൾ ഡാറ്റ ഡീകോഡ് ചെയ്യുമ്പോൾ, അത് ആഴത്തിലുള്ള ഒബ്ജക്റ്റ് ശ്രേണിയെ പൂർണ്ണമായും പുനർനിർമ്മിക്കുന്നു.
data.metadata.items[2]: a,b
കണിശതയും സുരക്ഷയും
അതിൻ്റെ സംക്ഷിപ്ത രൂപം ഉണ്ടായിരുന്നിട്ടും, TOON ഡാറ്റയിൽ അയഞ്ഞതല്ല. അത് ഉദ്ധരിക്കാനും രക്ഷപ്പെടാനുമുള്ള കർശനമായ നിയമങ്ങൾ പാലിക്കുന്നു.
സ്ട്രിംഗുകൾ സാധാരണയായി ഉദ്ധരിക്കാതെ തന്നെ തുടരുന്നു, ഇത് വായനാക്ഷമതയ്ക്ക് മികച്ചതാണ്. എന്നിരുന്നാലും, ഡാറ്റ സമഗ്രത ഉറപ്പാക്കാൻ TOON എഡ്ജ് കേസുകൾക്കായി ഉദ്ധരണി നടപ്പിലാക്കുന്നു. ഒരു സ്ട്രിംഗ് ഒരു സംഖ്യ പോലെ കാണപ്പെടുന്നുവെങ്കിൽ (ഉദാ. "05" അല്ലെങ്കിൽ "1e-6"), ഒരു സംഖ്യയായി പാഴ്സ് ചെയ്യുന്നത് തടയാൻ അത് ഉദ്ധരിക്കുന്നു. ഒരു സ്ട്രിംഗ് എന്നത് ട്രൂ അല്ലെങ്കിൽ നൾ പോലെയുള്ള റിസർവ്ഡ് വാക്ക് ആണെങ്കിൽ, അത് ഉദ്ധരിക്കപ്പെടും.
കൂടാതെ, TOON സംഖ്യകളെ സാധാരണമാക്കുന്നു. ഇത് കാനോനിക്കൽ ഡെസിമൽ ഫോമുകൾ പുറപ്പെടുവിക്കുന്നു-ശാസ്ത്രീയ നൊട്ടേഷനോ ഔട്ട്പുട്ടിൽ പിന്നിലുള്ള പൂജ്യങ്ങളോ ഇല്ല - സ്ഥിരത ഉറപ്പാക്കുന്നു. ഇത് 'BigInt' പോലും സുരക്ഷിതമായി കൈകാര്യം ചെയ്യുന്നു; ഒരു സംഖ്യ സുരക്ഷിത പൂർണ്ണസംഖ്യ പരിധി കവിയുന്നുവെങ്കിൽ, ഗതാഗത സമയത്ത് കൃത്യമായ നഷ്ടം തടയുന്നതിന് അത് ഒരു സ്ട്രിംഗായി ക്രമീകരിച്ചിരിക്കുന്നു.
റൂട്ട് ഫോമുകൾ
നമ്മളിൽ ഭൂരിഭാഗവും റൂട്ട് ഒബ്ജക്റ്റുകളിൽ പ്രവർത്തിക്കുമ്പോൾ, TOON വഴക്കമുള്ളതാണ്. ഒരു പ്രമാണം ഒരു കീ-മൂല്യം ജോടിയിൽ നിന്ന് ആരംഭിക്കേണ്ടതില്ല. ഇത് റൂട്ട് അറേകളെ പിന്തുണയ്ക്കുന്നു (ഉടൻ [N]: ഉപയോഗിച്ച് ആരംഭിക്കുന്നു) അല്ലെങ്കിൽ ഒരൊറ്റ റൂട്ട് പ്രിമിറ്റീവ് പോലും. JSON-നുമായുള്ള ഈ പാരിറ്റി അർത്ഥമാക്കുന്നത്, നിങ്ങൾക്ക് മറ്റേ അറ്റത്ത് പാഴ്സർ ഉണ്ടെങ്കിൽ, നിലവിൽ JSON ഉപയോഗിക്കുന്ന ഏത് പൈപ്പ്ലൈനിലേക്കും നിങ്ങൾക്ക് TOON സ്വാപ്പ് ചെയ്യാം എന്നാണ്.
അന്തിമ ചിന്തകൾ
TOON എന്നത് "മറ്റൊരു ഫോർമാറ്റ്" മാത്രമല്ല. നിർണ്ണായക കോഡ് പോലെ തന്നെ പ്രോബബിലിസ്റ്റിക് മോഡലുകളും ഡാറ്റ ഉപയോഗിക്കുന്ന ഒരു യുഗത്തിനായുള്ള ഒരു പ്രത്യേക ഉപകരണമാണിത്. JSON-ൻ്റെ കർക്കശമായ ഡാറ്റാ മോഡലും CSV-യുടെ സാന്ദ്രതയും YAML-ൻ്റെ റീഡബിലിറ്റിയും സംയോജിപ്പിക്കുന്നതിലൂടെ, ഇത് തരത്തിലുള്ള സുരക്ഷ നഷ്ടപ്പെടുത്താതെ തന്നെ സന്ദർഭ-വിൻഡോ ഒപ്റ്റിമൈസേഷൻ്റെ നിർദ്ദിഷ്ട പ്രശ്നം പരിഹരിക്കുന്നു.
നിങ്ങൾ നിർമ്മിക്കുന്ന ഏജൻ്റുമാരോ, ഫൈൻ-ട്യൂണിംഗ് മോഡലുകളോ അല്ലെങ്കിൽ അനന്തമായ ക്ലോസിംഗ് ബ്രേസുകളിലൂടെ സ്ക്രോൾ ചെയ്യുന്നതിൽ മടുപ്പുളവാക്കുന്നവരോ ആണെങ്കിൽ, TOON-ന് ഒരു കാഴ്ച നൽകേണ്ട സമയമാണിത്.