स्कोरिंग एक benchmark को “JSON को आँख से देखने” से एक वस्तुनिष्ठ संख्या में बदल देती है। हर model के परिणाम को एक गोल्ड संदर्भ — अपेक्षित आउटपुट — के विरुद्ध आँका जाता है, जिससे पूर्णता, शुद्धता और एक समग्र गुणवत्ता स्कोर बनता है जिस पर आप छाँट सकते हैं।
स्कोरिंग को स्कोर करने के लिए कुछ चाहिए जिसके विरुद्ध स्कोर किया जा सके। हर scenario एक संदर्भ आउटपुट रखता है: उसके एक निश्चित entity का सही उत्तर। इसे मज़बूत model के साथ जनरेट करके (वेब खोज + एक source-of-truth दस्तावेज़), किसी ज्ञात-सही परिणाम को पेस्ट करके, फिर उसे हाथ से संपादित करके बनाएँ — और जब आप उस पर भरोसा कर लें तो उसे सत्यापित के रूप में चिह्नित करें। scenario को बिलकुल benchmark करने के लिए एक सत्यापित संदर्भ आवश्यक है, इसलिए आँकने के लिए हमेशा कुछ न कुछ रहता है। यदि आप बाद में संदर्भ को संपादित करते हैं — या scenario की स्कोरिंग कॉन्फ़िग बदलते हैं — तो मौजूदा स्कोर तब तक पुराने के रूप में चिह्नित रहते हैं जब तक आप फिर से स्कोर नहीं करते।
मूल समस्या: दो सही उत्तर अलग-अलग तरीके से लिखे जा सकते हैं। एक मॉडल जो किसी अभिनेता को “Robert Downey Jr.” के बजाय “R. Downey Jr.” नाम देता है, वह गलत नहीं है। इसलिए हर फ़ील्ड की तुलना एक स्तरीय सीढ़ी से की जाती है — पहले सबसे सस्ता और सबसे निश्चित, और आवश्यकता होने पर ही आगे बढ़ते हुए:
समान मान मेल खाते हैं। ऐसे मान भी जो केवल केस, आस-पास की whitespace, या संख्यात्मक परिशुद्धता में भिन्न होते हैं ("Acme" = "ACME", 4.0 = 4)। मुफ़्त और पूरी तरह नियतात्मक।
टेक्स्ट के लिए, कैंडिडेट और संदर्भ को एम्बेड किया जाता है और कोसाइन समानता द्वारा तुलना की जाती है। थ्रेशोल्ड से ऊपर वे समान गिने जाते हैं — इसलिए एक वैध वैकल्पिक वर्तनी जैसे "R. Downey Jr." बनाम "Robert Downey Jr." एक मैच है, त्रुटि नहीं। तिथियाँ अपवाद हैं: उनकी तुलना कैलेंडर मानों के रूप में की जाती है, कभी समानता के आधार पर नहीं, इसलिए एक निकट-लेकिन-गलत तिथि ("1972-03-14" बनाम "1972-03-24") एक स्पष्ट बेमेल है, न कि भ्रामक रूप से उच्च कोसाइन। बूलियन भी इसी तरह पूर्ण-या-कुछ-नहीं होते हैं।
ऐसे मान जिन्हें समानता के आधार पर तय करना बहुत कठिन है — सारांश और विवरण जैसे सभी free-text फ़ील्ड, और हर गैर-समान संख्या — एक judge मॉडल को भेजे जाते हैं, जो 0–100 में ग्रेड देता है कि उत्तर संदर्भ के अर्थ को कितनी अच्छी तरह पकड़ता है। यह अलग या अधिक संक्षिप्त शब्दों में लिखे गए सही उत्तर को पुरस्कृत करता है, और जहाँ फ़ील्ड इसकी अनुमति देता है वहाँ किसी संख्या को आंशिक अंक देता है (273.37 बनाम 273.35 का आणविक भार, 12 बनाम 15 की अर्ध-आयु) जबकि जहाँ सटीकता मायने रखती है वहाँ उसे विफल कर देता है (2020 बनाम 2023 का रिलीज़ वर्ष)। judge के बिना, free text एक निरंतर समानता स्कोर पर वापस चला जाता है, और एक गैर-समान संख्या बस एक mismatch होती है।
एक strictness सेटिंग embedding सीमा को नियंत्रित करती है: उच्च का अर्थ है कि दो अलग-अलग तरीके से लिखे गए मान समान गिने जाने के लिए अधिक समान होने चाहिए। strictness, वैकल्पिक judge model, और embedding model सभी scenario पर सेट होते हैं — हर बार score करते समय नहीं चुने जाते — ताकि हर model को समान रूप से आंका जाए और score तुलनीय बने रहें।
सूचियाँ — किसी फ़िल्म की कास्ट, किसी दवा के दुष्प्रभाव — वहीं मॉडल सबसे अधिक भिन्न होते हैं: एक छोटा मॉडल 4 अभिनेता ढूँढ सकता है जबकि एक मज़बूत मॉडल 15। क्रम मायने नहीं रखता, और अधिक सही आइटम ढूँढना जीतना चाहिए। इसलिए ऐरे को स्थिति-दर-स्थिति नहीं, बल्कि एक सेट के रूप में स्कोर किया जाता है:
यह देखने के लिए कि कौन-सी आइटम मैच हुईं, छूट गईं, या हैलुसिनेट हुईं, किसी रिज़ल्ट पंक्ति का विस्तार करें।
एक अकेला नंबर बहुत कुछ छिपा देता है, इसलिए हर परिणाम उप-स्कोर लेकर आता है:
एक्सपैंडेबल रो प्रति-फ़ील्ड ब्रेकडाउन दिखाती है: कैंडिडेट बनाम रेफ़रेंस, सीढ़ी के किस पायदान ने इसे तय किया, और जहाँ प्रासंगिक हो वहाँ समानता।
क्वालिटी पूरी कहानी का सिर्फ़ एक तिहाई है। जहाँ कोई बेंचमार्क मॉडल चयन को फ़ीड करता है — एक स्कोरिंग स्रोत के रूप में — वहाँ मॉडल की स्थिति क्वालिटी, स्पीड और लागत के मिश्रण से बनती है, और यह अनुपात आपका है: इसे प्रत्येक सिनैरियो प्रकार के लिए Settings → Organization → Defaults में सेट करें; हर सेट का योग 100 होता है और डिफ़ॉल्ट रूप से बराबर बँटा होता है। लागत को ज़्यादा वज़न दें तो एक सस्ता, ठीक-ठाक मॉडल किसी उत्कृष्ट महँगे मॉडल से आगे निकल जाएगा — जो कुछ वर्कलोड के लिए सही जवाब है और कुछ के लिए ग़लत, इसीलिए प्लेटफ़ॉर्म यह फ़ैसला आपके लिए नहीं करता।
जब कोई परिदृश्य किसी मॉडल को एक से अधिक बार चलाता है (रिपीटिशन), तो हर रन को अलग से स्कोर किया जाता है और पंक्ति औसत गुणवत्ता के साथ-साथ एक कंसिस्टेंसी स्प्रेड (रन में सबसे कम–सबसे अधिक) दिखाती है — ताकि ऐसा मॉडल जो औसतन सही है लेकिन अस्थिर है, आसानी से पहचाना जा सके। दिखाई देने वाला आउटपुट गुणवत्ता-के-अनुसार मध्यमान रन है।
Benchmarks सिर्फ enrichment तक सीमित नहीं हैं: एक scenario sample generation (हर model किसी entity type के लिए एक example JSON बनाता है) या schema generation (हर model एक fixed sample को एक schema में बदलता है) को भी test कर सकता है। हर एक के अपने scoring नियम होते हैं:
किसी भी तरह से परिचित columns अपना अर्थ बनाए रखते हैं — type-specific परिभाषा के लिए किसी column header पर hover करें, और पूरे breakdown के लिए किसी row को expand करें।
स्कोरिंग पहले से सेव किए गए परिणामों पर एक अलग पास है — यह कभी दोबारा enrichment नहीं करता, इसलिए परीक्षण किए जा रहे models के लिए दोबारा भुगतान नहीं करता। यह values की तुलना करने के लिए टेक्स्ट को embed जरूर करता है (और यदि scenario में judge हो तो उसे चलाता है), जो उपयोग के आधार पर credits काटता है। यह हर run के दौरान अपने आप होता है — हर model को उसके runs पूरे होते ही स्कोर किया जाता है — और जब भी आप दोबारा स्कोर करते हैं तब भी। यदि आपके organization में कोई embedding model कॉन्फ़िगर नहीं है (और scenario कोई override सेट नहीं करता), तो स्कोरिंग फिर भी चलती है लेकिन केवल exact matching पर वापस आ जाती है (वैकल्पिक वर्तनियाँ तब mismatch मानी जाती हैं), और ऐसा बताती है। एक टूटा हुआ judge अलग बात है: यदि कोई judge कॉल विफल होती है, तो स्कोरिंग एक स्पष्ट त्रुटि के साथ रुक जाती है और प्रभावित model कोई आंशिक स्कोर नहीं रखता — कोई result या तो पूरी तरह स्कोर होता है या बिल्कुल स्कोर नहीं होता, और बाद में दोबारा स्कोर करने योग्य बना रहता है। judge चुनते समय ध्यान दें कि LLM judges अपने ही मॉडल परिवार का पक्ष ले सकते हैं — ऐसे प्रोवाइडर से judge चुनें जिसका आप बेंचमार्क नहीं कर रहे हैं।
Model Management → Benchmarks में, scenario editor में एक reference सेट करें और सत्यापित करें (और वहाँ इसका judge model, embedding model, और strictness चुनें)। इसके बाद से, प्रत्येक run स्वचालित रूप से अपने सफल परिणामों को score करता है — एक क्रमबद्ध होने योग्य Quality कॉलम बिना किसी अतिरिक्त कदम के भर जाता है। Reference या scoring config संपादित करने के बाद फिर से grade करने के लिए Re-score results (header बटन या ··· मेनू) का उपयोग करें।