# RAG Prompt बनाना — Retrieval-Augmented Generation (RAG)

Source: https://www.geekswithgeeks.com/hi/rag/g-prompt

> निर्देश, क्रमांकित संदर्भ और सवाल जोड़ें।

## नियम, प्रमाण, सवाल

RAG prompt के तीन हिस्से हैं। **निर्देश**: सिर्फ़ संदर्भ से उत्तर दें, स्रोत बताएँ, उत्तर न हो तो "मुझे नहीं पता" कहें, और output format मानें। **संदर्भ**: chunks, हर एक **संख्या या ID** के साथ और ज़रूरी हो तो स्रोत व तिथि। **सवाल**। निर्देश पहले (या system prompt में) और सवाल अंत में रखें। संदर्भ को साफ़ **डेटा** के रूप में चिह्नित करें, निर्देश नहीं, क्योंकि retrieved पाठ में prompt-injection प्रयास हो सकते हैं। कोड उपयोग करे तो structured output (जैसे `answer` और `citations` वाला JSON) माँगें।

## Prompt, cite, verify

अच्छा prompt, कोड में जाँचे citations और groundedness परीक्षण उत्तरों को ईमानदार रखते हैं।

![तीन चरण: निर्देश, cite, verify।](assets/figures/rag/section-5-map.svg) — चित्र 5.1 — निर्देश, cite और verify।

## Prompt जोड़ना, चलाकर

मैंने यह सादा-Python (सिर्फ़ standard library) उदाहरण चलाया। Function हर chunk को क्रमांक देता है ताकि मॉडल [1] या [2] cite कर सके।

```python
def build_prompt(question, chunks):
    context = "\n".join(f"[{i}] {c}" for i, c in enumerate(chunks, start=1))
    return (
        "Answer only from the numbered context. Cite sources like [1]. "
        "If the answer is not in the context, say you do not know.\n\n"
        f"Context:\n{context}\n\nQuestion: {question}\nAnswer:"
    )

chunks = ["Employees get 24 days of paid leave per year.",
          "Unused leave up to 5 days can be carried over."]
print(build_prompt("How many days can I carry over?", chunks))

```

Output:

```
Answer only from the numbered context. Cite sources like [1]. If the answer is not in the context, say you do not know.

Context:
[1] Employees get 24 days of paid leave per year.
[2] Unused leave up to 5 days can be carried over.

Question: How many days can I carry over?
Answer:
```

## सवाल अंत में रखें

मॉडल prompt के अंत को अधिक भार देते हैं, इसलिए सवाल संदर्भ के बाद रखें और संदर्भ लंबा हो तो मुख्य नियम संक्षेप में दोहराएँ।

**Quiz:** Prompt में हर chunk को संख्या या ID क्यों दें?

- [ ] Tokens घटाने के लिए
- [ ] पाठ छिपाने के लिए
- [x] ताकि मॉडल बता सके कि कौन-सा chunk हर दावे का समर्थन करता है
- [ ] Retrieval छोड़ने के लिए

*Answer:* ताकि मॉडल बता सके कि कौन-सा chunk हर दावे का समर्थन करता है. IDs citations को संभव और जाँचने योग्य बनाते हैं।
