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