RAG क्या है? Retrieval-Augmented Generation को आसान भाषा में समझें
RAG (retrieval-augmented generation) AI मॉडल को आपकी अपनी जानकारी से सवालों के जवाब देने का एक तरीका है। जब कोई सवाल पूछता है, तो आपका ऐप पहले आपके दस्तावेज़ों में सबसे प्रासंगिक अंश खोजता है, फिर उन अंशों को सवाल के साथ मॉडल को देता है। मॉडल अपना जवाब उसी टेक्स्ट से लिखता है, न कि सिर्फ़ उस पर जो ट्रेनिंग के दौरान उसने संयोग से सीखा था।
AI के साथ बनाते समय RAG क्यों मायने रखता है
एक बड़ा भाषा मॉडल दुनिया के बारे में आम तौर पर बहुत कुछ जानता है, पर आपके कारोबार के बारे में कुछ नहीं जानता: आपकी कीमतें, आपकी नीतियाँ, आपका प्रोडक्ट मैनुअल, पिछले हफ़्ते के सपोर्ट टिकट। उसकी ट्रेनिंग की एक कट-ऑफ़ तारीख भी होती है, इसलिए उसे हाल की किसी चीज़ के बारे में पता नहीं होता। फिर भी उससे पूछें, तो वह भरोसे से दिया गया, सही लगने वाला लेकिन गलत जवाब दे सकता है।
इसे ठीक करने के तीन मोटे रास्ते हैं:
| तरीका | यह क्या करता है | किसके लिए अच्छा है |
|---|---|---|
| सब कुछ प्रॉम्प्ट में डालें | हर सवाल के साथ अपने सारे दस्तावेज़ भेजें | थोड़ा टेक्स्ट, कुछ पन्ने |
| RAG | दस्तावेज़ों में खोजें, सिर्फ़ प्रासंगिक हिस्से भेजें | बड़े या बदलते संग्रह: हेल्प सेंटर, मैनुअल, नोट्स |
| फ़ाइन-ट्यूनिंग | उदाहरणों पर मॉडल को और ट्रेन करें | लहजा, फ़ॉर्मेट और दोहराए जाने वाले काम, बदलते तथ्य नहीं |
आजकल के मॉडल लंबे प्रॉम्प्ट स्वीकार कर लेते हैं, इसलिए एक छोटे FAQ के लिए पहला तरीका अक्सर ठीक रहता है। RAG तब काम आता है जब आपके पास इतना टेक्स्ट हो कि उसे हर बार भेजना न चाहें, क्योंकि भेजा गया हर शब्द पैसे और समय में लगता है (देखें LLM API का शुल्क कैसे लगता है)।
अगर आप "हमारे दस्तावेज़ों से चैट करें" वाला फ़ीचर, सपोर्ट असिस्टेंट या आंतरिक ज्ञान का टूल बना रहे हैं, तो लगभग निश्चित रूप से आप किसी न किसी रूप का RAG बना रहे हैं।
रोज़मर्रा की एक मिसाल
एक ओपन-बुक परीक्षा सोचिए। जो छात्र याद से जवाब देता है, वह गलत याद कर सकता है या बातें बनाने लगता है। जिस छात्र को पहले सही पन्ने पलटकर पढ़ने की छूट है और फिर जवाब लिखना है, वह कहीं ज़्यादा भरोसेमंद है, बशर्ते उसे सही पन्ने मिलें।
- छात्र भाषा मॉडल है।
- पाठ्यपुस्तक आपके दस्तावेज़ हैं।
- सही पन्ने पलटना retrieval है।
- उन पन्नों से जवाब लिखना generation है।
RAG ओपन-बुक वाला तरीका है। और परीक्षा की तरह, जवाब की गुणवत्ता इस पर बहुत निर्भर करती है कि सही पन्ने मिले या नहीं।
RAG कैसे काम करता है, चरण-दर-चरण
एक सामान्य RAG सेटअप में दो चरण होते हैं।
अपने दस्तावेज़ तैयार करना (पहले से किया जाता है):
- इकट्ठा करें स्रोत सामग्री: हेल्प आर्टिकल, PDF, नीतियाँ, प्रोडक्ट डेटा।
- Chunk बनाएँ: लंबे दस्तावेज़ों को छोटे टुकड़ों में बाँटें, अक्सर कुछ पैराग्राफ़ के, ताकि खोज सिर्फ़ प्रासंगिक हिस्सा लौटाए।
- हर chunk का embedding बनाएँ: उसे एक embedding मॉडल को भेजें, जो टेक्स्ट को एक embedding में बदल देता है, यानी संख्याओं की एक लंबी सूची जो उसका अर्थ समेटती है। एक जैसी बातों वाले टेक्स्ट की संख्याएँ भी मिलती-जुलती होती हैं।
- Store करें chunks और उनके embeddings को ऐसे डेटाबेस में जो समानता के आधार पर खोज सके (जिसे अक्सर vector database या vector index कहते हैं)।
सवाल का जवाब देना (हर बार किया जाता है):
- सवाल का embedding बनाएँ उसी embedding मॉडल से।
- Retrieve करें वे chunks जिनके embeddings सवाल के सबसे नज़दीक हैं, मान लीजिए शीर्ष पाँच।
- प्रॉम्प्ट बनाएँ: निर्देश, मिले हुए chunks और सवाल।
- Generate करें: भाषा मॉडल उन chunks के आधार पर जवाब लिखता है, आदर्श रूप से यह भी बताते हुए कि उसने कौन से इस्तेमाल किए।
अर्थ के आधार पर खोजना ही इसे काम करवाता है: "मेरे पैसे वापस पाने" के बारे में सवाल "रिफ़ंड नीति" शीर्षक वाला chunk ढूँढ सकता है, भले ही दोनों में एक भी शब्द एक जैसा न हो।
एक उदाहरण: जिम का हेल्प असिस्टेंट
मान लीजिए एक जिम के पास 40 हेल्प आर्टिकल हैं और वह अपनी वेबसाइट पर एक चैट असिस्टेंट चाहता है। एक सदस्य पूछता है: "क्या मैं यात्रा के दौरान अपनी मेंबरशिप रोक सकता हूँ?"
ऐप सवाल का embedding बनाता है और सबसे नज़दीकी तीन chunks लाता है। उनमें से एक यह है:
मेंबरशिप फ़्रीज़: मासिक प्लान वाले सदस्य साल में अधिकतम 2 महीने
के लिए अपनी मेंबरशिप फ़्रीज़ कर सकते हैं। फ़्रीज़ शुरू होने से
कम से कम 7 दिन पहले फ़्रंट डेस्क पर या ऐप में अनुरोध करें।
मॉडल को भेजा गया प्रॉम्प्ट कुछ ऐसा दिखता है:
तुम Northside Gym के हेल्प असिस्टेंट हो।
सिर्फ़ नीचे दिए स्रोतों से जवाब दो। अगर जवाब उनमें न हो,
तो कहो कि तुम्हें पता नहीं और फ़्रंट डेस्क से संपर्क का सुझाव दो।
बताओ कि तुमने कौन सा स्रोत इस्तेमाल किया।
[स्रोत 1: मेंबरशिप फ़्रीज़] मासिक प्लान वाले सदस्य फ़्रीज़ कर सकते हैं...
[स्रोत 2: अपनी मेंबरशिप रद्द करना] ...
[स्रोत 3: गेस्ट पास] ...
सवाल: क्या मैं यात्रा के दौरान अपनी मेंबरशिप रोक सकता हूँ?
और मॉडल जवाब देता है: "हाँ, मासिक प्लान पर आप साल में अधिकतम दो महीने तक अपनी मेंबरशिप फ़्रीज़ कर सकते हैं। कम से कम 7 दिन पहले फ़्रंट डेस्क पर या ऐप में अनुरोध करें (स्रोत: मेंबरशिप फ़्रीज़)।"
जिम ने कुछ भी दोबारा ट्रेन नहीं किया। जब वह फ़्रीज़ नीति बदलता है, तो आर्टिकल अपडेट करता है, ऐप उस chunk का embedding दोबारा बनाता है, और अगला जवाब बदलाव को दिखाता है।
मुख्य शब्द
| शब्द | मतलब |
|---|---|
| LLM | भाषा मॉडल: वह AI जो जवाब लिखता है। देखें LLM क्या है। |
| Embedding | किसी टेक्स्ट के अर्थ को दर्शाने वाली संख्याओं की सूची। |
| Embedding मॉडल | वह मॉडल जो embeddings बनाता है। आम तौर पर चैट मॉडल से अलग और कहीं सस्ता होता है। |
| Chunk | दस्तावेज़ का एक टुकड़ा, जिसका आकार ऐसा हो कि उसे अकेले खोजा जा सके। |
| Vector database / vector search | ऐसा स्टोरेज जो मिलते-जुलते embeddings वाली चीज़ें ढूँढता है। कुछ सामान्य डेटाबेस भी यह देते हैं, जैसे Postgres, pgvector एक्सटेंशन के ज़रिए। |
| Top-k | हर सवाल पर कितने chunks लाए जाते हैं। |
| Hybrid search | अर्थ-आधारित खोज को सामान्य कीवर्ड खोज के साथ मिलाना, जो प्रोडक्ट कोड जैसे सटीक शब्दों में मदद करता है। |
| Context window | एक अनुरोध में मॉडल जितना अधिकतम टेक्स्ट ले सकता है। |
| Grounding / citations | जवाब को खास मिले हुए स्रोतों से जोड़ना और उन्हें दिखाना। |
आम गलतफ़हमियाँ
- "RAG मेरे डेटा पर मॉडल को ट्रेन करता है।" ऐसा नहीं है। मॉडल में कुछ नहीं बदलता; वह सवाल के समय सिर्फ़ अतिरिक्त टेक्स्ट पढ़ता है।
- "RAG का मतलब है कोई गलत जानकारी नहीं।" इसका मतलब है कम गलतियाँ। अगर खोज सही chunk चूक जाए, या जवाब आपके दस्तावेज़ों में न हो, तो मॉडल फिर भी अंदाज़ा लगा सकता है। उसे कहें कि "मुझे नहीं पता" बोले, और ऐसे सवालों से टेस्ट करें जिनके जवाब आप जानते हैं।
- "मुझे एक खास vector database चाहिए।" अक्सर ज़रूरत नहीं होती। थोड़े डेटा के लिए, आपके पास मौजूद डेटाबेस का vector एक्सटेंशन, या सामान्य कीवर्ड खोज भी काफ़ी हो सकती है।
- "बड़े chunks बेहतर हैं।" बहुत बड़े हों तो ढेर सारा अप्रासंगिक टेक्स्ट जाता है (ज़्यादा लागत, ज़्यादा उलझन); बहुत छोटे हों तो chunk अपना संदर्भ खो देता है जिससे वह अर्थपूर्ण बनता है। समायोजन की उम्मीद रखें।
- "बस सब कुछ अपलोड कर दें।" पुराने, दोहराए गए या आपस में विरोधी दस्तावेज़ विरोधी जवाब देते हैं। स्रोत सामग्री की सफ़ाई अक्सर सबसे बड़ा सुधार होता है जो आप कर सकते हैं।
- "कोई भी कोई भी दस्तावेज़ देख सकता है।" तभी जब आप इसे ऐसे बनाएँ। अगर कुछ दस्तावेज़ कुछ खास उपयोगकर्ताओं तक ही सीमित हैं, तो खोज खुद पूछने वाले के आधार पर फ़िल्टर करनी होगी, वरना असिस्टेंट एक ग्राहक का डेटा दूसरे को उद्धृत कर सकता है।
इसकी लागत
RAG फ़ीचर की आम तौर पर तीन चालू लागतें होती हैं: आपके दस्तावेज़ों का embedding (छोटी, और ज़्यादातर एक बार की), हर सवाल का embedding (बहुत कम), और भाषा मॉडल की कॉल (मुख्य लागत, जो इस पर बढ़ती है कि आप कितने chunks भेजते हैं)। इसके अलावा आपके डेटाबेस में स्टोरेज। आपका AI प्रोवाइडर ये शुल्क आपके अपने खाते में लगाता है, इसलिए वहीं खर्च की सीमा तय करें।
अपने AI बिल्डर से क्या माँगें
- "RAG बनाने से पहले जाँचो: क्या हमारी सामग्री इतनी छोटी है कि उसे सीधे प्रॉम्प्ट में डाला जा सके?"
- "हेल्प आर्टिकल को कुछ पैराग्राफ़ के chunks में बाँटो, हर chunk का शीर्षक और स्रोत लिंक रखो, और embeddings हमारे डेटाबेस में store करो।"
- "Hybrid search इस्तेमाल करो, अर्थ-आधारित और कीवर्ड दोनों, ताकि प्रोडक्ट कोड भी मेल खाएँ।"
- "मॉडल से कहो कि वह सिर्फ़ मिले हुए स्रोतों से जवाब दे, बताए जब उसे पता न हो, और हर जवाब के नीचे स्रोत दिखाए।"
- "सिर्फ़ वही दस्तावेज़ खोजो जो साइन-इन उपयोगकर्ता देखने की अनुमति रखता है।"
- "कोई दस्तावेज़ संपादित होते ही उसका embedding अपने-आप दोबारा बनाओ।"
- "AI प्रोवाइडर की कुंजी सर्वर पर एक सीक्रेट में रखो, कभी ब्राउज़र में नहीं।"
- "हर सवाल, लाए गए chunks और जवाब का लॉग रखो, ताकि मैं गलत जवाबों की समीक्षा कर सकूँ।"
Mythex में RAG
Mythex में कोई बना-बनाया knowledge-base या RAG प्रोडक्ट शामिल नहीं है। यह आपके ऐप के अंदर उसका कोड लिखता है: आप अपने दस्तावेज़ और अपनी AI प्रोवाइडर की कुंजी लाते हैं, जो प्रोजेक्ट सीक्रेट के रूप में सुरक्षित रहती है, और एजेंट retrieval व चैट वाले हिस्से बनाता है, स्टोरेज के लिए प्रोजेक्ट के Postgres डेटाबेस का इस्तेमाल करते हुए। प्रोवाइडर का उपयोग आपके प्रोवाइडर खाते में बिल होता है, Mythex क्रेडिट में नहीं। डॉक्स सुझाते हैं कि एक सरल AI फ़ीचर से शुरू करें और उसके चलने के बाद RAG जोड़ें। देखें AI ऐप बनाना, और हमारे गाइड AI चैटबॉट ऐप बनाना और अपने ऐप में AI फ़ीचर जोड़ना।
सवाल
सरल शब्दों में RAG क्या है?
RAG (retrieval-augmented generation) AI मॉडल को आपकी अपनी जानकारी से जवाब देने का एक तरीका है। मॉडल जवाब देने से पहले आपका ऐप सवाल से जुड़े सबसे प्रासंगिक अंश आपके दस्तावेज़ों में खोजता है और उन्हें प्रॉम्प्ट में जोड़ देता है, ताकि जवाब सिर्फ़ उस चीज़ पर न टिके जो मॉडल ने ट्रेनिंग में सीखा था।
क्या RAG मेरे डेटा पर AI को ट्रेन करता है?
नहीं। RAG मॉडल को बिल्कुल नहीं बदलता। सवाल पूछे जाने के समय वह प्रासंगिक टेक्स्ट खोजता है और सवाल के साथ उसे मॉडल को देता है। कोई दस्तावेज़ बदलें तो अगला जवाब तुरंत नए संस्करण का इस्तेमाल कर सकता है।
क्या RAG और फ़ाइन-ट्यूनिंग एक ही चीज़ हैं?
नहीं। फ़ाइन-ट्यूनिंग उदाहरणों पर मॉडल को और ट्रेन करके उसका व्यवहार बदलती है, जो धीमी है और स्टाइल या फ़ॉर्मेट के लिए बेहतर है। RAG सवाल के समय मॉडल को पढ़ने के लिए तथ्य देता है, जो बदलती जानकारी या सटीक उद्धरण ज़रूरी होने पर बेहतर है।
क्या RAG AI की गलत जानकारी (hallucinations) रोक देता है?
यह उन्हें कम करता है, पूरी तरह खत्म नहीं करता। अगर खोज गलत अंश ढूँढे, या जवाब आपके दस्तावेज़ों में न हो, तो मॉडल फिर भी अंदाज़ा लगा सकता है। अच्छे RAG ऐप मॉडल से कहते हैं कि जब उसे पता न हो तो साफ़ कहे, और जवाब के साथ इस्तेमाल किए गए स्रोत भी दिखाते हैं।