lunedì 23 giugno 2025

#ImpolyzerDataStudio© #AI #Prompt Engineering. #semantic_mapping #text to SQL

#ImpolyzerDataStudio© #AI #Prompt Engineering. #semantic_mapping #Text to SQL

POSTED BY GIULIANO PAGNINI, 23 GIU 2025

Come Creare una Mappa Semantica per Prompt SQL Efficaci

Nell'ambito dell'elaborazione del linguaggio naturale (NLP) e dell'interazione con modelli di intelligenza artificiale, una mappa semantica è uno strumento fondamentale per guidare il modello nella corretta interpretazione delle richieste.

Prompt di Partenza

La domanda da analizzare è:
"Per ogni utente crea un resoconto del canone dovuto" oppure

"Per ogni contribuente crea un resoconto del canone dovuto"

Obiettivo

Vogliamo che il modello comprenda correttamente i termini utilizzati nel prompt e li associ alle tabelle e ai campi corretti in un database.

Mappatura Semantica

In ImpolyzerDataStudio per il DB Origine e Destinazione è stato aggiunto il nodo AI che permette di impostare le mappature semantiche e definire vincoli personalizzati aggiuntivi



Ecco la mappatura semantica proposta:

json

{
    "semantic_mapping": {
        "canone": "REGISTRO",
        "contribuente": "UTENTI",
        "pagamenti": "PAGAM",
        "pagamento": "PAGAM",
        "totale": "IMPORTO",
        "utente": "UTENTI",
        "versamenti": "PAGAM"
    }
}

Spiegazione della Mappatura

  • "canone" → "REGISTRO": Indica che il termine "canone" si riferisce alla tabella REGISTRO, dove sono registrate le informazioni sui canoni dovuti.

  • "utente" / "contribuente" → "UTENTI": Associa i riferimenti agli utenti alla tabella UTENTI.

  • "pagamento", "pagamenti", "versamenti" → "PAGAM": Tutti i termini relativi ai pagamenti sono collegati alla tabella PAGAM.

  • "totale" → "IMPORTO": Specifica che il campo IMPORTO contiene il valore totale del canone.

Come Utilizzare la Mappa Semantica



  1. Pre-elaborazione del Prompt:

    • il prompt viene analizzato da un modello interno scritto in c++ che tokenizza la richiesta la confronta con la mappa semantica e recupera i nomi nomi dei campi/tabelle corretti.

    • Esempio:

      • Prompt originale"Per ogni utente crea un resoconto del canone dovuto"

      • Prompt mappato"Per ogni record in UTENTI, genera un report con i dati da REGISTRO e PAGAM, mostrando l'IMPORTO dovuto"

    • viene poi generato il json di richiesta da inviare al modello AI configurato in ImpolyzerDataStudio.

  2. Query risposta dal modello AI:

    • La mappa semantica aiuta a generare una query SQL precisa:

      sql

      SELECT
          U.IDUTENTE,
          U.RAGIONE_SOCIALE,
          SUM(R.IMPORTO) AS CANONE_DOVUTO
      FROM
          UTENTI U
      JOIN
          REGISTRO2025 R ON U.IDUTENTE = R.IDUTENTE
      GROUP BY
          U.IDUTENTE,
          U.RAGIONE_SOCIALE;
  3. Risposta del Modello:

    • Grazie alla mappatura, il modello restituirà un output strutturato e coerente con il database.



Vantaggi di una Mappa Semantica

✔ Maggiore precisione nelle risposte del modello.
✔ Riduzione degli errori nell'interpretazione dei termini.
✔ Miglioramento dell'efficienza nelle query al database.

Creare una mappa semantica ben definita è essenziale per ottimizzare l'interazione con modelli di AI e database. Seguendo questa struttura, potrai assicurarti che il modello comprenda correttamente le richieste e generi risultati accurati.

Il JSON generato (funziona anche senza API)

{ "tags": [ "SQL", "FIREDAC", "FIREBIRD 3.0+" ], "question": "Per ogni utente crea un resoconto del canone dovuto", "constraints": [ "Usa solo SQL compatibile con FIREBIRD 3.0+", "Non usare alias o funzioni non supportate da FIREBIRD 3.0+", "Utilizza solo i nomi dei campi effettivamente presenti nelle tabelle indicate", "ignora il campo ENTE in tutte le tabelle" ], "tables": { "REGISTRO2025": { "fields": [ "IDMASTER", "ID", "IDUTENTE", "TIPO", .. "DATAINIZIO", "DATAFINE", "IMPORTO", "TARGA", .. "IMP_PREC", "IMPBASE_PREC", .. "CATEGORIA", "IMPONIBILE", "MAGGIORAZIONE" ], "keyfields": [ "IDMASTER", "ID" ] }, "UTENTI": { "fields": [ "IDUTENTE", "RAGIONE_SOCIALE", "RAGIONE_SOCIALE1", "IDUBICAZIONE", "INDIRIZZO", .. "P_IVA", "COD_F", .. "NAZIONE", "CODMODIFICA" ], "keyfields": [ "IDUTENTE" ] } }, "semantic_mapping": { "canone": "REGISTRO", "contribuente": "UTENTI", "pagamenti": "PAGAM", "pagamento": "PAGAM", "registro": "REGISTRO", "totale": "IMPORTO", "utente": "UTENTI", "versamenti": "PAGAM" } }

Conclusioni

Nel mondo del Text-to-SQL, la capacità di convertire una richiesta in linguaggio naturale in una query SQL precisa è fondamentale. ImpolyzerDataStudio offre strumenti avanzati per migliorare questa conversione attraverso:
✔ Mappe semantiche – Associano termini naturali a tabelle e campi del database.
✔ Vincoli personalizzati – Guidano il modello a generare SQL compatibile con il DBMS target.

Con ImpolyzerDataStudio, combinare mappe semantiche e vincoli personalizzati è la chiave per un Text-to-SQL efficace

Nessun commento:

Posta un commento