𝗔𝘀𝘆𝗻𝗰 𝗦𝗰𝗿𝗮𝗽𝗶𝗻𝗴 𝗜𝘀 𝗕𝗲𝘁𝘁𝗲𝗿 𝗳𝗼𝗿 𝗥𝗔𝗚 𝗜𝗻𝗴𝗲𝘀𝘁𝗶𝗼𝗻
ಹಳೆಯ ಅಥವಾ ಅಪ್ಡೇಟ್ ಆಗದ ಡೇಟಾದಿಂದಾಗಿ (stale data) RAG ಸಿಸ್ಟಮ್ಗಳು ಹೆಚ್ಚಾಗಿ ವಿಫಲವಾಗುತ್ತವೆ. ಪುಟವು ಬದಲಾಗಬಹುದು ಆದರೆ ನಿಮ್ಮ ಇಂಡೆಕ್ಸ್ (index) ಹಾಗೆಯೇ ಇರುತ್ತದೆ. ಆಗ ನಿಮ್ಮ AI ಹೆಚ್ಚಿನ ಆತ್ಮವಿಶ್ವಾಸದೊಂದಿಗೆ ತಪ್ಪು ಉತ್ತರಗಳನ್ನು ನೀಡುತ್ತದೆ.
ಅನೇಕರು ಇದನ್ನು ಸರಳವಾದ synchronous scrapers ಮೂಲಕ ಸರಿಪಡಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಾರೆ. ನೀವು ಒಂದು ಪುಟವನ್ನು ಪಡೆದುಕೊಳ್ಳುತ್ತೀರಿ (fetch), ಡೇಟಾವನ್ನು ಹೊರತೆಗೆಯುತ್ತೀರಿ (extract) ಮತ್ತು ನಿಮ್ಮ vector store ಅನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡುತ್ತೀರಿ. ಈ ವಿಧಾನವು ಪ್ರೊಡಕ್ಷನ್ (production) ಪರಿಸ್ಥಿತಿಯಲ್ಲಿ ಸಮಸ್ಯೆಗಳನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ.
Synchronous scraping ನ ಮುಖ್ಯ ಸಮಸ್ಯೆಗಳು:
- JavaScript ಅಥವಾ cookie banners ಇರುವುದರಿಂದ ಪುಟ ಲೋಡ್ ಆಗಲು ಹೆಚ್ಚಿನ ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ.
- ನಿಮ್ಮ API scraper ಮುಗಿಯುವವರೆಗೆ ಕಾಯುತ್ತದೆ, ಇದು ಬಳಕೆದಾರರ ವೇಗವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.
- ಕಾರ್ಯಗಳನ್ನು ಸಮಾಂತರವಾಗಿ (parallel) ನಡೆಸುವಾಗ ಮೆಮೊರಿ ಅಥವಾ ಓಪನ್ ಸಾಕೆಟ್ಗಳು (open sockets) ಖಾಲಿಯಾಗಬಹುದು.
- Timeouts ಅಥವಾ rate limits ನಂತಹ ದೋಷಗಳನ್ನು ನಿರ್ವಹಿಸುವುದು ಕಷ್ಟಕರ.
Async scraping ಎಂಬುದು submit, poll, ಮತ್ತು retrieve ಹರಿವನ್ನು (flow) ಬಳಸುತ್ತದೆ. ನೀವು ಒಂದು ಕಾರ್ಯವನ್ನು ಸಲ್ಲಿಸುತ್ತೀರಿ (submit), ಒಂದು job ID ಪಡೆಯುತ್ತೀರಿ ಮತ್ತು ನಂತರ ಫಲಿತಾಂಶವನ್ನು ಪರಿಶೀಲಿಸುತ್ತೀರಿ. ಇದು ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ವೇಗವಾಗಿರಿಸುತ್ತದೆ.
ವಿಶ್ವಾಸಾರ್ಹವಾದ ingestion pipeline ಅನ್ನು ನಿರ್ಮಿಸುವುದು ಹೇಗೆ:
- Scraping ಅನ್ನು request handling ನಿಂದ ಪ್ರತ್ಯೇಕಿಸಿ. ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಬ್ರೌಸರ್ ಲೋಡ್ ಆಗುವವರೆಗೆ ಕಾಯಬಾರದು.
- Job ಸ್ಥಿತಿಗಳನ್ನು (states) ಡೇಟಾಬೇಸ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಿ. URL, status ಮತ್ತು ದೋಷಗಳನ್ನು (errors) ಟ್ರ್ಯಾಕ್ ಮಾಡಿ.
- Content hashes ಬಳಸಿ. ಪುಟದ ವಿಷಯವು ಬದಲಾಗಿಲ್ಲದಿದ್ದರೆ, ಅದನ್ನು ಮತ್ತೆ re-embed ಮಾಡಬೇಡಿ. ಇದು ಹಣ ಮತ್ತು ಸಮಯವನ್ನು ಉಳಿಸುತ್ತದೆ.
- Dead-letter queues ಬಳಸಿ. ಒಂದು ಕೆಲಸವು ಮೂರು ಬಾರಿ ವಿಫಲವಾದರೆ, ಮತ್ತೆ ಪ್ರಯತ್ನಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಿ. ಅದನ್ನು ನೀವು ಸರಿಪಡಿಸಲು ಸಾಧ್ಯವಾಗುವಂತೆ ಒಂದು ಗೋಚರಿಸುವ ಪಟ್ಟಿಗೆ (visible list) ವರ್ಗಾಯಿಸಿ.
- ನಿಮ್ಮ ಡೇಟಾವನ್ನು ವ್ಯಾಲಿಡೇಟ್ ಮಾಡಿ. ನಿಮ್ಮ vector store ಗೆ ತಲುಪುವ ಮೊದಲು ಹೊರತೆಗೆಯಲಾದ ಡೇಟಾವನ್ನು ಪರಿಶೀಲಿಸಲು schema ಬಳಸಿ. ಒಂದು ಕೆಲಸ ವಿಫಲವಾಗುವುದಕ್ಕಿಂತ ಖಾಲಿ ಸ್ಟ್ರಿಂಗ್ (empty string) ಇರುವುದು ಹೆಚ್ಚು ಅಪಾಯಕಾರಿ.
Async scraping ಹಿನ್ನೆಲೆ ಅಪ್ಡೇಟ್ಗಳು (background updates) ಮತ್ತು ನಿಗದಿತ ರಿಫ್ರೆಶ್ಗಳಿಗೆ (scheduled refreshes) ಅತ್ಯುತ್ತಮವಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ. ಬಳಕೆದಾರರು ಹೊಸ ಪುಟಕ್ಕಾಗಿ ಕಾಯುವ ರಿಯಲ್-ಟೈಮ್ (real-time) ಅಗತ್ಯಗಳಿಗಾಗಿ ಇದು ಅಲ್ಲ.
ಬಳಕೆದಾರರಿಗೆ ತಕ್ಷಣವೇ ಡೇಟಾ ಬೇಕಾದಲ್ಲಿ, ಅವರಿಗೆ cached content ಅನ್ನು ತೋರಿಸಿ ಮತ್ತು ಹಿನ್ನೆಲೆಯಲ್ಲಿ (background) ಇಂಡೆಕ್ಸ್ ಅನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಿ.
Optional learning community: https://t.me/GyaanSetuAi