GenAI Stack को समझना

पारंपरिक सॉफ्टवेयर डिज़ाइन 'डिटरमिनिज्म' (determinism) पर निर्भर करता है। आप एक इनपुट भेजते हैं, उसे स्कीमा (schema) के विरुद्ध मान्य करते हैं, और एक पूर्वानुमेय (predictable) आउटपुट की अपेक्षा करते हैं।

Generative AI इसे बदल देता है। Large Language Models (LLMs) संभाव्यता इंजन (probabilistic engines) हैं। वे संभावना (probability) के आधार पर टेक्स्ट का अनुमान लगाते हैं।

यदि आप LLM को एक जादू के डिब्बे की तरह मानते हैं, तो आपके प्रोडक्शन ऐप्स विफल हो जाएंगे। यदि आप इसे एक अस्थिर (volatile), नॉन-डिटरमिनिस्टिक (non-deterministic) थर्ड-पार्टी API के रूप में देखते हैं, तो आप विश्वसनीय सिस्टम बना सकते हैं।

एक LLM की कुछ विशिष्ट सीमाएं होती हैं जिन्हें आपको प्रबंधित करना होगा:

  • Payload Size: मॉडल्स की 'कॉन्टेक्स्ट विंडो' (context windows) नामक सख्त सीमाएं होती हैं। आप असीमित डेटा नहीं भेज सकते।
  • Latency: डेटाबेस रीड में मिलीसेकंड लगते हैं। LLM इन्फरेंस (inference) में सेकंड लगते हैं। इसे संभालने के लिए आपको एसिंक्रोनस क्यूज़ (asynchronous queues) या स्ट्रीमिंग की आवश्यकता होती है।
  • Hallucinations: यदि किसी मॉडल के पास विशिष्ट डेटा की कमी है, तो वह एक विश्वसनीय लेकिन गलत उत्तर बना देगा।

महंगे रिट्रेनिंग (retraining) के बिना डेटा की समस्या को हल करने के लिए, हम Retrieval-Augmented Generation (RAG) का उपयोग करते हैं।

RAG का अर्थ है API के साथ अपना स्वयं का डेटाबेस लाना। मॉडल से आपके डेटा को जानने की अपेक्षा करने के बजाय, आपका बैकएंड प्रासंगिक कॉन्टेक्स्ट (context) प्राप्त करता है और उसे प्रॉम्प्ट (prompt) में डाल देता है।

RAG वर्कफ़्लो:

  1. उपयोगकर्ता एक प्रॉम्प्ट भेजता है।
  2. आपका सिस्टम एक Vector Database को क्वेरी करता है।
  3. सिस्टम अर्थपूर्ण रूप से समान (semantically similar) टेक्स्ट चंक्स (chunks) खोजता है।
  4. सिस्टम इन चंक्स को प्रॉम्प्ट में डाल देता है।
  5. LLM ग्राउंडेड कॉन्टेक्स्ट (grounded context) को प्रोसेस करता है।

यह LLM को एक नॉलेज जनरेटर से बदलकर एक कॉन्टेक्स्ट प्रोसेसर बना देता है। इससे त्रुटियां काफी कम हो जाती हैं।

LLM आउटपुट को ऑटोमेटेड सेवाओं के लिए उपयोगी बनाने के लिए, आपको Structured Outputs की आवश्यकता होती है। आप किसी माइक्रोसर्विस के लिए कन्वर्सेशनल टेक्स्ट को पार्स करने के लिए regex का उपयोग नहीं कर सकते। आपको JSON जैसे सटीक स्कीमा डेफिनिशन (schema definitions) पास करने होंगे। यह सुनिश्चित करता है कि मॉडल एक सख्त लेआउट का पालन करे जिसे आपका कोड पढ़ सके।

प्रोडक्शन AI बनाने के लिए लीनियर प्रॉम्प्ट्स (linear prompts) से हटकर एक मजबूत सिस्टम डिज़ाइन की ओर बढ़ने की आवश्यकता है।

स्रोत: https://dev.to/ingit_bhatnagar/de-mystifying-the-genai-stack-from-llms-to-rag-a-systems-perspective-4jp8

वैकल्पिक लर्निंग कम्युनिटी: https://t.me/GyaanSetuAi