ailiteracynepal 🇳🇵
पाठ आकार

अध्याय ५ · खण्ड I · 20 मिनेट

आफ्नो कागजातहरूमा जवाफलाई ग्राउन्ड गर्ने

Retrieval-augmented generation (RAG) आधुनिक LLM apps को मौलिक pattern हो। यसले किन काम गर्छ, यसले hallucination को समस्या कसरी समाधान गर्छ, र किन बिना यसको हरेक कागजात-प्रश्न-उत्तर बोट या त सिमित छ, वा जोखिमपूर्ण छ बुझ्नुहोस्।

बिना बाहिरी जानकारी, एक language model ले आफ्नो training data मात्र थाहा पाउँछ। यसले तपाईंको कम्पनीको HR policy थाहा छैन। यसले हिजो सांझको समाचार थाहा छैन। यसले तपाईंको प्रयोगकर्ताको ऋण प्रोफाइल थाहा छैन। यदि तपाईंले सोध्नुभयो भने, यसले कुनै जवाफ अनुमान गर्नेछ — प्राय: प्रशंसनीय ध्वनि, कहिलेकाहीं सही, नियमित रूपमा गलत। यसलाई ठीक गर्न, हामी एक pattern प्रयोग गर्छौँ जुन modern LLM applications मा unquestionably सबैभन्दा महत्त्वपूर्ण छ: retrieval-augmented generation (RAG)

Hallucination समस्या

एक भाषा मोडेललाई सोध्नुहोस्, “हाम्रो कम्पनीको नयाँ-आमा बिदा नीति के हो?” यसले जान्दैन। यो अझै पनि तपाईंलाई एउटा जवाफ दिनेछ:

User:  हाम्रो कम्पनीको मातृ बिदा नीति के हो?
Model: हाम्रो कम्पनी नयाँ आमाहरूलाई 90 दिनको सशुल्क मातृत्व बिदा प्रस्ताव गर्दछ,
       र आवश्यकतानुसार अतिरिक्त 60 दिनको अवैतनिक बिदा। बिदा जन्म भन्दा 15
       दिन अघि सुरू हुनेछ...

तपाईंको कम्पनीको वास्तविक नीति के हो थाहा छ? 98 दिन सशुल्क, 45 दिन अघि, कुनै अवैतनिक विस्तार छैन। मोडेलले संख्याहरू बनाएको छ। यसले hallucination बुझाउँछ भनिन्छ — मोडेलले confident, plausible-sounding जवाफ produce गर्छ जुन तथ्यहरूमा नराम्रो छ।

Hallucination ले LLMs सँग कागजात-प्रश्न-उत्तर लाई मौलिक रूपमा जोखिमपूर्ण बनाउँछ। तपाईं आफ्ना प्रयोगकर्ताहरूलाई एउटा उपकरण दिन सक्नुहुन्न जुन 80% समय सही जवाफ देला र 20% समय आत्मविश्वासका साथ बनाओस्। तिनीहरूले यसलाई सम्भवत ट्रस्ट गर्छन्।

RAG को विचार

RAG को विचार सुन्दर सरल छ:

1. प्रयोगकर्ता एउटा प्रश्न सोध्छन्।
2. हामी हाम्रो कागजातहरूमा त्यो प्रश्नको लागि सान्दर्भिक सामग्री खोज्छौँ (semantic search)।
3. हामी retrieved कागजातहरू LLM लाई पास गर्छौँ, "यहाँ केही सान्दर्भिक कागजातहरू छन्। यो पढेर प्रश्नको जवाफ दिनुहोस्।"
4. LLM ले retrieved कागजातहरूमा ग्राउन्ड गरिएको जवाफ जनरेट गर्छ।

यसले किन काम गर्छ बुझ्नुहोस्: LLM लाई अब यो के जान्दछ त्यसमा भर पर्नु पर्दैन। सान्दर्भिक कागजातहरू यसको context window मा छन्। यसले तिनीहरूलाई पढ्नु पर्छ र जवाफ लेख्नु पर्छ। तपाईंको कम्पनीको HR policy बारे प्रश्नको लागि, तपाईंको HR policy PDF यसको context मा छ। कागजातहरू प्रामाणिक source हुन्; LLM एक चतुर पाठक हो।

एक साधारण RAG कल

पूर्ण pattern लगभग 15 लाइनहरूमा:

def rag(question: str, index: list[dict], top_k: int = 3) -> str:
    # Step 1: retrieve
    hits = search_index(index, question, top_k=top_k)

    # Step 2: format retrieved chunks as context
    context = "\n\n".join(
        f"[Document: {hit['doc']}]\n{hit['text']}"
        for hit in hits
    )

    # Step 3: ask the LLM using only the retrieved context
    system_prompt = (
        "You are a helpful assistant. Answer the user's question using "
        "ONLY the documents provided below. If the answer is not in the "
        "documents, say 'I could not find that in the provided documents.' "
        "Cite the document name for each fact you use."
    )

    user_prompt = f"Documents:\n{context}\n\nQuestion: {question}"

    response = anthropic_client.messages.create(
        model="claude-3-5-sonnet-latest",
        max_tokens=500,
        system=system_prompt,
        messages=[{"role": "user", "content": user_prompt}],
    )

    return response.content[0].text

तपाईंको मातृ नीति उदाहरण फेरि, RAG सँग:

User:  हाम्रो कम्पनीको मातृ बिदा नीति के हो?

[Retrieved: hr-policy.pdf, chunk 12]
"नयाँ आमाहरूलाई 98 दिन सशुल्क मातृ बिदा प्रदान गरिन्छ। बिदा
प्रत्याशित मिति भन्दा 45 दिन अघि सम्म सुरु गर्न सकिन्छ। अवैतनिक
विस्तार उपलब्ध छैन..."

Model: तपाईंको कम्पनीको HR policy अनुसार, नयाँ आमाहरूलाई 98 दिन सशुल्क
       मातृ बिदा प्रदान गरिन्छ। बिदा प्रत्याशित मिति भन्दा 45 दिन
       अघि सम्म सुरु गर्न सकिन्छ। कुनै अवैतनिक विस्तार उपलब्ध छैन।
       (Source: hr-policy.pdf)

तथ्यहरू अब सही छन् किनकि तिनीहरू मोडेलको memory भन्दा तपाईंको वास्तविक नीति कागजातबाट आउँछन्।

System prompt discipline

RAG system prompt का लागि तीनवटा crucial rules हुन्:

  1. Constrain the source। मोडेललाई शाब्दिक रूपमा भन्नुहोस्, “प्रदान गरिएका कागजातहरू मात्र प्रयोग गरेर जवाफ दिनुहोस्।” यसले hallucination लाई रोक्न सक्दैन (मोडेलले अझै पनि goof up गर्न सक्छ), तर यसले तिनको दरलाई मौलिक रूपमा घटाउँछ।

  2. Prescribe the fallback। मोडेललाई भन्नुहोस्, “यदि जवाफ कागजातहरूमा छैन भने, ‘मैले प्रदान गरिएका कागजातहरूमा त्यो भेटिनँ’ भन्नुहोस्।” यो fallback बिना, मोडेलले कुनै पनि लगत, अनुमानित जवाफ बनाउनको लागि प्रलोभित हुन्छ।

  3. Force citation। मोडेललाई भन्नुहोस्, “तपाईंले प्रयोग गर्ने प्रत्येक तथ्यको लागि कागजात नाम cite गर्नुहोस्।” Citations ले मोडेललाई अझ ग्राउन्डेड रहन बल गर्छ, र प्रयोगकर्ताहरूलाई source verify गर्न दिन्छ।

तीन नियमहरू सँगै एक LLM लाई एक factually-reliable कागजात assistant मा बदल्छन्।

RAG कहाँ शानदार छ

RAG एउटा case मा शानदार पनि हो जुन तपाईंले सोच्नुभयो सक्छ:

  • Internal कागजात Q&A। HR, IT, कानूनी, वित्तीय — कुनै पनि निजी कागजातहरूको corpus। मोडेललाई training मा भन्दा राम्रोसँग जान्न आवश्यक छैन।
  • छिटो-परिवर्तनहरू। समाचार, GitHub issues, बजार मूल्य, weather। मोडेलको cutoff भन्दा नयाँ केहि तर सान्दर्भिक कागजात संग retrievable।
  • Personalisation। प्रयोगकर्ताको खाता, तिनीहरूको इतिहास, तिनीहरूको प्राथमिकताहरू संदर्भमा पास हुन्छन्, र LLM ले तिनीहरूलाई सान्दर्भमा पढ्दछ।
  • कागजात संख्या द्वारा भारित समुदाय। कुनै पनि विशेष क्षेत्र (नेपाली कानून, चिकित्सा फाइल, विशेष प्रविधि) जहाँ मोडेलको training data पूर्ण छ र कहिलेकाहीं गलत छ।

नियम अंगूठाको: यदि तपाईंलाई मोडेलले तपाईंको स्रोतहरू ग्राउन्ड गरिएको जवाफ दिनुपर्दछ भने, RAG प्रयोग गर्नुहोस्। यदि तपाईंलाई मोडेलले creative लेखन, कोड निर्माण, वा सामान्य वार्तालाप गर्नु परेको हो भने, तपाईंलाई RAG आवश्यक छैन।

RAG को सिमाहरू

RAG चांदीको गोली होइन:

  • Retrieval quality assumes generation quality। यदि तपाईंको खोजी विधिले सान्दर्भिक कागजातहरू नल्याई भने, LLM ले न्यायोचित जवाफ produce गर्न सक्दैन। “Garbage in, garbage out” यहाँ लागू हुन्छ।
  • Context window seams। धेरै कागजातहरूको लागि, तपाईं तिनीहरू सबैलाई एउटै LLM कल मा फिट गर्न सक्नुहुन्न। तपाईंले कि त कागजातहरूको संख्या घटाउनुहुन्छ (कम top_k, वा रैंकिंग सुधार), वा तपाईंले जवाफलाई प्रगतिशील रूपमा निर्माण गर्नुहुन्छ, वा तपाईंले सारांश गर्नुहुन्छ।
  • Cross-document reasoning कठिन छ। प्रश्नहरू जुन धेरै कागजातहरू भर तर्क आवश्यक पर्दछ (जस्तै, “यी दुई अनुबन्धहरू बीच फरक के छ?”) सामान्य RAG संगै संघर्ष गर्दछ। तिनीहरूको लागि, तपाईंले प्राय: प्रश्नलाई subquestions मा तोड्नु पर्छ, प्रत्येकको लागि retrieve गर्नु पर्छ, र synthesize गर्नु पर्छ।
  • कागजातहरू फ्रेस रहनुपर्दछ। यदि तपाईंको HR नीति परिवर्तन हुन्छ र तपाईं re-index गर्न बिर्सनुहुन्छ भने, तपाईंको सहायकले पुरानो नियमहरू फर्काउने छ। एक पुन: indexing कार्यक्षमको भाग हुनुपर्दछ।

अगाडि हेर्दै

तपाईंले RAG को विचार बुझ्नुभएको छ र यसले किन काम गर्छ थाहा पाउनुभएको छ। अर्को खण्ड यसलाई निर्माण गर्दछ: end-to-end, working RAG pipeline बाट सुरु देखि अन्त्य सम्म, नेपाली FAQ बोटको लागि जुन तपाईंको आफ्नो कागजातहरू (एक साधारण PDF) माथि जवाफ दिन्छ। तीसौँ मिनेटमा, तपाईंसँग RAG प्रणाली छ जुन तपाईंले run गर्न, संशोधन गर्न, र आफ्नो प्रयोगकर्ताहरूलाई पेश गर्न सक्नुहुन्छ।

आफ्नो बुझाइ जाँच्नुहोस्

Quick check

किन RAG लाई 'ग्राउन्ड गरिएको जवाफ' उत्पादन गर्ने विधि भनिन्छ?

Quick check

RAG system prompt लेख्दा तीन crucial rules के हुन्?