ساخت یک عامل هوش مصنوعی محلی برای OSM

من ۲۱ روز را صرف ساخت یک عامل هوش مصنوعی محلی کردم. این عامل زبان طبیعی را به JSON فیلتر OSM تبدیل می‌کند.

می‌خواستم این سیستم کاملاً روی یک GPU محلی اجرا شود. بدون فراخوانی API. بدون ریسک حریم خصوصی. بدون محدودیت نرخ درخواست (rate limits).

در اینجا نحوه ساخت آن و آنچه آموختم را توضیح می‌دهم.

معماری

من از یک خط لوله (pipeline) RAG برای دادن زمینه (context) به مدل استفاده کردم.

• Embeddings: من از bge-small-en-v1.5 برای تبدیل توضیحات تگ‌های OSM به بردار (vector) استفاده کردم. • Database: من این embeddingها را در SQLite ذخیره کردم. • Retrieval: وقتی سوالی می‌پرسید، سیستم مرتبط‌ترین تگ‌های OSM و نمونه‌های فیلتر را پیدا می‌کند. • Generation: مدل LLM پرسش شما را به همراه نمونه‌های بازیابی‌شده دریافت می‌کند تا JSON را ایجاد کند.

شکست‌ها

ساخت این سیستم هموار نبود. با چندین مانع روبرو شدم.

• باگ Stop Token: اولین اجراهای من نتایج خالی برمی‌گرداندند. مدل یک خط خالی قبل از JSON اضافه می‌کرد. این کار باعث فعال شدن stop token من می‌شد و خروجی را کوتاه می‌کرد. برای رفع این مشکل مجبور شدم stop token را حذف کنم. • کپی‌برداری کورکورانه: مدل LLM اغلب به جای تطبیق دادن نمونه‌ها، آن‌ها را دقیقاً کپی می‌کرد. من پرامپت‌ها را بازنویسی کردم تا مدل را مجبور کنم فیلترهای جدیدی سنتز (ترکیب) کند. • سردرگمی در دامنه: مدل تگ‌های دریایی را با تگ‌های زمینی اشتباه می‌گرفت. من یک مرحله اعتبارسنجی اضافه کردم تا تگ‌های کاندید را بر اساس مرتبط بودن فیلتر کنم.

درس‌ها

• از stop tokenها دوری کنید: مگر اینکه کاملاً مطمئن باشید، از آن‌ها استفاده نکنید. آن‌ها اغلب خروجی شما را خراب می‌کنند. • کیفیت داده حرف اول را می‌زند: تبدیل جملات زبان طبیعی به embedding بهتر از تبدیل رشته‌های خام JSON به embedding عمل می‌کند. • حلقه (loop) جادوی کار است: من یک حلقه ساده اضافه کردم. اگر یک فیلتر نتیجه‌ای برنگرداند، عامل درخواست را گسترده‌تر کرده و دوباره تلاش می‌کند. این کار یک ابزار ایستا را به یک سیستم تطبیق‌پذیر تبدیل می‌کند.

نتیجه

این سیستم روی یک GPU واحد با کمتر از 8 گیگابایت VRAM اجرا می‌شود. اکثر پرسش‌های ساده را مدیریت می‌کند و در صورت شکست، خودش را تطبیق می‌دهد. هنوز در زمینه نفی (negation) پیچیده و سنتز تگ‌ها نیاز به کار دارد، اما هسته اصلی کار می‌کند.

شما چگونه ابهام در تگ‌ها را در گردش‌های کاری (workflows) جغرافیایی خود مدیریت می‌کنید؟

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

انجمن یادگیری اختیاری: https://t.me/GyaanSetuAi