AI प्रॉम्प्ट इंजीनियरिंग · पाठ

सरल RAG से आगे

बुनियादी पुनर्प्राप्ति की सीमाएँ।

पाठ 1, कुल 4 में से13 चरण

सरल RAG से आगे, CoddyKit पर AI प्रॉम्प्ट इंजीनियरिंग का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह AI प्रॉम्प्ट इंजीनियरिंग सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। AI प्रॉम्प्ट इंजीनियरिंग पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

नैव RAG क्या करता है

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

इन विफलता-प्रकारों को समझना इस पाठ्यक्रम में शामिल उन्नत तकनीकों—पुनः-क्रम निर्धारण, संपीड़न और क्वेरी-पुनर्लेखन—के लिए आवश्यक आधार है।

def naive_rag(query, k=5):
    q = embed(query)
    chunks = vector_store.search(q, k)        # top-k by cosine
    context = '\n\n'.join(c.text for c in chunks)
    return llm('Context:\n' + context + '\n\nQ: ' + query)

पुनर्प्राप्ति-दर बनाम परिशुद्धता

नैव शीर्ष-k चयन वेक्टर की कच्ची समानता को अधिकतम करता है, जो प्रासंगिकता को ऊपरी अर्थगत निकटता के साथ मिला देता है। यहाँ एक तनाव रहता है: छोटा k उत्तर छूट जाने का जोखिम बढ़ाता है, यानी पुनर्प्राप्ति-दर कम होती है; बड़ा k संदर्भ को ध्यान भटकाने वाली सामग्री से भर देता है, यानी परिशुद्धता कम होती है।

पुनर्प्राप्ति को संचालित करने वाली वेक्टर-समानता वास्तविक प्रासंगिकता का मोटा अनुमान है और आगे आने वाली कई समस्याओं की जड़ है।

# The core dilemma
# small k -> may miss the gold chunk (recall problem)
# large k -> distractors crowd context (precision + cost problem)
# Advanced RAG decouples 'retrieve many' from 'use few'

वेक्टर निरूपण में असंगति की समस्या

क्वेरी और दस्तावेज़ अक्सर अलग-अलग भाषिक शैलियों में होते हैं: एक छोटा प्रश्न बनाम लंबा वर्णनात्मक अनुच्छेद। द्वि-एन्कोडर के वेक्टर निरूपण किसी प्रासंगिक उत्तर को प्रश्न से बहुत दूर रख सकते हैं, क्योंकि दोनों अलग ढंग से लिखे गए होते हैं; इसे शब्दावली-असंगति की समस्या कहते हैं।

इसी कारण क्वेरी-पुनर्लेखन और HyDE जैसी तकनीकें पुनर्प्राप्ति से पहले क्वेरी को दस्तावेज़ों के वेक्टर-क्षेत्र से मेल खाने के लिए बदलती हैं।

# Query:  'how do I revoke a token?'
# Doc:    'Token invalidation is performed via the /sessions endpoint.'
# Lexically and semantically distant -> bi-encoder may miss it
sim = cos(embed('how do I revoke a token?'),
          embed('Token invalidation via /sessions'))  # may be low

बीच में खो जाने का प्रभाव

सही खंड पुनर्प्राप्त हो जाने पर भी, बहुत से खंड भरने से बीच में खो जाने का प्रभाव पैदा होता है: लंबी संदर्भ-सामग्री के बीच में रखी सामग्री पर मॉडल पर्याप्त ध्यान नहीं देता। 10 में तीसरे स्थान पर दबा हुआ सही खंड प्रभावी रूप से अनदेखा किया जा सकता है।

इसी कारण पुनः-क्रम निर्धारण किया जाता है—सर्वोत्तम खंड को उस स्थान पर रखने के लिए जहाँ मॉडल ध्यान देता है—और संपीड़न किया जाता है ताकि संदर्भ छोटा हो जाए और कुछ भी दबा न रह जाए।

# Retrieval rank != attention rank
# Place the highest-relevance chunk at the START or END,
# never stranded in the middle of a large concatenation.

ध्यान भटकाने वाली सामग्री के प्रति संवेदनशीलता

LLM अप्रासंगिक संदर्भ के प्रति संवेदनशील होते हैं। विश्वसनीय लगने वाले, लेकिन गलत खंड जोड़ने से उत्तर गलत दिशा में जा सकता है, भले ही सही खंड भी मौजूद हो। अधिक पुनर्प्राप्त संदर्भ हमेशा बेहतर नहीं होता।

इसीलिए परिशुद्धता महत्वपूर्ण है: कम, पुनः-क्रमित और संपीड़ित संदर्भ अक्सर ढीले तौर पर संबंधित खंडों के बड़े ढेर से बेहतर होता है।

# Empirically: appending a single highly-similar but WRONG chunk
# can flip a previously-correct answer. RAG quality depends on
# keeping distractors OUT, not just getting the gold chunk IN.

खंड-विभाजन की समस्याएँ

निश्चित-आकार का खंड-विभाजन वाक्य के बीच में विचारों को काट देता है, दावे को उसके प्रमाण से अलग कर देता है और संरचनात्मक संदर्भ छीन लेता है—जैसे कौन-सा अनुभाग और कौन-सा दस्तावेज़। कोई खंड अलग से पढ़ने पर सुसंगत लग सकता है, लेकिन अपने आसपास की सामग्री के बिना बेकार या भ्रामक हो सकता है।

उन्नत प्रवाह अर्थ सुरक्षित रखने के लिए संरचना-सचेत खंड-विभाजन, अतिव्यापन, मूल-दस्तावेज़ विस्तार और मेटाडेटा का उपयोग करते हैं।

def structure_aware_chunks(doc, max_tokens=400, overlap=50):
    sections = split_by_headings(doc)        # respect document structure
    chunks = []
    for sec in sections:
        for c in sliding_window(sec.text, max_tokens, overlap):
            chunks.append(Chunk(c, meta={'section': sec.title}))
    return chunks

केवल अर्थगत पुनर्प्राप्ति की कमियाँ

शुद्ध सघन पुनर्प्राप्ति हूबहू-मिलान की ज़रूरतों को चूक जाती है: पहचानकर्ता, त्रुटि कोड, दुर्लभ व्यक्तिवाचक नाम और एपीआई नाम। ठीक इन्हीं मामलों में उपयोगकर्ता शब्दशः सटीकता की अपेक्षा करते हैं। मिश्रित पुनर्प्राप्ति सघन और विरल—BM25 तथा शब्द-आधारित—संकेतों को मिलाकर दोनों आवश्यकताओं को पूरा करती है।

पारस्परिक रैंक-संयोजन दोनों क्रमित सूचियों को बिना किसी भार को समायोजित किए मिलाने का सरल और विश्वसनीय तरीका है।

def rrf(dense_ranks, sparse_ranks, k0=60):
    scores = {}
    for ranks in (dense_ranks, sparse_ranks):
        for rank, doc_id in enumerate(ranks):
            scores[doc_id] = scores.get(doc_id, 0) + 1.0 / (k0 + rank)
    return sorted(scores, key=scores.get, reverse=True)

पुराना और सत्यापित न किया जा सकने वाला संदर्भ

नैव RAG में नवीनता या स्रोत-प्रामाणिकता की कोई समझ नहीं होती। यह पुराने दस्तावेज़ पुनर्प्राप्त कर सकता है और दावों को स्रोतों से जोड़ने का कोई अंतर्निहित तरीका नहीं देता, जिससे भरोसा कम होता है और मनगढ़ंत उत्तरों का पता लगाना कठिन हो जाता है।

उन्नत प्रणालियाँ मेटाडेटा—समय-चिह्न, स्रोत और संस्करण—जोड़ती हैं, उसके आधार पर सामग्री छाँटती हैं और उत्तरों को सत्यापित करने योग्य बनाने के लिए उत्तर-जनक से खंड आईडी के उद्धरण माँगती हैं।

def filtered_retrieve(q, after_date):
    cands = vector_store.search(embed(q), k=50)
    fresh = [c for c in cands if c.meta['date'] >= after_date]
    return fresh  # then re-rank; generator must cite c.id

प्रतिक्रिया न हो तो अनुकूलन नहीं

नैव RAG बिना जाँच के पुनर्प्राप्ति करता है: यह नहीं बता सकता कि पुनर्प्राप्ति कब विफल हुई, यह तय नहीं कर सकता कि कोई पुनर्प्राप्ति आवश्यक नहीं है और दोबारा प्रयास नहीं कर सकता। उन्नत तरीकों में प्रासंगिकता-जाँच, सशर्त पुनर्प्राप्ति और बहु-चरणीय—एजेंट-आधारित—पुनर्प्राप्ति जोड़ी जाती है, जो परिणाम कमजोर लगने पर क्वेरी को नए रूप में लिखती है।

प्रवाह एकल अग्रिम-चरण के बजाय आत्म-मूल्यांकन वाले चक्र में बदल जाता है।

def adaptive_rag(q):
    chunks = retrieve(q)
    if relevance_score(q, chunks) < 0.4:
        q2 = rewrite_query(q)            # reformulate and retry
        chunks = retrieve(q2)
    if relevance_score(q, chunks) < 0.4:
        return 'I could not find this in the sources.'
    return generate(q, chunks)

उन्नत RAG संरचना

इन सभी विफलताओं को साथ देखने पर, एक उन्नत प्रवाह में कई परतें होती हैं: मेटाडेटा सहित संरचना-सचेत खंड-विभाजन, उच्च पुनर्प्राप्ति-दर वाली मिश्रित पुनर्प्राप्ति, परिशुद्धता के लिए क्रॉस-एन्कोडर पुनः-क्रम निर्धारक, संदर्भ को समेटने और केंद्रित करने के लिए संदर्भ-संपीड़न, असंगति ठीक करने के लिए क्वेरी-पुनर्लेखन / HyDE और उद्धरणों वाला प्रासंगिकता-द्वार।

अगले पाठों में हर परत बनाई जाएगी। मूल सूत्र यह है: व्यापक रूप से पुनर्प्राप्त करें, फिर कठोरता से छाँटें और परिष्कृत करें।

def advanced_rag(q):
    cands = hybrid_retrieve(rewrite_query(q), k=50)  # high recall
    top = rerank(q, cands)[:8]                       # precision
    ctx = compress(q, top)                            # focus + fit
    return generate_with_citations(q, ctx)            # verifiable

अनुकूलन से पहले मापें

नई व्यवस्था जोड़ने से पहले Diagnose करें कि वास्तव में कौन-सी विफलता मौजूद है। पुनर्प्राप्ति-दर@k को मापें—क्या सही खंड बिल्कुल पुनर्प्राप्त हुआ है—और इसे उत्तर-सटीकता से अलग रखें—क्या उत्तर-जनक उसका उपयोग करता है। पुनर्प्राप्ति की समस्या और परिशुद्धता की समस्या के समाधान अलग-अलग होते हैं।

दोनों हिस्सों के लिए मापन दर्ज करें; जब वास्तविक समस्या खंड-विभाजन या क्वेरी-असंगति हो, तब जल्दबाज़ी में पुनः-क्रम निर्धारक न जोड़ें।

def diagnose(eval_set):
    return {
        'recall@5':  recall_at_k(eval_set, k=5),     # retrieval health
        'recall@50': recall_at_k(eval_set, k=50),    # ceiling with rerank
        'answer_acc': answer_accuracy(eval_set),      # generation health
    }

त्वरित जाँच

RAG की विफलता के तरीके का Diagnose करें।

पुनरावलोकन

मुख्य बातें:

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

एआई शिक्षक के साथ AI प्रॉम्प्ट इंजीनियरिंग सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
53
पाठ
199

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

क्या “सरल RAG से आगे” पाठ निःशुल्क है?

हाँ — AI प्रॉम्प्ट इंजीनियरिंग अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “सरल RAG से आगे” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। AI प्रॉम्प्ट इंजीनियरिंग पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“सरल RAG से आगे” में मैं क्या सीखूँगा?

बुनियादी पुनर्प्राप्ति की सीमाएँ। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ AI प्रॉम्प्ट इंजीनियरिंग का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या AI प्रॉम्प्ट इंजीनियरिंग शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर AI प्रॉम्प्ट इंजीनियरिंग शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“सरल RAG से आगे” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस AI प्रॉम्प्ट इंजीनियरिंग पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर AI प्रॉम्प्ट इंजीनियरिंग पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. सरल RAG से आगे
  2. प्राप्त खंडों का पुनः-क्रम निर्धारण
  3. संदर्भ संपीड़न
  4. क्वेरी पुनर्लेखन और HyDE
← AI प्रॉम्प्ट इंजीनियरिंग पर वापस जाएँ