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

संदर्भ संपीड़न

संदर्भ को केवल महत्वपूर्ण सामग्री तक सीमित करना।

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

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

संदर्भ को संपीड़ित क्यों करें

पुनर्प्राप्त खंडों में शोर होता है: कोई प्रासंगिक खंड अधिकांशतः औपचारिक अतिरिक्त सामग्री से भरा हो सकता है और उसमें केवल एक वाक्य ऐसा हो सकता है जिस पर पूरा उत्तर निर्भर हो। संदर्भ संपीड़न पुनर्प्राप्त पाठ को जनरेटर तक पहुँचने से पहले उस सामग्री तक सीमित करता है जो वास्तव में क्वेरी का उत्तर देती है।

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

def compress(query, chunks):
    # Goal: keep only spans that bear on the query,
    # dropping boilerplate, navigation, and off-topic sentences.
    return [extract_relevant(query, c) for c in chunks]

Extractive बनाम सारात्मक

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

उद्धरणों वाले तथ्यात्मक RAG के लिए स्रोत से दावों का संबंध बनाए रखने हेतु Extractive को प्राथमिकता दें; सारात्मक संपीड़न का उपयोग तभी करें जब निष्ठा की जाँच की जा सके।

def extractive(query, chunk):
    sents = split_sentences(chunk.text)
    scored = [(s, relevance(query, s)) for s in sents]
    kept = [s for s, r in scored if r > TAU]
    return ' '.join(kept) or top1(scored)   # never return empty

वाक्य-स्तरीय छनाई

यह एक हल्की और विश्वसनीय तकनीक है: प्रत्येक खंड के प्रत्येक वाक्य को किसी छोटे क्रॉस-एन्कोडर या एम्बेडिंग-समानता की सहायता से क्वेरी के संदर्भ में अंक दें और कम अंक वाले वाक्य हटा दें। इससे अधिक मूल्य वाले वाक्य बचते हैं और अतिरिक्त सामग्री हट जाती है।

प्रत्येक खंड में न्यूनतम संदर्भ रखें, ताकि किसी तथ्य का अर्थ स्पष्ट करने वाला आसपास का वाक्य न हटे।

def sentence_filter(query, chunk, keep_ratio=0.4):
    sents = split_sentences(chunk.text)
    scores = embed_sim_batch(query, sents)
    n_keep = max(1, int(len(sents) * keep_ratio))
    idx = sorted(range(len(sents)), key=lambda i: -scores[i])[:n_keep]
    return ' '.join(sents[i] for i in sorted(idx))  # keep original order

LLM-आधारित संदर्भ संपीड़न

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

यह LangChain ContextualCompressionRetriever की संरचना है। यह एम्बेडिंग फ़िल्टरों से अधिक सटीक है, लेकिन प्रत्येक खंड के लिए LLM आह्वान जोड़ता है; इसलिए इसे महत्वपूर्ण pipeline के लिए बचाकर रखें या समूह में चलाएँ।

def llm_compress(query, chunk):
    prompt = (
        'Extract ONLY sentences from the passage relevant to the query. '
        'If none are relevant, output NONE. Do not paraphrase.\n'
        'Query: ' + query + '\nPassage: ' + chunk.text
    )
    out = llm(prompt, temperature=0).strip()
    return None if out == 'NONE' else out

टोकन-स्तरीय छनाई (एलएलएमलिंगुआ)

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

इसका समझौता यह है कि संपीड़ित पाठ मनुष्यों के लिए कम पठनीय हो जाता है; इसलिए यह केवल मशीन द्वारा उपयोग किए जाने वाले संदर्भ के लिए उपयुक्त है, उपयोगकर्ता को दिखाने के लिए नहीं।

def token_prune(context, target_ratio=0.3):
    # small LM estimates per-token information (perplexity-based);
    # drop the least informative tokens down to target_ratio length
    scores = small_lm_token_importance(context)
    return keep_top_fraction(context, scores, target_ratio)

क्वेरी-आधारित बनाम क्वेरी-निरपेक्ष

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

एक हाइब्रिड तरीका खंडों के संक्षिप्त संस्करण ऑफ़लाइन संग्रहीत करता है और ऑनलाइन हल्की क्वेरी-आधारित काट-छाँट लागू करता है।

# Offline: precompute a dense summary per chunk (query-agnostic)
chunk.summary = summarize(chunk.text)
# Online: query-aware trim over summaries (cheap) then verify on full
ctx = [sentence_filter(query, Chunk(c.summary)) for c in top_chunks]

सूचना की हानि से सुरक्षा

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

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

def safe_compress(query, chunk):
    out = llm_compress(query, chunk)
    if out is None and chunk.rerank_score > 0.7:
        return chunk.text          # trust re-ranker over compressor
    return out or chunk.text

स्रोत-संबंध बनाए रखना

संपीड़न में स्रोत-निर्देशन सुरक्षित रहना चाहिए। प्रत्येक रखे गए अंश को उसके खंड और दस्तावेज़ ID से चिह्नित करें, ताकि जनरेटर उसका उद्धरण दे सके। यदि आप मेटाडेटा को संपीड़ित करके हटा देते हैं, तो सत्यापन-क्षमता और मनगढ़ंत सामग्री का पता लगाने की क्षमता खो जाती है।

ID को pipeline में संरचित फ़ील्ड के रूप में आगे ले जाएँ, कभी भी ऐसे मुक्त पाठ के रूप में नहीं जिसे संपीड़न हटा सकता है।

def compress_with_ids(query, chunks):
    out = []
    for c in chunks:
        span = safe_compress(query, c)
        out.append({'id': c.id, 'doc': c.meta['doc_id'], 'text': span})
    return out   # generator cites id; provenance preserved

संपीड़न और टोकन बजट

संपीड़न आपको पुनर्प्राप्ति-दायरे के लिए अधिक उम्मीदवार पुनर्प्राप्त करने देता है, जबकि अंतिम प्रॉम्प्ट छोटा रहता है। संदर्भ विंडो के लिए टोकन बजट तय करें और बजट पूरा होने तक सबसे अधिक मूल्य वाले संपीड़ित अंशों को क्रमशः pack करें।

इससे आप कितनी सामग्री पुनर्प्राप्त करते हैं और जनरेशन पर कितना खर्च करते हैं, ये दोनों बातें अलग हो जाती हैं; यह दक्षता बढ़ाने का महत्वपूर्ण साधन है।

def pack(spans, budget_tokens, tok):
    spans = sorted(spans, key=lambda s: -s['score'])
    used, packed = 0, []
    for s in spans:
        t = tok(s['text'])
        if used + t > budget_tokens:
            continue
        packed.append(s); used += t
    return packed

संपीड़न की गुणवत्ता मापना

तीन संख्याओं पर नज़र रखें: संपीड़न अनुपात, यानी बचाए गए टोकन; उत्तर की सटीकता, यानी गुणवत्ता बनी रही या नहीं; और निष्ठा, यानी संपीड़क ने तथ्यों को बदलने से परहेज़ किया या नहीं। लक्ष्य ऐसा उच्चतम अनुपात है जिससे उत्तर की सटीकता में बदलाव न आए।

संपीड़न की तीव्रता के विभिन्न स्तर आज़माएँ और ऐसा पैरेटो बिंदु चुनें जो गुणवत्ता खोए बिना आपकी लागत-सीमा पूरी करे।

def eval_compression(eval_set, levels):
    return {
        lvl: {
            'ratio': mean_ratio(eval_set, lvl),
            'acc':   answer_accuracy(eval_set, lvl),
            'faith': faithfulness(eval_set, lvl),
        } for lvl in levels
    }

संपीड़न-सचेत pipeline

शुरू से अंत तक: व्यापक पुनर्प्राप्ति करें, पुनः क्रमबद्ध करें, बचे हुए प्रत्येक खंड का संपीड़न करें, चाहे Extractive तरीके से या LLM-आधारित तरीके से, और स्रोत-संबंध बनाए रखें; अत्यधिक काट-छाँट से सुरक्षा करें, टोकन बजट तक pack करें और उद्धरणों सहित उत्तर बनाएँ।

संपीड़न वह परत है जो व्यापक पुनर्प्राप्ति को किफायती बनाती है और जनरेटर को महत्वपूर्ण सामग्री पर केंद्रित रखती है।

def pipeline(query):
    top = rerank(query, hybrid_retrieve(query, 50))[:12]
    spans = compress_with_ids(query, top)
    spans = [s for s in spans if s['text']]
    packed = pack(spans, budget_tokens=2000, tok=count_tokens)
    return generate_with_citations(query, packed)

त्वरित जाँच

तथ्यात्मक और उद्धरणयुक्त RAG प्रणाली के लिए सही संपीड़न तरीका चुनें।

पुनरावलोकन

मुख्य बातें:

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

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

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

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

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

क्या “संदर्भ संपीड़न” पाठ निःशुल्क है?

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

“संदर्भ संपीड़न” में मैं क्या सीखूँगा?

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

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

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

“संदर्भ संपीड़न” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

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