OSM साठी एक Local AI Agent तयार करणे
मी एक local AI agent तयार करण्यासाठी २१ दिवस खर्च केले. हे नैसर्गिक भाषेचे (natural language) रूपांतर OSM filter JSON मध्ये करते.
मला हे पूर्णपणे स्थानिक GPU वर चालवायचे होते. कोणतेही API calls नाहीत. गोपनीयतेचा कोणताही धोका नाही. कोणतीही rate limits नाहीत.
मी ते कसे तयार केले आणि मी काय शिकलो, ते खाली दिले आहे.
आर्किटेक्चर (The Architecture)
मॉडेलला संदर्भ (context) देण्यासाठी मी RAG pipeline चा वापर केला.
• Embeddings: OSM tag वर्णनांचे रूपांतर vectors मध्ये करण्यासाठी मी bge-small-en-v1.5 वापरले.
• Database: मी हे embeddings SQLite मध्ये साठवले.
• Retrieval: जेव्हा तुम्ही प्रश्न विचारता, तेव्हा सिस्टम सर्वात संबंधित OSM tags आणि filter उदाहरणे शोधते.
• Generation: JSON तयार करण्यासाठी LLM ला तुमचा प्रश्न आणि शोधलेली उदाहरणे प्राप्त होतात.
अपयश (The Failures)
हे तयार करणे सोपे नव्हते. मला अनेक अडचणींचा सामना करावा लागला.
• The Stop Token Bug: माझ्या सुरुवातीच्या प्रयत्नांमध्ये रिकामे निकाल मिळत होते. मॉडेल JSON च्या आधी एक रिकामी ओळ जोडत होते. यामुळे माझा stop token सक्रिय होत होता आणि आउटपुट मध्येच थांबत होते. हे सुधारण्यासाठी मला stop token काढून टाकावा लागला. • Blind Copying: LLM अनेकदा उदाहरणांमधील माहिती बदलण्याऐवजी ती जशीच्या तशी कॉपी करत असे. मॉडेलला नवीन filters तयार करण्यास भाग पाडण्यासाठी मी prompts पुन्हा लिहिले. • Domain Confusion: मॉडेलने समुद्री (maritime) tags आणि जमिनीवरील (land) tags मध्ये गल्लत केली. संबंधिततेनुसार candidate tags फिल्टर करण्यासाठी मी एक validation step जोडला.
धडे (The Lessons)
• Stop tokens टाळा: जोपर्यंत तुम्ही खात्रीशीर नसाल, तोपर्यंत त्यांचा वापर करू नका. ते अनेकदा तुमचे आउटपुट खराब करतात. • डेटाची गुणवत्ता महत्त्वाची आहे: Raw JSON strings ऐवजी नैसर्गिक भाषेतील वाक्ये (natural language sentences) embed करणे अधिक प्रभावी ठरते. • Loop हीच जादू आहे: मी एक साधा loop जोडला. जर एखाद्या filter मुळे शून्य निकाल मिळत असतील, तर एजंट विनंतीचा विस्तार करतो आणि पुन्हा प्रयत्न करतो. यामुळे एक स्थिर (static) साधन एका अनुकूल (adaptive) सिस्टममध्ये रूपांतरित होते.
निकाल (The Result)
ही सिस्टम ८ GB पेक्षा कमी VRAM असलेल्या एका सिंगल GPU वर चालते. ती बहुतेक साध्या क्वेरीज हाताळते आणि अपयशी ठरल्यास स्वतःला अनुकूल करते. जटिल negation आणि tag synthesis वर अजून काम करणे बाकी आहे, परंतु मुख्य कार्यक्षमतेने काम करत आहे.
तुमच्या geospatial workflows मध्ये तुम्ही tag 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
