Xây dựng một AI Agent cục bộ cho OSM

Tôi đã dành 21 ngày để xây dựng một AI agent cục bộ. Nó chuyển đổi ngôn ngữ tự nhiên thành JSON bộ lọc OSM.

Tôi muốn nó chạy hoàn toàn trên GPU cục bộ. Không gọi API. Không rủi ro quyền riêng tư. Không giới hạn tốc độ (rate limits).

Dưới đây là cách tôi đã xây dựng nó và những gì tôi đã học được.

Kiến trúc

Tôi đã sử dụng một pipeline RAG để cung cấp ngữ cảnh cho mô hình.

• Embeddings: Tôi đã sử dụng bge-small-en-v1.5 để chuyển đổi các mô tả tag OSM thành vector. • Database: Tôi lưu trữ các embedding này trong SQLite. • Retrieval: Khi bạn đặt câu hỏi, hệ thống sẽ tìm các tag OSM và các ví dụ bộ lọc có liên quan nhất. • Generation: LLM nhận truy vấn của bạn cùng với các ví dụ đã truy xuất được để tạo ra JSON.

Những thất bại

Việc xây dựng này không hề suôn sẻ. Tôi đã vấp phải vài trở ngại.

• Lỗi Stop Token: Những lần chạy đầu tiên của tôi trả về kết quả trống. Mô hình đã thêm một dòng trống trước JSON. Điều này đã kích hoạt stop token của tôi và làm ngắt quãng đầu ra. Tôi đã phải loại bỏ stop token để khắc phục. • Sao chép mù quáng: LLM thường sao chép chính xác các ví dụ thay vì điều chỉnh chúng. Tôi đã viết lại các prompt để buộc mô hình phải tổng hợp các bộ lọc mới. • Nhầm lẫn lĩnh vực: Mô hình đã nhầm lẫn giữa các tag hàng hải với các tag trên đất liền. Tôi đã thêm một bước xác thực để lọc các tag ứng viên theo mức độ liên quan.

Những bài học

• Tránh sử dụng stop tokens: Trừ khi bạn chắc chắn, đừng sử dụng chúng. Chúng thường làm hỏng đầu ra của bạn. • Chất lượng dữ liệu là quan trọng nhất: Việc embedding các câu ngôn ngữ tự nhiên hoạt động tốt hơn là embedding các chuỗi JSON thô. • Vòng lặp là yếu tố kỳ diệu: Tôi đã thêm một vòng lặp đơn giản. Nếu một bộ lọc trả về kết quả bằng không, agent sẽ mở rộng yêu cầu và thử lại. Điều này biến một công cụ tĩnh thành một hệ thống có khả năng thích ứng.

Kết quả

Hệ thống chạy trên một GPU duy nhất với ít hơn 8 GB VRAM. Nó xử lý hầu hết các truy vấn đơn giản và tự điều chỉnh khi gặp lỗi. Nó vẫn cần cải thiện về các phép phủ định phức tạp và tổng hợp tag, nhưng phần cốt lõi đã hoạt động.

Bạn xử lý sự mơ hồ của các tag trong quy trình làm việc không gian địa lý (geospatial) của mình như thế nào?

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

Cộng đồng học tập tùy chọn: https://t.me/GyaanSetuAi