← लैब पर वापस

कोड ग्राफ़ कहाँ फ़ायदेमंद है: बड़ी रिपॉज़िटरी, छोटे मॉडल

benchmarkmcpcoding-agentsevals

मेरे पिछले बेंचमार्क ने बताया था कि कोड ग्राफ़ से मेरा कोडिंग एजेंट सस्ता नहीं हुआ। इससे ज़्यादा कुछ कहने के लिए वह बहुत छोटा था: 24 सवाल, 25k ग्राफ़ नोड से बड़ा कुछ नहीं, कोई Opus नहीं। इसलिए मैंने उसे ऐसे पैमाने पर दोबारा चलाया जहाँ जवाब बदल सकता था, और योजना पहले ही लिख ली। परिकल्पनाएँ, रिपॉज़िटरी, बजट और विश्लेषण PLAN-v2.md में हैं, जिसे किसी भी रन से पहले कमिट किया गया था।

संक्षेप में: ग्राफ़ तब फ़ायदा देता है जब उसके बिना मॉडल खोजता ही रहता। kubernetes और vscode पर haiku ठीक यही मामला है। वहाँ sonnet थोड़ा बचाता है और opus कुछ नहीं, और छोटी रिपॉज़िटरी पर ग्राफ़ sonnet के लिए सादे grep से महँगा पड़ता है।

सेटअप

एजेंट GitHub Copilot CLI 1.0.90 है, जिसे हर सत्र में एक सवाल के साथ हेडलेस चलाया गया, और विकल्प दो हैं:

चार सार्वजनिक रिपॉज़िटरी, हर एक किसी कमिट पर पिन की गई:

रिपॉज़िटरीभाषाग्राफ़ नोड
full-stack-fastapi-templatePython, TypeScript1,601
dubTypeScript25,023
kubernetesGo146,421
vscodeTypeScript218,883

हर रिपॉज़िटरी में 16 सवाल हैं। आठ संरचना वाले हैं: किसी फ़ंक्शन को कौन बुलाता है, वह क्या बुलाता है, किसी CLI कमांड या HTTP हैंडलर से किसी नामित फ़ंक्शन तक का कॉल पाथ, और किसी सिग्नेचर के बदलने पर कौन-से फ़ंक्शन टूटते हैं। आठ सटीक हैं: कोई कॉन्फ़िग मान, कोई एनवायरनमेंट वेरिएबल कहाँ पढ़ा जाता है, वह लाइन जिस पर कोई एरर raise होता है, वह लाइन जिस पर कोई टाइप परिभाषित है। हर उत्तर कुंजी मैंने पिन किए गए कमिट पर हाथ से जाँची, और कुंजी की कोई प्रविष्टि तभी गिनी जाती है जब वह पूरे शब्द के रूप में मिले, इसलिए init_db को init नहीं माना जाता।

Haiku 4.5 ने हर विकल्प में सभी 64 सवालों के जवाब तीन बार दिए, और sonnet 5 ने दो बार। Copilot में Opus 5.5 के एक प्रॉम्प्ट की क़ीमत 15 प्रीमियम रिक्वेस्ट है, इसलिए उसने kubernetes और vscode के बारह संरचना वाले सवालों के जवाब एक बार दिए। यानी कुल 664 रन और लगभग 744 प्रीमियम रिक्वेस्ट।

लागत पहले नोट की तरह tokenEquiv है: बिना कैश वाला इनपुट, जमा 1.25 × कैश राइट, जमा 0.1 × कैश रीड, एक रन की सभी मॉडल कॉल पर जोड़कर।

नतीजे

grep की लागत के अनुपात में ग्राफ़ की लागत: हर सवाल के लिए दोहरावों पर ग्राफ़ वाले विकल्प की मध्यिका को grep वाले विकल्प की मध्यिका से भाग दिया गया, फिर सवालों पर मध्यिका ली गई, 95% बूटस्ट्रैप अंतराल के साथ। 1 से कम होने पर ग्राफ़ सस्ता है।

मॉडलरिपॉज़िटरी का आकारसंरचना वाले सवालसटीक सवाल
haiku 4.5छोटी (1.6k नोड)0.88 (0.65–1.29)0.92 (0.72–1.15)
haiku 4.5मध्यम (25k)0.61 (0.11–1.50)0.96 (0.75–1.37)
haiku 4.5बड़ी (146k, 219k)0.29 (0.11–0.70)1.01 (0.94–1.28)
sonnet 5छोटी1.51 (1.45–1.70)1.42 (1.20–1.71)
sonnet 5मध्यम0.94 (0.57–2.00)1.14 (1.05–1.30)
sonnet 5बड़ी0.74 (0.62–0.92)1.13 (1.01–1.29)
opus 5.5बड़ी0.97 (0.72–1.10)–

संरचना वाले सवालों पर सही जवाब, ग्राफ़ बनाम grep:

मॉडलछोटीमध्यमबड़ी
haiku 4.513/24 बनाम 19/2420/24 बनाम 22/2438/47 बनाम 33/48
sonnet 513/16 बनाम 15/1616/16 बनाम 16/1632/32 बनाम 28/32
opus 5.5––12/12 बनाम 12/12

लागत और सटीकता एक साथ, संरचना वाले सवालों पर प्रति सही जवाब tokenEquiv के रूप में:

संरचना वाले सवालों पर प्रति सही जवाब टोकन, कोड ग्राफ़ के साथ और सिर्फ़ grep के साथ, FastAPI टेम्पलेट पर और kubernetes व vscode पर

टिकने वाले नतीजे:

छोटे मॉडल को सबसे ज़्यादा फ़ायदा क्यों होता है

मॉडल कॉल गिनें। grep के साथ संरचना वाले एक जवाब पर haiku की कॉल की मध्यिका kubernetes पर 22 और vscode पर 20 थी, और असर वाले एक सवाल में 114 कॉल लगीं। ग्राफ़ के साथ यह मध्यिका 5 और 4 थी। हर कॉल पूरी बातचीत दोबारा भेजती है, इसलिए लंबी खोज अपनी कॉल की गिनती से जितनी लगती है, उससे कहीं ज़्यादा महँगी पड़ती है: haiku का सबसे महँगा grep जवाब 471k tokenEquiv तक पहुँचा।

grep के साथ sonnet की खोजें छोटी थीं: 8 कॉल, बनाम ग्राफ़ के साथ 4। Opus ने दोनों विकल्पों में 4 या 5 कॉल लीं, इसलिए ग्राफ़ के पास घटाने को कुछ था ही नहीं, और जो थोड़ा-बहुत उसने बचाया, उसे उसका तय ओवरहेड खा गया।

मेरा अनुमान, जिसे मैंने सीधे नहीं परखा: ग्राफ़ खोज के टर्न की जगह लेता है, इसलिए वह तब फ़ायदा देता है जब उसके बिना मॉडल को ऐसे बहुत-से टर्न लेने पड़ते, यानी बड़ी रिपॉज़िटरी पर कमज़ोर मॉडल। मज़बूत मॉडल grep के साथ पहले से ही कुशलता से खोजता है, और छोटी रिपॉज़िटरी पर किसी को बहुत-से टर्न की ज़रूरत नहीं पड़ती।

Copilot प्रीमियम रिक्वेस्ट का बिल प्रति प्रॉम्प्ट बनाता है, कॉल चाहे कितनी भी हों, इसलिए Copilot के अंदर ग्राफ़ से पैसे नहीं बचते। समय बचता है: बड़ी रिपॉज़िटरी पर haiku के संरचना वाले जवाबों में लगे समय की मध्यिका ग्राफ़ के साथ 71 सेकंड और grep के साथ 157 सेकंड रही। छोटी रिपॉज़िटरी पर ग्राफ़ वाला विकल्प धीमा था।

हर विकल्प कहाँ ग़लत हुआ

पहले नोट के बाद क्या बदला

पहले नोट ने कहा था कि 25k नोड तक की रिपॉज़िटरी पर Claude मॉडल के साथ ग्राफ़ से टोकन बचत की उम्मीद न करें। उन आकारों पर यह अब भी सही है। उनसे ऊपर क्या होता है, यह उस नोट में छूट गया था: kubernetes और vscode पर छोटे मॉडल फ़ायदे में रहते हैं, और मॉडल जितना छोटा, फ़ायदा उतना ज़्यादा।

ग्राफ़ को एजेंट से जोड़ रही टीम से मैं क्या कहूँगा

सीमाएँ

दोहराएँ

सब कुछ code-graph-vs-grep में है: रन से पहले लिखी गई योजना, हर उत्तर कुंजी के सबूत के साथ सवाल, ड्राइवर, सभी 664 रन उनके जवाबों के साथ, और विश्लेषण।

node bench/run-copilot.mjs --model claude-haiku-4.5 --reps 3 --out results/v2/claude-haiku-4.5.json
python3 bench/stats-v2.py results/v2/*.json