RAG और सर्च इंजीनियरिंगमध्यमपाठ 2168 मिनट का पाठ

Retrieval और उत्तर की क्वालिटी को मापना

एक RAG सिस्टम सर्च करने में या उत्तर देने में फेल हो सकता है। दोनों को मापें: retrieval के लिए recall@k और MRR, और उत्तरों के लिए faithfulness और correctness, एक golden question set पर।

पाठ वीडियो में

60 सेकंड में

Retrieval और उत्तर की क्वालिटी को मापना

एक RAG सिस्टम सर्च करने में या उत्तर देने में फेल हो सकता है। दोनों को मापें: retrieval के लिए recall@k और MRR, और उत्तरों के लिए faithfulness और correctness, एक golden question…

1/4
आसान शब्दों में
जब कोई क्रिकेट टीम हारती है, तो कोच पूछता है: गलती बल्लेबाज़ी में थी या गेंदबाज़ी में? अगर बल्लेबाज़ी खराब रही हो, तो गेंदबाज़ी सुधारने से कोई फायदा नहीं होगा। एक RAG सिस्टम के भी दो हिस्से होते हैं, सर्च और उत्तर, और क्या ठीक करना है यह जानने के लिए आपको दोनों को मापना होगा।
इस ट्रैक का हर बदलाव, चाहे वह chunk का साइज़ हो, कोई नया embedding model, hybrid search, एक re-ranker या कोई नया prompt हो, चीज़ों को बेहतर या बदतर बना सकता है। बिना माप-तोल के आप सिर्फ अंदाज़ा लगा रहे हैं, और तीन अच्छे सवालों पर एक डेमो आपको बहुत कम जानकारी देता है। आपको सवालों के एक तय सेट और कुछ साफ़-साफ़ नंबरों की ज़रूरत होती है।

गोल्डन क्वेश्चन सेट (The golden question set)

एक golden set असल ज़िंदगी के सवालों की एक लिस्ट होती है, जिसमें हर सवाल के साथ वह chunk या डॉक्यूमेंट दिया होता है जिसमें उसका उत्तर है, और साथ ही एक छोटा, सही उत्तर भी होता है। आप इसे एक बार लिखते हैं, समय के साथ बड़ा करते हैं, और हर बदलाव के बाद इसे चलाकर टेस्ट करते हैं।
फ़ील्डउदाहरण
सवाल"क्या मैं बची हुई कैज़ुअल लीव (casual leave) को आगे बढ़ा सकता हूँ?"
काम के chunk idshr-leave-v3#1
रेफरेंस उत्तरनहीं। बची हुई कैज़ुअल लीव को अगले साल के लिए आगे नहीं बढ़ाया जा सकता।
टैग्सpolicy, English, simple
  • सपोर्ट टिकटों, सर्च लॉग्स या कर्मचारियों से असली सवाल इस्तेमाल करें, जिनमें से पर्सनल डेटा हटा दिया गया हो।
  • अपनी हर वैरायटी को शामिल करें: भाषाएँ और लिपियाँ, छोटे और बड़े सवाल, कोड्स और नाम, फॉलो-अप सवाल, और उलझाने वाले सवाल।
  • डॉक्यूमेंट्स में ऐसे सवाल भी शामिल करें जिनका कोई उत्तर न हो। इसका सही आउटपुट "not found" (नहीं मिला) होना चाहिए।
  • इसका वर्ज़न बनाए रखें (versioned रखें), और इसके हिसाब से सिस्टम को इतना ज़्यादा ट्यून न करें कि यह एक निष्पक्ष टेस्ट ही न रहे। कई टीमें एक अलग हिस्सा बिना इस्तेमाल किए सुरक्षित (held-out) रखती हैं।
evaluating-ai-systems ट्रैक टेस्ट सेट बनाने और एक मॉडल को जज (LLM-as-a-judge) के तौर पर इस्तेमाल करने की गहराई में जाता है। यह पाठ उन विचारों को RAG पर लागू करता है।

Retrieval मेट्रिक्स

मेट्रिकयह किस सवाल का जवाब देता हैइसे कैसे कैलकुलेट किया जाता है
Recall@k (hit rate)क्या सही chunk टॉप k में बिल्कुल आया भी?उन सवालों का हिस्सा जहाँ कम से कम एक काम का chunk टॉप k में मौजूद है
Recall@k (पूरा)काम के कुल chunks में से कितने मिल पाए?टॉप k में मौजूद काम के chunks ÷ कुल काम के chunks, सभी सवालों का औसत
MRR (mean reciprocal rank)पहला सही chunk लिस्ट में कितना ऊपर था?1 ÷ (पहले सही chunk की रैंक) का औसत; अगर लिस्ट में कोई नहीं है तो 0
Precision@kटॉप k का कितना हिस्सा काम का था?टॉप k में मौजूद काम के chunks ÷ k
Python: hit rate, recall@k and MRRpython
def hit_at_k(results, relevant, k):
    return 1.0 if any(r in relevant for r in results[:k]) else 0.0

def recall_at_k(results, relevant, k):
    return len(set(results[:k]) & set(relevant)) / len(relevant)

def reciprocal_rank(results, relevant):
    for rank, r in enumerate(results, start=1):
        if r in relevant:
            return 1.0 / rank
    return 0.0

# Made-up results from a search system, for three golden questions.
golden = [
    {"q": "carry forward leave?", "relevant": ["hr#1"], "results": ["hr#0", "hr#1", "it#4"]},
    {"q": "travel allowance per day", "relevant": ["tr#2", "tr#3"], "results": ["tr#2", "hr#0", "tr#9"]},
    {"q": "wifi password reset", "relevant": ["it#7"], "results": ["it#4", "it#5", "hr#2"]},
]
k = 3
n = len(golden)
print("hit@3   ", sum(hit_at_k(g["results"], g["relevant"], k) for g in golden) / n)
print("recall@3", round(sum(recall_at_k(g["results"], g["relevant"], k) for g in golden) / n, 3))
print("MRR     ", round(sum(reciprocal_rank(g["results"], g["relevant"]) for g in golden) / n, 3))
यहाँ hit@3 है 0.667 (तीन में से दो सवालों को कुछ सही मिला), recall@3 है 0.5, और MRR है 0.5 (रैंक 2, 1 और कुछ नहीं मिलने पर ½, 1 और 0 मिलते हैं)। तीसरा सवाल retrieval की नाकामी है: कोई भी prompt बदलकर इसे ठीक नहीं किया जा सकता। नाकामियों को एक-एक करके देखें; वे औसत नंबरों से ज़्यादा सिखाती हैं।

उत्तर के मेट्रिक्स

  • Faithfulness (groundedness): क्या हर दावा ढूंढे गए सोर्स (स्रोतों) पर आधारित है? कोई उत्तर faithful होने के बावजूद गलत हो सकता है, अगर वे सोर्स ही गलत या पुराने हों।
  • Correctness: क्या उत्तर रेफरेंस उत्तर से मेल खाता है?
  • Citation accuracy: क्या उद्धृत (cited) किया गया हर सोर्स सच में उस वाक्य का समर्थन करता है?
  • सही "not found": जिन सवालों का कोई उत्तर नहीं था, क्या सिस्टम ने मनगढ़ंत उत्तर बनाने के बजाय यह कहा कि उत्तर नहीं मिला?

सावधानी के साथ LLM-as-a-judge

सैकड़ों उत्तरों को खुद अपने हाथों से चेक करना धीमा होता है, इसलिए टीमें अक्सर किसी मॉडल से उनका मूल्यांकन करने को कहती हैं: "यह रहा सोर्स और यह रहा उत्तर। क्या हर दावा समर्थित है? हाँ या ना में जवाब दें, और बिना समर्थन वाले दावों की लिस्ट बनाएँ।" यह LLM-as-a-judge तरीका बड़े पैमाने पर काम करता है, लेकिन जज भी गलतियाँ करते हैं और उनके अपने पक्षपात (biases) होते हैं, जैसे लंबे उत्तरों को ज़्यादा पसंद करना।
  1. 1

    एक साफ़ रूब्रिक (rubric) लिखें

    "1 से 10 तक रेटिंग दें" के मुकाबले सीधे और सटीक हाँ-या-ना वाले सवाल बेहतर काम करते हैं।
  2. 2

    जज को सबूत दें

    सवाल, सोर्सेस और उत्तर, और जहाँ मौजूद हो वहाँ रेफरेंस उत्तर भी दें।
  3. 3

    इंसानों से जज की तुलना करें

    इंसानों से भी कुछ सैम्पल लेबल करवाएँ, और दोनों की सहमति को मापें, उदाहरण के लिए Cohen's kappa के ज़रिए।
  4. 4

    इंसानों की निगरानी बनाए रखें

    जहाँ असहमति हो उन्हें और हर रन से कुछ रैंडम सैम्पल को खुद चेक करें।
  5. 5

    जज का सेटअप तय रखें

    रन के बीच जज के prompt और मॉडल को न बदलें, ताकि स्कोर्स की तुलना की जा सके।
सावधान रहें
सिर्फ एक नंबर पर भरोसा न करें। एक बेहतर दिखने वाला औसत स्कोर हिंदी के सवालों या पैसों से जुड़े सवालों में आई बड़ी गिरावट को छिपा सकता है। हर टैग (भाषा, विषय, कठिनाई) के हिसाब से स्कोर रिपोर्ट करें और हमेशा कुछ फेल हुए उदाहरणों को ज़रूर पढ़ें।
नोट
लॉन्च के बाद, इसके असली इस्तेमाल पर भी नज़र रखें: यूज़र्स कितनी बार citations पर क्लिक करते हैं, बॉट कितनी बार "not found" कहता है, thumbs-down की दर क्या है और कौन से सवाल इंसानों को सौंपे गए। ये आपको नए golden questions ढूँढने में मदद करते हैं।
यह करके देखें। एक ऐसी सर्च के लिए खुद हिसाब लगाकर MRR निकालें जहाँ तीन सवालों के पहले सही जवाब रैंक 1, 3 और 4 पर आते हैं। (उत्तर: (1 + 1/3 + 1/4) ÷ 3 ≈ 0.528.)

और देखें और पढ़ें

लैब

एक 20-सवालों का golden set और एक स्क्रिप्ट जो किसी सर्च सिस्टम को hit@k, recall@k और MRR पर स्कोर करती है।

~45 min

समस्या

पाठ में दिए गए मेट्रिक कोड (Python 3, standard library) का इस्तेमाल करें। डॉक्यूमेंट्स का एक छोटा सेट चुनें जिसे आप इस्तेमाल कर सकें, जैसे आपके अपने नोट्स या कोई पब्लिक FAQ पेज जिसके आप खुद chunks बनाएँ, या फिर hybrid search वाली लैब के डॉक्यूमेंट्स का दोबारा इस्तेमाल करें।

  1. काम के chunk ids और एक लाइन के रेफरेंस उत्तर के साथ 20 golden questions लिखें। इसमें कम से कम 3 बिना उत्तर वाले सवाल, 3 किसी भारतीय भाषा या रोमन लिपि वाले, और 2 कोड्स या नामों वाले सवाल शामिल करें।
  2. पिछली लैब से अपनी सर्च चलाएँ (या ईमानदारी से, खुद हाथों से रैंक तय करें) और हर सवाल के लिए टॉप 5 नतीजे रिकॉर्ड करें।
  3. कुल मिलाकर, और हर टैग के हिसाब से hit@5, recall@5 और MRR का हिसाब लगाएँ।
  4. सबसे खराब प्रदर्शन वाले तीन सवाल चुनें। हर एक के लिए बताएं कि नाकामी extraction, chunking, search या खुद सवाल में कहाँ हुई है।
  5. 5 लाइनों का एक ऐसा रूब्रिक लिखें जिसे कोई LLM जज faithfulness जाँचने के लिए इस्तेमाल कर सके।

आपका काम तब पूरा होगा जब

कठिन सवाल

उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।

Q1Recall@k और MRR में बिना उत्तर वाले सवालों को कैसे हैंडल किया जाना चाहिए, और क्यों?दिखाएं

उनमें कोई relevant chunks नहीं होते, इसलिए उनके लिए recall और reciprocal rank तय नहीं होते (recall में ज़ीरो से भाग हो जाएगा)। उन्हें retrieval metrics से बाहर ही रखें और answer level पर उन्हें अलग से मापें: क्या सिस्टम ने सही तरीके से "not found" कहा? उन्हें इसमें मिलाने से, उदाहरण के लिए उन्हें ज़ीरो मान लेने से, retrieval स्कोर बेवजह कम हो जाएँगे और वह असली व्यवहार छिप जाएगा जो आपके लिए मायने रखता है।

Q2एक नया re-ranker आपके 40 सवालों वाले golden set पर MRR को 0.61 से बढ़ाकर 0.64 कर देता है। क्या आपको इसे शिप करना चाहिए?दिखाएं

सिर्फ उस अकेले नंबर के दम पर नहीं। 40 सवालों पर, थोड़ा सा बदलाव सिर्फ कुछ सवालों के इधर-उधर होने से आ सकता है, जो कि महज़ noise हो सकता है। देखें कि कौन से सवाल बदले और क्यों, किसी भी ऐसे ग्रुप के per-tag स्कोर देखें जो पहले से खराब हुआ हो, latency और cost चेक करें, और अगर मुमकिन हो तो और ज़्यादा सवालों या किसी held-out set पर टेस्ट करें। अगर फायदा लगातार बना रहता है, कोई ज़रूरी ग्रुप खराब नहीं होता है, और अतिरिक्त latency स्वीकार्य है, तो इसे शिप करें।

जारी रखने के लिए कृपया साइन इन करें।

अक्सर पूछे जाने वाले सवाल

मुझे कितने golden questions की ज़रूरत है?

यहाँ तक कि 30 से 50 अच्छे और अलग-अलग तरह के सवाल भी कई समस्याओं को पकड़ लेते हैं और कुछ न होने से कहीं बेहतर हैं। समय के साथ असली नाकामियों से इस सेट को बड़ा करते जाएँ। दो करीबी विकल्पों की सही से तुलना करने के लिए, आपको और ज़्यादा सवालों की ज़रूरत होगी, और आपको यह देखना चाहिए कि स्कोर्स में कितना उतार-चढ़ाव आ रहा है।

क्या मुझे पहले retrieval मापना चाहिए या उत्तर?

पहले retrieval। यह सस्ता है और ज़्यादा निष्पक्ष (objective) है, और अगर सही chunk ही नहीं मिला, तो उत्तर उस पर आधारित हो ही नहीं सकता। उसके बाद ही उत्तरों को मापें।

क्या कोई मॉडल मेरे golden questions लिख सकता है?

यह आपके डॉक्यूमेंट्स से सवाल ड्राफ्ट करने में मदद कर सकता है, लेकिन मॉडल द्वारा लिखे गए सवाल अक्सर डॉक्यूमेंट के टेक्स्ट से बहुत ज़्यादा मिलते-जुलते होते हैं और असली सवालों के मुकाबले आसान होते हैं। इसमें असली यूज़र्स के सवाल मिलाएँ और किसी इंसान से हर सवाल को रिव्यू करवाएँ।

क्या RAG के मूल्यांकन के लिए बने-बनाए टूल्स मौजूद हैं?

हाँ, कई ओपन-सोर्स लाइब्रेरीज़ इन मेट्रिक्स का हिसाब लगाती हैं और जज प्रॉम्प्ट्स चलाती हैं। वे समय बचा सकती हैं। यह समझें कि हर मेट्रिक असल में क्या मापता है, इंसानों के लेबल्स से उसकी जाँच करें, और याद रखें कि टूल्स और उनकी डिफ़ॉल्ट सेटिंग्स बदलती रहती हैं।

पाठ का टेस्ट

5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।

टेस्ट देने और अपनी प्रोग्रेस सेव करने के लिए साइन इन करें