मुख्य सामग्री पर जाएं

Transformers के साथ स्पेक्युलेटिव RAG इम्प्लीमेंटेशन

स्पेक्युलेटिव RAG सीखें—एक तकनीक जो ड्राफ्टिंग और वेरिफिकेशन की दो-चरणीय प्रक्रिया से RAG को बेहतर बनाती है—और Hugging Face Transformers के साथ हैंड्स-ऑन इम्प्लीमेंटेशन द्वारा अपनी स्किल लागू करें।
अपडेट किया गया 25 सित॰ 2026  · 8 मि॰ पढ़ें

AI के साथ खोजें

ChatGPTClaudePerplexity

Large language models (LLMs) अक्सर उन ज्ञान-गहन कार्यों में कमतर पड़ जाते हैं जिनमें नवीनतम और सटीक जानकारी की जरूरत होती है। यहीं retrieval-augmented generation (RAG) काम आता है—LLMs की जनरेटिव क्षमता को बाहरी नॉलेज बेस के साथ मिलाकर सटीकता और प्रासंगिकता बढ़ाने के लिए।

प्रभावी होने के बावजूद, पारंपरिक RAG सिस्टम लंबे और जटिल दस्तावेज़ों को संभालने में चुनौतियों का सामना करते हैं, जिससे लेटेंसी बढ़ती है और कभी-कभी कम सटीक परिणाम मिलते हैं। इन समस्याओं को दूर करने के लिए स्पेक्युलेटिव RAG की अवधारणा एक आशाजनक समाधान के रूप में उभरी है। आइए इसके बारे में और जानें।

स्पेक्युलेटिव RAG क्या है?

स्पेक्युलेटिव retrieval-augmented generation (RAG) एक नवीन फ्रेमवर्क है, जिसे जनरेशन प्रक्रिया को दो अलग-अलग चरणों में बाँटकर RAG सिस्टम की दक्षता और सटीकता सुधारने के लिए डिज़ाइन किया गया है:

  1. ड्राफ्टिंग: पहला चरण एक छोटे, विशेषज्ञ भाषा मॉडल से संबंधित है जिसे RAG Drafter कहा जाता है। यह मॉडल प्राप्त दस्तावेज़ों के विभिन्न सबसेट से कई उत्तर ड्राफ्ट बनाता है। प्रत्येक सबसेट को विविध दृष्टिकोणों का प्रतिनिधित्व करने के लिए सावधानी से चुना जाता है, जिससे दोहराव कम होता है और ड्राफ्ट की गुणवत्ता बढ़ती है।
  2. वेरिफिकेशन: RAG Drafter द्वारा बनाए गए ड्राफ्ट्स को फिर एक बड़े, जनरलिस्ट LM—RAG Verifier—को दिया जाता है। यह मॉडल ड्राफ्ट्स का मूल्यांकन करता है और दी गई दलीलों के आधार पर सबसे सटीक और भरोसेमंद ड्राफ्ट का चयन करता है। वेरिफिकेशन प्रक्रिया जनरलिस्ट LM की भाषा मॉडलिंग क्षमताओं का उपयोग करती है ताकि अंतिम आउटपुट सटीक और संदर्भानुकूल रहे।

आइए इस डायग्राम को देखकर स्पेक्युलेटिव RAG को बेहतर समझें:

विभिन्न RAG अप्रोच का चित्रण (स्रोत Speculative RAG पेपर)

स्रोत: Wang et al., 2024

आइए इस डायग्राम को चरण-दर-चरण समझें। यह यह दिखाता है कि बाहरी जानकारी का उपयोग करके LLM को प्रश्नों के उत्तर देने में कैसे मदद की जा सकती है, खासकर Speculative RAG नामक एक नए तरीके पर ध्यान केंद्रित करते हुए। पहले पंक्ति के तरीकों पर नज़र डालते हैं:

  • (a) स्टैंडर्ड RAG: सबसे सरल अप्रोच। सभी प्रासंगिक दस्तावेज़ (डायग्राम में 1, 2...) प्रश्न (Q) के साथ सीधे LLM ("Generalist LM") को दिए जाते हैं ताकि उत्तर (A) तैयार हो सके।
  • (b) सेल्फ-रिफ्लेक्टिव RAG: यहाँ LLM दस्तावेज़ों और अपने उत्तर का विश्लेषण करना सीखता है और तर्क को बेहतर करने के लिए विशेष टैग ("Need," "Relevant," "Supported") जनरेट करता है।
  • (c) Corrective RAG: यह एक अलग मॉडल ("NLI मॉडल") का उपयोग करता है ताकि LLM को देने से पहले यह जाँच सके कि प्राप्त दस्तावेज़ वास्तव में प्रश्न से संबंधित हैं या नहीं।

अब (d) स्पेक्युलेटिव RAG पर करीब से नज़र डालते हैं:

  1. स्पेशलिस्ट RAG Drafter: बड़े LLM पर बोझ डालने की बजाय, एक छोटा "drafter" मॉडल अग्रणी भूमिका निभाता है। यह प्रश्न (Q) और दस्तावेज़ों (1, 2...) को देखता है और कई ड्राफ्ट उत्तर (α1, α2, α3...) बनाता है। हर ड्राफ्ट दस्तावेज़ों के अलग-अलग सबसेट पर आधारित होता है।
  2. रैशनल्स: ड्राफ्टर प्रत्येक ड्राफ्ट के लिए यह भी बताता है (β1, β2, β3...) कि उसने किन दस्तावेज़ों का चयन क्यों किया—इसे ऐसे समझें जैसे वह अपना काम दिखा रहा हो।
  3. मूल्यांकन: अब मुख्य LLM ("Generalist LM") आगे आता है। वह प्रत्येक ड्राफ्ट उत्तर और उसकी व्याख्या को देखता है, और उसके आधार पर सर्वश्रेष्ठ उत्तर (A) चुनता है।

मूल रूप से, स्पेक्युलेटिव RAG विशेषज्ञों की एक टीम जैसा है: ड्राफ्टर विकल्प तैयार करता है, और जनरलिस्ट LLM अंतिम निर्णय लेता है। इससे प्रक्रिया तेज़ और संभावित रूप से अधिक सटीक हो जाती है।

स्पेक्युलेटिव RAG के फायदे

स्पेक्युलेटिव RAG पारंपरिक RAG सिस्टम की तुलना में कई प्रमुख लाभ देता है:

1. अधिक सटीकता

विविध दस्तावेज़ सबसेट से कई ड्राफ्ट बनाने के लिए विशेष RAG Drafter का उपयोग कर, स्पेक्युलेटिव RAG अंतिम आउटपुट की सटीकता बढ़ाता है। यह अप्रोच सिस्टम को कई दृष्टिकोणों पर विचार करने देता है, जिससे गलत या पक्षपाती उत्तरों की संभावना घटती है। प्रयोगों में, PubHealth जैसे बेंचमार्क्स पर स्पेक्युलेटिव RAG ने परंपरागत RAG की तुलना में सटीकता में 12.97% तक सुधार दिखाया।

2. कम लेटेंसी

पारंपरिक RAG सिस्टम की सबसे बड़ी चुनौतियों में से एक लंबे और जटिल दस्तावेज़ों को प्रोसेस करने से होने वाली लेटेंसी है। स्पेक्युलेटिव RAG इस समस्या को ड्राफ्टिंग प्रक्रिया को छोटे, अधिक कुशल LM पर ऑफलोड कर सुलझाता है, जो समानांतर में ड्राफ्ट बना सकता है। इस अप्रोच से कुल प्रोसेसिंग समय घटता है—कुछ मामलों में लेटेंसी 51% तक कम हुई।

विभिन्न डेटासेट्स पर स्पेक्युलेटिव RAG लेटेंसी बनाम स्टैंडर्ड RAG लेटेंसी

विभिन्न डेटासेट्स पर स्पेक्युलेटिव RAG लेटेंसी बनाम स्टैंडर्ड RAG लेटेंसी। स्रोत: Wang et al., 2024

3. संसाधन दक्षता

स्पेक्युलेटिव RAG ड्राफ्टिंग कार्य को छोटे LM को सौंपकर संसाधनों का उपयोग ऑप्टिमाइज़ करता है, जो पारंपरिक RAG में प्रयुक्त बड़े जनरलिस्ट LM की तुलना में कम कंप्यूटेशनल-इंटेंसिव होता है। यह कार्य-विभाजन न केवल जनरेशन को तेज़ करता है बल्कि कुल कंप्यूटेशनल लोड भी घटाता है, जिससे यह अधिक संसाधन-दक्ष समाधान बनता है।

4. स्केलेबिलिटी और लचीलापन

स्पेक्युलेटिव RAG फ्रेमवर्क अत्यधिक अनुकूलनीय है और व्यापक ट्यूनिंग के बिना विभिन्न ज्ञान-गहन कार्यों पर लागू किया जा सकता है। यह स्केलेबिलिटी इसे प्रश्नोत्तर से लेकर जटिल दस्तावेज़ विश्लेषण तक, कई प्रकार के अनुप्रयोगों के लिए उपयुक्त बनाती है।

स्पेक्युलेटिव RAG को कैसे इम्प्लीमेंट करें

स्पेक्युलेटिव RAG का एक सरल संस्करण बेसिक प्रश्नोत्तर कार्य के लिए इम्प्लीमेंट करने हेतु, हम एक छोटा डेटासेट और दो मॉडलों के साथ सरल सेटअप का उपयोग करेंगे—ड्राफ्टिंग के लिए छोटा मॉडल और वेरिफिकेशन के लिए बड़ा मॉडल।

सरलता के लिए, हम Hugging Face Transformers लाइब्रेरी का उपयोग करेंगे। हम दिखाएँगे कि छोटे भाषा मॉडल से कई ड्राफ्ट कैसे बनाए जाएँ और बड़े मॉडल से सर्वश्रेष्ठ ड्राफ्ट का वेरिफाइ और चयन कैसे किया जाए।

स्टेप 1: आवश्यक लाइब्रेरी इंस्टॉल करें

पहले आवश्यक लाइब्रेरी इंस्टॉल करते हैं। HuggingFace से transformers लाइब्रेरी इंस्टॉल करने के बाद आपको सेशन रीस्टार्ट करना होगा। सुनिश्चित करें कि आपने Collab या किसी अन्य एडिटर में सीक्रेट की के तहत HuggingFace क्रेडेंशियल्स जोड़े हैं।

!pip install transformers torch datasets

स्टेप 2: डेटासेट लोड करें

इस उदाहरण के लिए, हम Hugging Face डेटासेट्स लाइब्रेरी से उपलब्ध SQuAD (Stanford Question Answering Dataset) का उपयोग करेंगे।

from datasets import load_dataset
# Load the SQuAD dataset
dataset = load_dataset("squad", split="train[:100]")  # Using a small subset

स्टेप 3: मॉडल इनिशियलाइज़ करें

हम Hugging Face लाइब्रेरी से दो प्री-ट्रेन्ड मॉडल का उपयोग करेंगे। एक छोटा मॉडल (distilbert-base-uncased-distilled-squad) हमारा RAG Drafter होगा, और बड़ा मॉडल (bert-large-uncased-whole-word-masking-finetuned-squad) RAG Verifier होगा।

इसके बाद, हम चुने गए मॉडलों के साथ Drafter और verifier पाइपलाइन बनाएँगे।

from transformers import AutoModelForQuestionAnswering, AutoTokenizer, pipeline

# Initialize the smaller model (RAG Drafter)
drafter_model_name = "distilbert-base-uncased-distilled-squad"
drafter_model = AutoModelForQuestionAnswering.from_pretrained(drafter_model_name)
drafter_tokenizer = AutoTokenizer.from_pretrained(drafter_model_name)

# Initialize the larger model (RAG Verifier)
verifier_model_name = "bert-large-uncased-whole-word-masking-finetuned-squad"
verifier_model = AutoModelForQuestionAnswering.from_pretrained(verifier_model_name)
verifier_tokenizer = AutoTokenizer.from_pretrained(verifier_model_name)

# Set up pipelines
drafter_pipeline = pipeline("question-answering", model=drafter_model, tokenizer=drafter_tokenizer)
verifier_pipeline = pipeline("question-answering", model=verifier_model, tokenizer=verifier_tokenizer)

स्टेप 4: ड्राफ्टिंग फ़ंक्शन परिभाषित करें

अब, हम प्री-डिफाइंड Drafter पाइपलाइन के साथ छोटे मॉडल का उपयोग करके कई ड्राफ्ट जनरेट करने के लिए एक फ़ंक्शन परिभाषित करेंगे।

def generate_drafts(question, context, num_drafts=3):
   drafts = []
   for _ in range(num_drafts):
       draft = Drafter_pipeline(question=question, context=context)
       drafts.append(draft)
   return drafts

स्टेप 5: वेरिफिकेशन फ़ंक्शन परिभाषित करें

अब हम verify_drafts() फ़ंक्शन परिभाषित करेंगे जो बड़े मॉडल का उपयोग कर कॉन्फिडेंस स्कोर्स के आधार पर सर्वश्रेष्ठ ड्राफ्ट को वेरिफाइ और सिलेक्ट करता है।

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

टोकन एलाइनमेंट और स्कोरिंग का यह सावधानीपूर्वक हैंडलिंग, स्पेक्युलेटिव RAG के बेहतर प्रदर्शन की कुंजी है।

def verify_drafts(question, context, drafts):
    best_draft = None
    highest_score = 0

    # Tokenize the context using the verifier's tokenizer, keeping track of offsets
    inputs = verifier_tokenizer(question, context, return_tensors="pt", return_offsets_mapping=True)
    offset_mapping = inputs['offset_mapping'][0]  # This will give us the character-to-token mapping
    input_ids = inputs['input_ids'][0]

    for draft in drafts:
        start_char = draft['start']
        end_char = draft['end']

        # Find the corresponding token positions using offset mapping
        start_index = None
        end_index = None

        for idx, (start, end) in enumerate(offset_mapping):
            if start_index is None and start_char >= start and start_char < end:
                start_index = idx
            if end_index is None and end_char > start and end_char <= end:
                end_index = idx
            if start_index is not None and end_index is not None:
                break

        # Ensure indices were found and are within bounds
        if (start_index is None or end_index is None or
                start_index >= len(input_ids) or end_index >= len(input_ids)):
            print(f"Draft skipped: Out of bounds or no matching tokens. "
                  f"Start Index: {start_index}, End Index: {end_index}")
            continue

        # Get the confidence score using the larger model
        outputs = verifier_model(input_ids=input_ids.unsqueeze(0))
        score = (outputs.start_logits[0, start_index].item() +
                 outputs.end_logits[0, end_index].item())

        if score > highest_score:
            highest_score = score
            best_draft = draft

    if best_draft is None:
        print("No valid draft found after verification.")

    return best_draft

स्टेप 6: स्पेक्युलेटिव RAG प्रक्रिया चलाएँ और मूल्यांकन करें

अब, डेटासेट के 10 नमूनों पर अपनी स्पेक्युलेटिव RAG प्रक्रिया लागू करते हैं।

correct = 0
total = 10  # Evaluate on 10 samples for simplicity

for i in range(total):
    sample = dataset[i]
    question = sample['question']
    context = sample['context']
    drafts = generate_drafts(question, context)
    best_answer = verify_drafts(question, context, drafts)

    print(f"Q: {question}")

    if best_answer is not None:
        print(f"A: {best_answer['answer']}\n")
        # For simplicity, compare with the first answer (gold) provided in the dataset
        if best_answer['answer'].lower() in sample['answers']['text'][0].lower():
            correct += 1
    else:
        print("No valid draft found.\n")

accuracy = correct / total * 100
print(f"Accuracy: {accuracy}%")

यह कोड स्निपेट किसी डेटासेट के 10 नमूनों पर स्पेक्युलेटिव RAG के सरल इम्प्लीमेंटेशन की सटीकता का मूल्यांकन करता है। हर नमूने के लिए यह दिए गए प्रश्न और संदर्भ के आधार पर कई उत्तर ड्राफ्ट बनाता है और फिर वेरिफिकेशन फ़ंक्शन से सर्वश्रेष्ठ ड्राफ्ट चुनता है। यदि वैध उत्तर मिलता है, तो उसे डेटासेट में दिए गए गोल्ड (सही) उत्तर से तुलना करता है। मेल खाने पर correct काउंट बढ़ा दिया जाता है।

अंत में, कोड कुल नमूनों में से सही उत्तरों का प्रतिशत निकालकर सटीकता प्रिंट करता है। इस सरल डेटासेट पर यह कोड 90% सटीकता देता है।

स्पेक्युलेटिव RAG की चुनौतियाँ

हालाँकि स्पेक्युलेटिव RAG अच्छे परिणाम देता है, कुछ चुनौतियाँ भी हैं:

  • इम्प्लीमेंटेशन में जटिलता:
    • कई मॉडलों के समन्वय की आवश्यकता।
    • मौजूदा सिस्टम में इंटीग्रेशन की जटिलता बढ़ती है।
  • ट्रेनिंग ओवरहेड:
    • RAG Drafter को ट्रेन करना एक अतिरिक्त चरण जोड़ता है।
    • समय और संसाधनों की आवश्यकता।
    • डिप्लॉयमेंट जटिल हो जाता है, खासकर तेज़ डिप्लॉयमेंट वाले वातावरण में।
  • उच्च-गुणवत्ता रिट्रीवल पर निर्भरता:
    • प्रभावशीलता काफी हद तक प्राप्त दस्तावेज़ों की गुणवत्ता पर निर्भर करती है।
    • कमज़ोर रिट्रीवल से उप-इष्ट ड्राफ्ट बनते हैं।

स्पेक्युलेटिव RAG के उपयोग

स्पेक्युलेटिव RAG उन अनेक क्षेत्रों में लागू किया जा सकता है जहाँ सटीक और कुशल सूचना-प्राप्ति महत्वपूर्ण है। कुछ संभावित उपयोग हैं:

  • ज्ञान-गहन प्रश्नोत्तर:
    • जहाँ सटीकता और प्रासंगिकता महत्वपूर्ण हो, वहाँ स्पेक्युलेटिव RAG प्रभावी है।
    • विविध दस्तावेज़ सबसेट का लाभ उठाकर यह फ्रेमवर्क जटिल क्वेरीज़ के सटीक और प्रमाण-समर्थित उत्तर जनरेट कर सकता है।
  • रीयल-टाइम सूचना-प्राप्ति:
    • जहाँ नवीनतम जानकारी अत्यावश्यक हो, वहाँ स्पेक्युलेटिव RAG प्रतिक्रियाओं की गति और विश्वसनीयता बढ़ा सकता है।
    • लेटेंसी घटाते हुए सटीकता बनाए रखने की क्षमता इसे रीयल-टाइम अनुप्रयोगों के लिए उपयुक्त बनाती है।
  • मेडिकल और लीगल टेक्स्ट एनालिसिस:
    • जिन क्षेत्रों में जटिल दस्तावेज़ों की सटीक व्याख्या आवश्यक है, वहाँ स्पेक्युलेटिव RAG उपयोगी हो सकता है।
    • कई ड्राफ्ट बनाकर और दलीलों के आधार पर सबसे सटीक उत्तर चुनकर यह फ्रेमवर्क सुनिश्चित करता है कि महत्त्वपूर्ण निर्णय भरोसेमंद जानकारी पर आधारित हों।
  • शैक्षिक उपकरण:
    • ई-लर्निंग प्लेटफ़ॉर्म के लिए सटीक और संदर्भ-समृद्ध सामग्री बनाने में स्पेक्युलेटिव RAG सहायक हो सकता है।
    • इससे शिक्षार्थियों को विश्वसनीय और संतुलित जानकारी मिलती है, जो समग्र सीखने के अनुभव को बेहतर बनाती है।

निष्कर्ष

स्पेक्युलेटिव RAG, सटीकता, कम लेटेंसी, संसाधन-दक्षता और स्केलेबिलिटी के साथ retrieval-augmented generation को बेहतर बनाता है। हमने इसका इम्प्लीमेंटेशन Hugging Face Transformers के साथ प्रदर्शित किया।

हालाँकि चुनौतियाँ मौजूद हैं, विभिन्न डोमेन्स में स्पेक्युलेटिव RAG की संभावनाएँ आगे के शोध के लिए इसे आशाजनक बनाती हैं।

यदि आप RAG इम्प्लीमेंटेशन के बारे में अधिक सीखना चाहते हैं, तो मैं निम्नलिखित ट्यूटोरियल की सिफारिश करता/करती हूँ:


Bhavishya Pandit's photo
Author
Bhavishya Pandit
LinkedIn
Twitter

सीनियर GenAI इंजीनियर और कंटेंट क्रिएटर, जिन्होंने GenAI और डेटा साइंस पर ज्ञान साझा करके 2 करोड़ व्यूज़ हासिल किए हैं।

विषय
कृत्रिम बुद्धिमत्ता
बड़े भाषा मॉडल

इन कोर्सेज़ के साथ AI सीखें!

{count, plural, one {लर्निंग पाथ} other {लर्निंग पाथ}}

एआई अनुप्रयोग विकसित करना

{hours} घंटा
नवीनतम AI डेवलपर टूल्स, जिनमें OpenAI API, Hugging Face, और LangChain शामिल हैं, के साथ AI-संचालित एप्लिकेशन बनाना सीखें।
विवरण देखेंRight Arrow
पाठ्यक्रम शुरू करें

{count, plural, one {कोर्स} other {कोर्स}}

LangChain के साथ Retrieval Augmented Generation (RAG)

{hours} घंटा
21K
LangChain के साथ Retrieval Augmented Generation (RAG) का उपयोग करके बाहरी डेटा को LLMs के साथ एकीकृत करने की अत्याधुनिक विधियाँ सीखें।
और देखेंRight Arrow