Skip to content
Guides4 min read

मानव एनोटेशन के साथ RAG सिस्टम का मूल्यांकन कैसे करें

रिट्रीवल-ऑगमेंटेड जेनरेशन के मूल्यांकन के लिए एक व्यावहारिक मार्गदर्शिका: रिट्रीवल प्रासंगिकता और उत्तर की निष्ठा को अलग-अलग स्कोर करें, और Potato में स्पैन एनोटेशन के साथ असमर्थित दावों को चिह्नित करें।

Potato Team

एक रिट्रीवल-ऑगमेंटेड जेनरेशन सिस्टम दो बिल्कुल अलग तरीकों से विफल हो सकता है, और एक अकेला गुणवत्ता स्कोर यह छिपा देता है कि आप किसे देख रहे हैं। या तो रिट्रीवर ने गलत दस्तावेज़ खींचे, या जेनरेटर के पास अच्छे दस्तावेज़ थे और उसने उन्हें अनदेखा कर दिया। यदि आप केवल यह मापते हैं कि "उत्तर अच्छा है या नहीं," तो आप इन दोनों में अंतर नहीं कर सकते, और आप यह नहीं बता सकते कि सिस्टम के किस आधे हिस्से को ठीक करना है।

समाधान है रिट्रीवल और जेनरेशन का अलग-अलग मूल्यांकन करना, और यह ठीक-ठीक चिह्नित करना कि उत्तर अपने स्रोतों से कहाँ हटता है।

एनोटेट करने योग्य तीन चीज़ें

  1. रिट्रीवल प्रासंगिकता। प्रत्येक प्राप्त किए गए दस्तावेज़ के लिए, क्या वह वास्तव में क्वेरी के लिए प्रासंगिक है?
  2. उत्तर की निष्ठा। क्या उत्पन्न किया गया उत्तर उन दस्तावेज़ों में आधारित है, बिना किसी गढ़े हुए दावे के?
  3. उद्धरण सटीकता। क्या उत्तर के दावे उन स्रोतों तक वापस जाते हैं जिनका वह उल्लेख करता है?

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

Potato में इसे सेट करना

आप तीनों को एक ही स्क्रीन पर रख सकते हैं। multirate के साथ हर प्राप्त किए गए दस्तावेज़ को उसी पैमाने पर रेट करें, Likert पैमाने के साथ निष्ठा को रेट करें, और उत्तर में समस्याग्रस्त स्पैन हाइलाइट करें।

yaml
annotation_schemes:
  - annotation_type: multirate
    name: retrieval_relevance
    description: "Rate the relevance of each retrieved document to the query."
    labels: ["Irrelevant", "Somewhat", "Relevant", "Highly relevant"]
 
  - annotation_type: likert
    name: faithfulness
    description: "Is the answer faithful to the retrieved documents?"
    size: 5
    min_label: "Many unsupported claims"
    max_label: "Fully grounded"
 
  - annotation_type: span
    name: problems
    description: "Highlight any unsupported or incorrect claim in the answer."
    labels: [unsupported_claim, contradicted, hallucination]

स्पैन स्कीम ही वह चीज़ है जो डेटा को कार्रवाई योग्य बनाती है। 5 में से 2 का निष्ठा स्कोर आपको बताता है कि कुछ गलत है; एक हाइलाइट किया गया स्पैन आपको बताता है कि कौन सा वाक्य और क्यों।

ऐसी चीज़ें जो चुपके से RAG मूल्यांकन को बर्बाद कर देती हैं

एनोटेटर स्रोतों के बिना निष्ठा का आकलन नहीं कर सकते। क्वेरी, प्राप्त किए गए दस्तावेज़ और उत्तर को एक ही स्क्रीन पर दिखाएँ। यदि दस्तावेज़ संक्षिप्त (collapsed) हैं या किसी अन्य टैब पर हैं, तो लोग उत्तर को इस आधार पर रेट करेंगे कि वह सुनने में सही लगता है या नहीं, जो ठीक वही विफलता का तरीका है जिसे आप पकड़ने की कोशिश कर रहे हैं।

"प्रासंगिक" को एक परिभाषा की ज़रूरत है। क्वेरी के लिए प्रासंगिक, या उत्तर में वास्तव में इस्तेमाल किया गया? ये अलग-अलग आकलन हैं और एनोटेटर इन पर बँट जाएँगे जब तक कि आप पहले से तय न कर लें।

निष्ठा ही वह व्यक्तिपरक चीज़ है। एक नमूने पर ओवरलैप एकत्र करें और विशेष रूप से निष्ठा रेटिंग पर सहमति जाँचें। यदि वहाँ सहमति कम है, तो संख्याओं पर भरोसा करने से पहले "असमर्थित" की परिभाषा को कस लें।

आगे कहाँ जाएँ

पूरा विवरण, जिसमें यह शामिल है कि तीनों स्कीम एक साथ कैसे फ़िट होती हैं, RAG मूल्यांकन मार्गदर्शिका में है। किसी भी मॉडल आउटपुट में तथ्यात्मक त्रुटियों और हैल्यूसिनेशन को चिह्नित करने के लिए, केवल RAG में ही नहीं, देखें स्पैन एनोटेशन के साथ हैल्यूसिनेशन का पता लगाना। और यदि आप व्यापक रूप से एजेंट का मूल्यांकन कर रहे हैं, तो AI एजेंट का मूल्यांकन कैसे करें से शुरुआत करें।