RAG Ingestion کے لیے Async Scraping زیادہ بہتر ہے
RAG سسٹمز اکثر پرانے ڈیٹا (stale data) کی وجہ سے ناکام ہو جاتے ہیں۔ پیج تبدیل ہو جاتا ہے لیکن آپ کا انڈیکس وہی رہتا ہے۔ اس کے نتیجے میں آپ کا AI بڑے اعتماد کے ساتھ غلط جوابات دیتا ہے۔
بہت سے لوگ اسے سادہ synchronous scrapers کے ذریعے ٹھیک کرنے کی کوشش کرتے ہیں۔ آپ ایک پیج حاصل کرتے ہیں، ڈیٹا نکالتے ہیں، اور اپنے vector store کو اپ ڈیٹ کرتے ہیں۔ یہ طریقہ کار پروڈکشن میں مسائل پیدا کرتا ہے۔
Synchronous scraping کے اہم مسائل:
- JavaScript یا cookie banners کی وجہ سے پیج لوڈ ہونے میں کافی وقت لگتا ہے۔
- آپ کی API اسکریپر کے مکمل ہونے کا انتظار کرتی ہے، جس سے صارفین کی رفتار سست ہو جاتی ہے۔
- جب آپ کاموں (tasks) کو متوازی (parallel) طور پر چلاتے ہیں تو میموری یا اوپن ساکٹس (open sockets) ختم ہو جاتے ہیں۔
- Timeouts یا rate limits جیسے ایررز کو سنبھالنا مشکل ہوتا ہے۔
Async scraping میں submit، poll، اور retrieve کا طریقہ کار استعمال ہوتا ہے۔ آپ ایک ٹاسک جمع کرواتے ہیں، ایک job ID حاصل کرتے ہیں، اور بعد میں نتیجہ چیک کرتے ہیں۔ اس سے آپ کی ایپلی کیشن تیز رہتی ہے۔
ایک قابل اعتماد ingestion pipeline کیسے بنائیں:
- Scraping کو request handling سے الگ کریں۔ آپ کی ایپ کو براؤزر لوڈ ہونے کا انتظار نہیں کرنا چاہیے۔
- Job states کو ڈیٹا بیس میں محفوظ کریں۔ URL، اسٹیٹس اور ایررز پر نظر رکھیں۔
- Content hashes کا استعمال کریں۔ اگر پیج کا مواد تبدیل نہیں ہوا ہے، تو اسے دوبارہ embed نہ کریں۔ اس سے وقت اور پیسے کی بچت ہوتی ہے۔
- Dead-letter queues کا استعمال کریں۔ اگر کوئی job تین بار فیل ہو جائے تو دوبارہ کوشش کرنا بند کر دیں۔ اسے ایک ایسی فہرست میں منتقل کر دیں جو نظر آ سکے تاکہ آپ اسے ٹھیک کر سکیں۔
- اپنے ڈیٹا کی تصدیق (validate) کریں۔ اپنے vector store تک پہنچنے سے پہلے نکالا گیا ڈیٹا چیک کرنے کے لیے schema کا استعمال کریں۔ ایک خالی اسٹرنگ (empty string) ایک فیل شدہ job سے بھی زیادہ بری ہوتی ہے۔
Async scraping بیک گراؤنڈ اپ ڈیٹس اور شیڈول شدہ ریفریشز کے لیے بہترین کام کرتی ہے۔ یہ ریئل ٹائم ضروریات کے لیے نہیں ہے جہاں صارف تازہ پیج کا انتظار کر رہا ہو۔
اگر صارف کو فوری طور پر ڈیٹا چاہیے، تو انہیں cached مواد دکھائیں اور بیک گراؤنڈ میں انڈیکس کو اپ ڈیٹ کریں۔
اختیاری لرننگ کمیونٹی: https://t.me/GyaanSetuAi