- AI
- RAG
- इंजीनियरिंग
ग्राहक सहायता के लिए RAG: AI के जवाबों को वास्तव में सटीक कैसे बनाएं
सादा LLM भरोसेमंद लगने वाले जवाब गढ़ लेता है। रिट्रीवल-ऑगमेंटेड जनरेशन (RAG) AI को आपकी अपनी सामग्री पर टिकाए रखता है। यहाँ कदम-दर-कदम देखें कि AskAIs यह कैसे करता है।
AskAIs टीम
पढ़ने में 7 मिनट
किसी सादे LLM से पूछिए “मैं अपना पासवर्ड कैसे रीसेट करूँ?” और आपको एक भरोसेमंद लगने वाला जवाब मिलेगा जो शायद गलत है: कोई और बटन, कोई और प्रक्रिया, कोई और URL। RAG (रिट्रीवल-ऑगमेंटेड जनरेशन) इसे ठीक करता है: मॉडल के जवाब देने से पहले यह आपकी अपनी सामग्री के सही अंश प्रॉम्प्ट में डाल देता है।
पाइपलाइन एक नज़र में
तीन चरण: सामग्री जोड़ना, खोजना और जवाब बनाना।
1. सामग्री जोड़ना
- PDF, DOCX, TXT, Markdown, CSV या JSON फ़ाइलें अपलोड करें, अपनी वेबसाइट क्रॉल करें, या Training में सवाल-जवाब के जोड़े डालें।
- वर्कर टेक्स्ट निकालता है और उसे लगभग 2,000 कैरेक्टर (करीब 500 token) के अंशों में बाँटता है, जिनमें 200 कैरेक्टर का ओवरलैप होता है। हर सवाल-जवाब जोड़ा एक ही अंश रहता है।
- हर अंश का एम्बेडिंग
text-embedding-3-small(1,536 डाइमेंशन) से बनाया जाता है। - अंश PostgreSQL में
pgvectorएक्सटेंशन और cosine distance के लिए HNSW इंडेक्स के साथ सेव किए जाते हैं।
2. खोजना
जब किसी विज़िटर के मैसेज के लिए तथ्यों की ज़रूरत होती है, तो हम उसके हाल के मैसेज का एम्बेडिंग बनाते हैं और वर्कस्पेस के अंशों पर cosine distance से खोज चलाते हैं। अभिवादन और सामान्य बातचीत में यह चरण छोड़ दिया जाता है। क्वेरी का एक सरल रूप:
-- Simplified. The real query also checks that the document is
-- ready, enabled, in date and visible on the visitor's platform.
SELECT c.id, c.content,
1 - (c.embedding <=> $1::vector) AS similarity
FROM knowledge_chunks c
WHERE c.tenant_id = $2
ORDER BY c.embedding <=> $1::vector
LIMIT $3; -- 3 × top-K candidates, re-ranked afterwardsहमें जितने अंश चाहिए, उनसे तीन गुना ज़्यादा उम्मीदवार हम लाते हैं, उन्हें फिर से रैंक करते हैं, समानता की सीमा (लगभग 0.3) से नीचे वाले हटा देते हैं, हर दस्तावेज़ से अधिकतम दो अंश रखते हैं, और सबसे ऊपर के पाँच (डिफ़ॉल्ट रूप से) मॉडल को देते हैं।
3. जवाब बनाना
अंश सिस्टम प्रॉम्प्ट के अंत में एक अलग से घेरे गए संदर्भ खंड के अंदर जोड़े जाते हैं। मॉडल को कहा जाता है कि उस खंड को निर्देश नहीं, डेटा माने, सिर्फ़ वही संदर्भ इस्तेमाल करे जो सवाल का जवाब देते हैं, और प्रोडक्ट के ऐसे तथ्य न गढ़े जो वहाँ नहीं हैं।
अगर कोई विज़िटर प्रोडक्ट से जुड़े किसी तथ्य के बारे में पूछता है और कुछ प्रासंगिक नहीं मिलता, तो मॉडल को बिल्कुल कॉल नहीं किया जाता: विज़िटर को बताया जाता है कि यह जानकारी उपलब्ध नहीं है, और चैट किसी इंसान के पास चली जाती है, जब तक ऑटोमैटिक हैंड-ऑफ़ बंद न हो।
लागत कम रखना
तीन चीज़ें बड़े नॉलेज बेस को किफ़ायती रखती हैं:
- एम्बेडिंग कैश: एक जैसे सर्च टेक्स्ट को एक जैसा एम्बेडिंग मिलता है। कैश की कुंजी मॉडल का नाम और टेक्स्ट का SHA-1 हैश है, जो Redis में 24 घंटे तक रखी जाती है।
- प्रॉम्प्ट कैशिंग: Claude मॉडल के लिए रिक्वेस्ट Anthropic से प्रॉम्प्ट कैश करने को कहती है, और OpenAI लंबे प्रॉम्प्ट अपने-आप कैश करता है। संदर्भ खंड हर जवाब के साथ बदलता है, इसलिए ज़्यादातर फ़ायदा प्रॉम्प्ट के स्थिर हिस्से को मिलता है।
- सीमा के आधार पर छोड़ना: अगर कोई अंश सीमा पार नहीं करता, तो प्रॉम्प्ट में कुछ नहीं जोड़ा जाता।
जब RAG काफ़ी नहीं होता
RAG “मैं … कैसे करूँ?” वाले सवालों को अच्छी तरह संभालता है। यह “मेरा ऑर्डर कहाँ है?” का जवाब नहीं दे सकता, क्योंकि वह डेटा आपके दस्तावेज़ों में नहीं होता।
इसके लिए AskAIs में Custom tools हैं: आप अपने सिस्टम का कोई HTTP एंडपॉइंट बताते हैं, जैसे ऑर्डर, बुकिंग या स्टॉक, और AI जवाब लिखते समय उसे कॉल कर सकता है। सामान्य सवालों के जवाब आपकी नॉलेज से मिलते हैं, निजी सवालों के आपके सिस्टम से, और बाकी आपकी टीम के पास जाते हैं।