RAG Ingestion के लिए Async Scraping बेहतर है
RAG सिस्टम अक्सर पुराने (stale) डेटा के कारण विफल हो जाते हैं। पेज बदल जाता है लेकिन आपका इंडेक्स (index) वही रहता है। इसके बाद आपका AI उच्च आत्मविश्वास के साथ गलत उत्तर देता है।
कई लोग इसे साधारण synchronous scrapers के साथ ठीक करने की कोशिश करते हैं। आप एक पेज फेच (fetch) करते हैं, डेटा निकालते हैं, और अपने vector store को अपडेट करते हैं। यह दृष्टिकोण प्रोडक्शन (production) में समस्याएँ पैदा करता है।
Synchronous scraping के साथ मुख्य समस्याएँ:
- JavaScript या cookie banners के कारण पेज लोड होने में लंबा समय लगता है।
- आपका API स्क्रैपर के पूरा होने का इंतज़ार करता है, जिससे आपके यूज़र्स की गति धीमी हो जाती है।
- कार्यों को समानांतर (parallel) रूप से चलाने पर मेमोरी या ओपन सॉकेट्स (open sockets) खत्म हो जाते हैं।
- टाइमआउट (timeouts) या रेट लिमिट (rate limits) जैसी त्रुटियों को प्रबंधित करना कठिन होता है।
Async scraping में submit, poll, और retrieve फ्लो का उपयोग किया जाता है। आप एक टास्क सबमिट करते हैं, एक job ID प्राप्त करते हैं, और बाद में परिणाम की जाँच करते हैं। यह आपके एप्लिकेशन को तेज़ रखता है।
एक विश्वसनीय ingestion pipeline कैसे बनाएँ:
- Scraping को request handling से अलग करें। आपके ऐप को ब्राउज़र लोड होने का इंतज़ार नहीं करना चाहिए।
- Job states को डेटाबेस में स्टोर करें। URL, status और त्रुटियों (errors) को ट्रैक करें।
- Content hashes का उपयोग करें। यदि पेज की सामग्री नहीं बदली है, तो उसे फिर से embed न करें। इससे पैसा और समय दोनों बचते हैं।
- Dead-letter queues का उपयोग करें। यदि कोई job तीन बार विफल हो जाता है, तो उसे फिर से प्रयास करना बंद कर दें। उसे एक दृश्य सूची (visible list) में ले जाएँ ताकि आप उसे ठीक कर सकें।
- अपने डेटा को वैलिडेट (validate) करें। अपने vector store तक पहुँचने से पहले निकाले गए डेटा की जाँच करने के लिए एक schema का उपयोग करें। एक खाली स्ट्रिंग (empty string) एक विफल job से भी बदतर है।
Async scraping बैकग्राउंड अपडेट और शेड्यूल्ड रिफ्रेश के लिए सबसे अच्छा काम करती है। यह रीयल-टाइम (real-time) ज़रूरतों के लिए नहीं है जहाँ यूज़र एक ताज़ा पेज का इंतज़ार करता है।
यदि किसी यूज़र को तुरंत डेटा की आवश्यकता है, तो उन्हें cached content दिखाएँ और बैकग्राउंड में इंडेक्स को अपडेट करें।
Optional learning community: https://t.me/GyaanSetuAi