GenAI Stack کی حقیقت کو سمجھنا

روایتی سافٹ ویئر ڈیزائن 'determinism' (حتمیت) پر انحصار کرتا ہے۔ آپ ایک ان پٹ بھیجتے ہیں، اسے ایک schema کے مطابق چیک کرتے ہیں، اور ایک قابلِ پیش گوئی آؤٹ پٹ کی توقع کرتے ہیں۔

Generative AI اس صورتحال کو بدل دیتی ہے۔ Large Language Models (LLMs) 'probabilistic engines' (احتمالی انجن) ہیں۔ وہ احتمال کی بنیاد پر متن کی پیش گوئی کرتے ہیں۔

اگر آپ LLM کو ایک جادوئی ڈبے کی طرح سمجھیں گے، تو آپ کی پروڈکشن ایپس ناکام ہو جائیں گی۔ لیکن اگر آپ اسے ایک غیر مستحکم اور non-deterministic تھرڈ پارٹی API کے طور پر دیکھیں گے، تو آپ قابلِ اعتماد سسٹم بنا سکتے ہیں۔

ایک LLM کی کچھ مخصوص حدود (constraints) ہوتی ہیں جنہیں آپ کو سنبھالنا ہوتا ہے:

  • Payload Size: ماڈلز کی کچھ سخت حدود ہوتی ہیں جنہیں context windows کہا جاتا ہے۔ آپ لامحدود ڈیٹا نہیں بھیج سکتے۔
  • Latency: ڈیٹا بیس سے معلومات پڑھنے میں ملی سیکنڈز لگتے ہیں، جبکہ LLM inference میں سیکنڈز لگتے ہیں۔ اس صورتحال سے نمٹنے کے لیے آپ کو asynchronous queues یا streaming کی ضرورت ہوتی ہے۔
  • Hallucinations: اگر کسی ماڈل کے پاس مخصوص ڈیٹا کی کمی ہو، تو وہ ایک ایسا جواب گھڑ لے گا جو سننے میں درست لگے لیکن حقیقت میں غلط ہو۔

مہنگے ری ٹریننگ (retraining) کے بغیر ڈیٹا کے مسئلے کو حل کرنے کے لیے، ہم Retrieval-Augmented Generation (RAG) کا استعمال کرتے ہیں۔

RAG کا مطلب ہے کہ آپ اپنا ڈیٹا بیس API کے ساتھ لے کر آئیں۔ ماڈل سے آپ کا ڈیٹا جاننے کی توقع کرنے کے بجائے، آپ کا بیک اینڈ متعلقہ سیاق و سباق (context) تلاش کرتا ہے اور اسے prompt میں شامل کر دیتا ہے۔

RAG کا ورک فلو (workflow):

  1. صارف ایک prompt بھیجتا ہے۔
  2. آپ کا سسٹم ایک Vector Database سے معلومات حاصل کرتا ہے۔
  3. سسٹم معانی کے لحاظ سے ملتے جلتے متن کے ٹکڑے (text chunks) تلاش کرتا ہے۔
  4. سسٹم ان ٹکڑوں کو prompt میں شامل کر دیتا ہے۔
  5. LLM فراہم کردہ سیاق و سباق (grounded context) پر کارروائی کرتا ہے۔

یہ LLM کو محض معلومات پیدا کرنے والے سے بدل کر ایک context processor بنا دیتا ہے۔ اس سے غلطیوں میں نمایاں کمی آتی ہے۔

LLM کے آؤٹ پٹ کو خودکار سروسز کے لیے مفید بنانے کے لیے، آپ کو Structured Outputs کی ضرورت ہوتی ہے۔ آپ کسی مائیکرو سروس کے لیے بات چیت والے متن (conversational text) کو پر کرنے کے لیے regex کا استعمال نہیں کر سکتے۔ آپ کو JSON کی طرح درست schema definitions فراہم کرنی ہوں گی۔ اس سے یہ یقینی بنتا ہے کہ ماڈل ایک ایسے سخت لے آؤٹ پر عمل کرے جسے آپ کا کوڈ پڑھ سکے۔

پروڈکشن AI بنانے کے لیے لینیئر پرامپٹس (linear prompts) سے نکل کر ایک مضبوط سسٹم ڈیزائن کی طرف بڑھنا ضروری ہے۔

Source: https://dev.to/ingit_bhatnagar/de-mystifying-the-genai-stack-from-llms-to-rag-a-systems-perspective-4jp8

Optional learning community: https://t.me/GyaanSetuAi