Semplificare le Query di Dati nelle Piattaforme Low-Code
Le query in linguaggio naturale rendono più facile il recupero dei dati per i developer low-code.
― 7 leggere min
Indice
Le piattaforme Low-code sono strumenti che permettono agli utenti di creare applicazioni senza dover scrivere tanto codice. L'idea è di semplificare il processo di sviluppo, rendendolo accessibile a chi non ha grosse competenze di programmazione. Una delle sfide principali che i programmatori affrontano su queste piattaforme è come recuperare i dati da un database. Spesso serve scrivere query SQL, che possono essere complicate per chi non ha familiarità con SQL.
Per aiutare con questo problema, abbiamo sviluppato un sistema che permette ai programmatori di digitare le query in linguaggio naturale, che il nostro sistema poi converte in query SQL. Questo approccio è particolarmente utile in ambienti low-code, dove gli utenti potrebbero non avere un background nella programmazione tradizionale o nella gestione dei database.
Recupero Dati
La Sfida delNelle piattaforme low-code come OutSystems, i programmatori usano un'interfaccia visiva per interagire con i dati. Invece di scrivere manualmente le query SQL, possono creare rappresentazioni visive chiamate aggregati. Questi aggregati li aiutano a capire come recuperare e manipolare i dati senza aver bisogno di una conoscenza approfondita di SQL.
Tuttavia, anche con gli aggregati, molti programmatori fanno ancora fatica, soprattutto quando devono eseguire compiti complessi di recupero dati. Questo può far perdere un sacco di tempo e rendere il processo di sviluppo meno efficiente. Quindi, semplificare il recupero dei dati è fondamentale per migliorare l'esperienza complessiva dell'utente.
Il Nostro Approccio
Proponiamo un sistema dove i programmatori possono inserire le loro query in linguaggio naturale. Il sistema elabora queste query e produce codice SQL che recupera i dati richiesti. Questo processo rende l'interazione con i dati molto più semplice per gli utenti, permettendo loro di concentrarsi di più sulla creazione delle loro applicazioni invece di preoccuparsi di come scrivere SQL.
Raccolta Dati
Per creare un sistema che traduce efficacemente il linguaggio naturale in SQL, avevamo prima bisogno di un grande set di dati di esempi. Abbiamo raccolto dati da varie fonti:
Set di Dati Pubblici: Abbiamo usato esempi da set di dati disponibili pubblicamente come Spider, che contiene una vasta gamma di query SQL e le loro corrispondenti domande. Tuttavia, abbiamo notato che questi set di dati pubblici avevano delle limitazioni. Spesso non rappresentavano i bisogni e le caratteristiche specifiche dei dati dei nostri utenti.
Dati Crowdsourced: Per migliorare il nostro set di dati, ci siamo rivolti al crowdsourcing. Abbiamo impiegato lavoratori con background tecnici per aiutare a etichettare le query SQL con le descrizioni in linguaggio naturale appropriate. Questo ci ha permesso di raccogliere molti esempi che corrispondevano a come gli utenti formulano tipicamente le loro query.
Dati di Produzione: Una volta che il nostro sistema è stato operativo, abbiamo iniziato ad analizzare come gli utenti interagivano con esso. Abbiamo raccolto dati sul loro comportamento, come le query SQL che modificavano e le modifiche che facevano. Questo ci ha permesso di perfezionare ulteriormente il nostro sistema basato sulle esperienze reali degli utenti.
Addestramento del Modello
Con il nostro set di dati pronto, il passo successivo è stato addestrare un modello di machine learning per convertire gli input in linguaggio naturale in SQL. Ci siamo concentrati nel garantire che il nostro modello potesse gestire le query comuni che gli utenti potrebbero richiedere.
Abbiamo creato un modello in due parti:
Generatore: Questa parte del modello prende l'input in linguaggio naturale e genera possibili query SQL.
Ranker: Questo componente valuta le query generate e seleziona quella che meglio corrisponde all'input in linguaggio naturale. Utilizzando questo approccio in due fasi, abbiamo cercato di migliorare la qualità dell'output SQL.
Man mano che il nostro set di dati si espandeva, abbiamo riaddestrato il modello per assicurarci che potesse adattarsi a nuovi tipi di query che gli utenti potrebbero inventare. Questo processo di riaddestramento continuo è fondamentale per mantenere il modello efficace man mano che le esigenze degli utenti evolvono.
Esperienza Utente
Per assicurarci che il nostro sistema sia facile da usare, abbiamo sviluppato un'interfaccia dove gli utenti possono digitare le loro query in linguaggio naturale. Dopo aver inviato le loro richieste, gli utenti ricevono una chiara rappresentazione del SQL generato. Questo feedback visivo aiuta gli utenti a sentirsi più sicuri su come vengono recuperati i dati.
Sperimentazione e Test
Prima di lanciare completamente la nostra funzione, abbiamo condotto test per confrontare il nostro nuovo modello con le soluzioni esistenti. Abbiamo esaminato vari parametri di prestazione, come:
- Tasso di Adozione: Quanti utenti hanno iniziato a utilizzare la nuova funzione.
- Tasso di Coinvolgimento: La frequenza con cui gli utenti interagivano con la funzione.
- Tasso di Fallimento: La percentuale di volte in cui il sistema ha prodotto una query SQL non valida.
I nostri risultati hanno mostrato miglioramenti significativi in questi parametri. Ad esempio, il tasso di adozione è aumentato di oltre il 200%, indicando che molti più programmatori hanno trovato il sistema utile per le loro esigenze. Anche i tassi di coinvolgimento sono migliorati, mentre i tassi di fallimento sono diminuiti notevolmente man mano che il modello diventava più accurato nella generazione di SQL.
Feedback Loop
Raccogliere il feedback degli utenti è una parte essenziale del nostro sistema. Una volta che la funzione è stata implementata, abbiamo osservato come gli utenti interagivano con essa. Abbiamo tenuto traccia se gli utenti accettavano le suggerimenti di SQL forniti o apportavano modifiche. Questi dati ci hanno aiutato a capire meglio le prestazioni del nostro modello.
Combinando il feedback degli utenti con i dati raccolti, possiamo affinare continuamente il nostro processo di generazione SQL. Questo feedback loop assicura che il nostro sistema non solo soddisfi le attuali esigenze degli utenti, ma possa anche adattarsi a nuove query e requisiti nel tempo.
Feedback Implicito vs. Esplicito
Abbiamo classificato il feedback degli utenti in due tipi:
Feedback Implicito: Include dati raccolti automaticamente, come quanto spesso gli utenti accettano o modificano le query SQL suggerite. Questo feedback è prezioso perché ci fornisce intuizioni in tempo reale sul comportamento degli utenti.
Feedback Esplicito: Comporta input diretto degli utenti, come valutazioni o commenti sulla funzione. Anche se più limitato in volume, il feedback esplicito può fornire intuizioni più profonde sulla soddisfazione degli utenti e sulle aree che necessitano di miglioramenti.
Analizzando entrambi i tipi di feedback, possiamo capire meglio come migliorare le prestazioni del nostro modello e l’esperienza utente.
Miglioramento Continuo
Un vantaggio significativo del nostro approccio è la capacità di apprendere e adattarsi continuamente. Man mano che raccogliamo più dati e interazioni degli utenti, perfezioniamo il nostro modello tramite un addestramento continuo. Questo processo significa che il nostro sistema non solo migliora nel tempo, ma rimane anche rilevante man mano che cambiano le esigenze degli utenti.
Conclusione
L'integrazione dell'elaborazione del linguaggio naturale in piattaforme low-code come OutSystems segna un passo significativo per rendere lo sviluppo di applicazioni più accessibile a utenti senza un forte background in programmazione. Consentendo ai programmatori di scrivere query sui dati con le loro parole, rimuoviamo una barriera che spesso rallenta lo sviluppo.
Il nostro lavoro continuo sottolinea l'importanza della raccolta dei dati, del feedback degli utenti e dell'addestramento del modello nel creare un sistema robusto che soddisfi efficacemente le esigenze degli utenti. I miglioramenti che abbiamo osservato in parametri chiave riflettono il successo di questo approccio, facilitando agli sviluppatori la concentrazione sulla creazione di applicazioni piuttosto che combattere con le query SQL.
Continuando a perfezionare il nostro sistema e ad espandere le nostre capacità, rimaniamo impegnati a migliorare l'esperienza degli sviluppatori e garantirci che gli strumenti che forniamo siano sia potenti che facili da usare. Attraverso l'apprendimento attivo e il design centrato sugli utenti, miriamo a supportare una nuova generazione di programmatori desiderosi di creare con le piattaforme low-code.
Titolo: Natural language to SQL in low-code platforms
Estratto: One of the developers' biggest challenges in low-code platforms is retrieving data from a database using SQL queries. Here, we propose a pipeline allowing developers to write natural language (NL) to retrieve data. In this study, we collect, label, and validate data covering the SQL queries most often performed by OutSystems users. We use that data to train a NL model that generates SQL. Alongside this, we describe the entire pipeline, which comprises a feedback loop that allows us to quickly collect production data and use it to retrain our SQL generation model. Using crowd-sourcing, we collect 26k NL and SQL pairs and obtain an additional 1k pairs from production data. Finally, we develop a UI that allows developers to input a NL query in a prompt and receive a user-friendly representation of the resulting SQL query. We use A/B testing to compare four different models in production and observe a 240% improvement in terms of adoption of the feature, 220% in terms of engagement rate, and a 90% decrease in failure rate when compared against the first model that we put into production, showcasing the effectiveness of our pipeline in continuously improving our feature.
Autori: Sofia Aparicio, Samuel Arcadinho, João Nadkarni, David Aparício, João Lages, Mariana Lourenço, Bartłomiej Matejczyk, Filipe Assunção
Ultimo aggiornamento: 2023-08-29 00:00:00
Lingua: English
URL di origine: https://arxiv.org/abs/2308.15239
Fonte PDF: https://arxiv.org/pdf/2308.15239
Licenza: https://creativecommons.org/licenses/by/4.0/
Modifiche: Questa sintesi è stata creata con l'assistenza di AI e potrebbe presentare delle imprecisioni. Per informazioni accurate, consultare i documenti originali collegati qui.
Si ringrazia arxiv per l'utilizzo della sua interoperabilità ad accesso aperto.