Building a Local AI Agent for OSM

मैंने एक लोकल AI एजेंट बनाने में 21 दिन बिताए। यह नेचुरल लैंग्वेज को OSM फ़िल्टर JSON में बदल देता है।

मैं चाहता था कि यह पूरी तरह से एक लोकल GPU पर चले। कोई API कॉल नहीं। कोई प्राइवेसी रिस्क नहीं। कोई रेट लिमिट नहीं।

यहाँ बताया गया है कि मैंने इसे कैसे बनाया और मैंने क्या सीखा।

The Architecture

मैंने मॉडल को कॉन्टेक्स्ट देने के लिए एक RAG पाइपलाइन का उपयोग किया।

• Embeddings: मैंने OSM टैग विवरणों को वेक्टर्स में बदलने के लिए bge-small-en-v1.5 का उपयोग किया। • Database: मैंने इन एम्बेडिंग्स को SQLite में स्टोर किया। • Retrieval: जब आप कोई प्रश्न पूछते हैं, तो सिस्टम सबसे प्रासंगिक OSM टैग और फ़िल्टर उदाहरण ढूँढता है। • Generation: LLM को JSON बनाने के लिए आपकी क्वेरी और प्राप्त किए गए उदाहरण मिलते हैं।

The Failures

इसे बनाना आसान नहीं था। मुझे कई बाधाओं का सामना करना पड़ा।

• The Stop Token Bug: मेरे शुरुआती रन खाली परिणाम दे रहे थे। मॉडल JSON से पहले एक खाली लाइन जोड़ रहा था। इससे मेरा stop token ट्रिगर हो जाता था और आउटपुट बीच में ही कट जाता था। इसे ठीक करने के लिए मुझे stop token को हटाना पड़ा। • Blind Copying: LLM अक्सर उदाहरणों को अनुकूलित करने के बजाय उन्हें हुबहू कॉपी कर रहा था। मैंने मॉडल को नए फ़िल्टर बनाने (synthesize) के लिए मजबूर करने हेतु प्रॉम्प्ट्स को फिर से लिखा। • Domain Confusion: मॉडल समुद्री (maritime) टैग्स को ज़मीनी (land) टैग्स के साथ भ्रमित कर रहा था। मैंने प्रासंगिकता के आधार पर संभावित टैग्स को फ़िल्टर करने के लिए एक वैलिडेशन स्टेप जोड़ा।

The Lessons

• Stop tokens से बचें: जब तक आप पूरी तरह आश्वस्त न हों, उनका उपयोग न करें। वे अक्सर आपके आउटपुट को खराब कर देते हैं। • डेटा की गुणवत्ता सर्वोपरि है: रॉ JSON स्ट्रिंग्स को एम्बेड करने की तुलना में नेचुरल लैंग्वेज वाक्यों को एम्बेड करना बेहतर काम करता है। • लूप ही जादू है: मैंने एक साधारण लूप जोड़ा। यदि कोई फ़िल्टर शून्य परिणाम देता है, तो एजेंट अनुरोध को विस्तृत करता है और फिर से प्रयास करता है। यह एक स्टैटिक टूल को एक एडेप्टिव सिस्टम में बदल देता है।

The Result

यह सिस्टम 8 GB से कम VRAM वाले सिंगल GPU पर चलता है। यह अधिकांश सरल क्वेरीज़ को संभाल लेता है और विफल होने पर खुद को ढाल लेता है। जटिल नेगेशन (negation) और टैग सिंथेसिस पर अभी भी काम करने की ज़रूरत है, लेकिन इसका कोर काम कर रहा है।

आप अपने जियोस्पेशियल वर्कफ़्लो में टैग की अस्पष्टता (ambiguity) को कैसे संभालते हैं?

Source: https://dev.to/gisfromscratch/building-a-local-ai-agent-for-osm-21-days-of-iteration-2fc4

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