Costruire un agente AI locale per OSM

Ho trascorso 21 giorni a costruire un agente AI locale. Trasforma il linguaggio naturale in JSON per i filtri OSM.

Volevo che girasse interamente su una GPU locale. Nessuna chiamata API. Nessun rischio per la privacy. Nessun limite di frequenza.

Ecco come l'ho costruito e cosa ho imparato.

L'architettura

Ho utilizzato una pipeline RAG per fornire contesto al modello.

• Embeddings: Ho usato bge-small-en-v1.5 per trasformare le descrizioni dei tag OSM in vettori. • Database: Ho memorizzato questi embedding in SQLite. • Retrieval: Quando poni una domanda, il sistema trova i tag OSM e gli esempi di filtro più rilevanti. • Generazione: L'LLM riceve la tua query insieme agli esempi recuperati per creare il JSON.

I fallimenti

Costruire questo progetto non è stato facile. Mi sono scontrato con diversi ostacoli.

• Il bug del token di stop: Le mie prime esecuzioni restituivano risultati vuoti. Il modello aggiungeva una riga vuota prima del JSON. Questo attivava il mio stop token e interrompeva l'output prematuramente. Ho dovuto rimuovere lo stop token per risolvere il problema. • Copia cieca: L'LLM spesso copiava gli esempi esattamente così come erano, invece di adattarli. Ho riscritto i prompt per costringere il modello a sintetizzare nuovi filtri. • Confusione di dominio: Il modello confondeva i tag marittimi con quelli terrestri. Ho aggiunto un passaggio di validazione per filtrare i tag candidati in base alla rilevanza.

Le lezioni imparate

• Evita i token di stop: A meno che tu non ne sia certo, non usarli. Spesso interrompono l'output. • La qualità dei dati è fondamentale: l'embedding di frasi in linguaggio naturale funziona meglio dell'embedding di stringhe JSON grezze. • Il loop è la magia: Ho aggiunto un semplice ciclo. Se un filtro restituisce zero risultati, l'agente amplia la richiesta e riprova. Questo trasforma uno strumento statico in un sistema adattivo.

Il risultato

Il sistema gira su una singola GPU con meno di 8 GB di VRAM. Gestisce la maggior parte delle query semplici e si adatta quando fallisce. Deve ancora fare progressi sulla negazione complessa e sulla sintesi dei tag, ma il nucleo funziona.

Come gestite l'ambiguità dei tag nei vostri flussi di lavoro geospaziali?

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

Community di apprendimento opzionale: https://t.me/GyaanSetuAi