Simplificando Consultas de Dados em Plataformas Low-Code
Consultas em linguagem natural facilitam a busca de dados para desenvolvedores de low-code.
― 7 min ler
Índice
Plataformas Low-code são ferramentas que permitem que usuários construam aplicações sem precisar escrever muito código. Elas buscam simplificar o processo de desenvolvimento, tornando-o acessível para quem não tem uma habilidade forte em programação. Um grande desafio que os desenvolvedores enfrentam nessas plataformas é como buscar dados de um banco de dados. Isso geralmente requer escrever consultas SQL, o que pode ser complicado para quem não tá familiarizado com SQL.
Pra ajudar com isso, a gente desenvolveu um sistema que permite que os desenvolvedores escrevam consultas em Linguagem Natural, que nosso sistema transforma em consultas SQL. Essa abordagem é especialmente útil em ambientes low-code, onde os usuários podem não ter um histórico em programação tradicional ou gerenciamento de banco de dados.
Recuperação de Dados
O Desafio daEm plataformas low-code como OutSystems, os desenvolvedores usam uma interface visual pra interagir com os dados. Em vez de escrever consultas SQL manualmente, eles podem criar representações visuais conhecidas como agregados. Esses agregados ajudam a entender como buscar e manipular dados sem precisar de um conhecimento profundo em SQL.
Mas, mesmo com os agregados, muitos desenvolvedores ainda enfrentam dificuldades, principalmente quando precisam fazer tarefas complexas de recuperação de dados. Isso pode desperdiçar muito tempo e tornar o processo de desenvolvimento menos eficiente. Então, simplificar a recuperação de dados é crucial pra melhorar a experiência geral do usuário.
Nossa Abordagem
A gente propõe um sistema onde os desenvolvedores podem inserir suas consultas em linguagem natural. O sistema processa essas consultas e produz código SQL que busca os dados solicitados. Esse processo torna a interação com os dados bem mais simples, permitindo que os usuários foquem mais em construir suas aplicações do que se preocupar em como escrever SQL.
Coleta de Dados
Pra criar um sistema que traduza efetivamente linguagem natural em SQL, primeiro precisávamos de um grande conjunto de exemplos. Coletamos dados de várias fontes:
Conjuntos de Dados Públicos: Usamos exemplos de conjuntos de dados abertos como o Spider, que contém uma variedade de consultas SQL e suas perguntas correspondentes. Mas percebemos que esses conjuntos públicos tinham limitações. Muitas vezes, não representavam as necessidades e características específicas dos dados dos nossos usuários.
Dados Coletados pela Comunidade: Pra melhorar nosso conjunto de dados, recorremos ao crowdsourcing. Contratamos pessoas com formação técnica pra ajudar a rotular consultas SQL com as descrições em linguagem natural corretas. Isso nos permitiu reunir muitos exemplos que combinavam com como nossos usuários costumam formular suas consultas.
Dados de Produção: Uma vez que nosso sistema estava funcionando, começamos a analisar como os usuários interagiam com ele. Coletamos dados sobre o comportamento deles, como as consultas SQL que modificaram e as alterações que fizeram. Isso nos ajudou a refinar ainda mais nosso sistema com base nas experiências reais dos usuários.
Treinamento do Modelo
Com nosso conjunto de dados pronto, o próximo passo foi treinar um modelo de machine learning pra converter entradas de linguagem natural em SQL. Focamos em garantir que nosso modelo pudesse lidar com consultas comuns que os usuários poderiam fazer.
Criamos um modelo em duas partes:
Gerador: Essa parte do modelo recebe a entrada em linguagem natural e gera possíveis consultas SQL.
Classificador: Esse componente avalia as consultas geradas e seleciona a que melhor combina com a entrada em linguagem natural. Usando essa abordagem em duas etapas, buscamos melhorar a qualidade da saída em SQL.
À medida que nosso conjunto de dados crescia, retrainamos o modelo pra garantir que ele pudesse se adaptar a novos tipos de consultas que os usuários poderiam inventar. Esse processo de retrain contínuo é vital pra manter o modelo eficaz à medida que as necessidades dos usuários evoluem.
Experiência do Usuário
Pra garantir que nosso sistema seja amigável, desenvolvemos uma interface onde os usuários podem digitar suas consultas em linguagem natural. Depois de enviar seus pedidos, eles recebem uma representação clara do SQL gerado. Esse feedback visual ajuda os usuários a se sentirem mais confiantes sobre como os dados estão sendo recuperados.
Experimentação e Testes
Antes de lançar completamente nossa funcionalidade, fizemos testes pra comparar nosso novo modelo com soluções existentes. Olhamos pra várias métricas de performance, como:
- Taxa de Adoção: Quantos usuários começaram a usar a nova funcionalidade.
- Taxa de Engajamento: Com que frequência os usuários interagiam com a funcionalidade.
- Taxa de Falhas: A porcentagem de vezes que o sistema produziu uma consulta SQL inválida.
Nossas descobertas mostraram melhorias significativas nessas métricas. Por exemplo, a taxa de adoção subiu mais de 200%, indicando que muitos desenvolvedores acharam o sistema útil pra suas necessidades. As taxas de engajamento também melhoraram, enquanto as taxas de falhas caíram bastante à medida que o modelo se tornava mais preciso na geração de SQL.
Ciclo de Feedback
Coletar feedback dos usuários é uma parte essencial do nosso sistema. Assim que a funcionalidade foi implantada, observamos como os usuários interagiam com ela. Acompanhamos se eles aceitavam as sugestões de SQL que fornecemos ou faziam alterações. Esses dados nos ajudaram a entender melhor a performance do nosso modelo.
Combinando o feedback dos usuários com os dados que coletamos, conseguimos refinar continuamente nosso processo de geração de SQL. Esse ciclo de feedback garante que nosso sistema não só atenda às necessidades atuais dos usuários, mas também possa se adaptar a novas consultas e requisitos ao longo do tempo.
Feedback Implícito vs. Explícito
Classificamos o feedback dos usuários em dois tipos:
Feedback Implícito: Inclui dados coletados automaticamente, como a frequência com que os usuários aceitam ou modificam as consultas SQL sugeridas. Esse feedback é valioso porque nos dá insights em tempo real sobre o comportamento do usuário.
Feedback Explícito: Envolve a entrada direta do usuário, como avaliações ou comentários sobre a funcionalidade. Embora seja mais limitado em volume, o feedback explícito pode fornecer insights mais profundos sobre a satisfação do usuário e áreas que precisam de melhorias.
Analisando ambos os tipos de feedback, conseguimos entender melhor como aprimorar o desempenho do nosso modelo e a experiência do usuário.
Melhoria Contínua
Uma vantagem significativa da nossa abordagem é a capacidade de aprender e se adaptar continuamente. À medida que coletamos mais dados e interações dos usuários, refinamos nosso modelo por meio de treinamento contínuo. Esse processo significa que nosso sistema não só melhora com o tempo, mas também permanece relevante à medida que as necessidades dos usuários mudam.
Conclusão
A integração de processamento de linguagem natural em plataformas low-code como OutSystems marca um passo significativo em tornar o desenvolvimento de aplicações mais acessível pra usuários sem um forte background em programação. Ao permitir que os desenvolvedores escrevam consultas de dados com suas próprias palavras, eliminamos uma barreira que muitas vezes atrasa o desenvolvimento.
Nosso trabalho contínuo enfatiza a importância da coleta de dados, feedback dos usuários e treinamento de modelo na criação de um sistema robusto que atende eficazmente às necessidades dos usuários. As melhorias que observamos em métricas-chave refletem o sucesso dessa abordagem, facilitando para os desenvolvedores se concentrarem em construir aplicações ao invés de se debaterem com consultas SQL.
À medida que continuamos a refinar nosso sistema e expandir nossas capacidades, permanecemos comprometidos em melhorar a experiência dos desenvolvedores e garantir que as ferramentas que oferecemos sejam poderosas e fáceis de usar. Através de aprendizado ativo e design centrado no usuário, buscamos apoiar uma nova geração de desenvolvedores empolgados em criar com plataformas low-code.
Título: Natural language to SQL in low-code platforms
Resumo: 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.
Autores: Sofia Aparicio, Samuel Arcadinho, João Nadkarni, David Aparício, João Lages, Mariana Lourenço, Bartłomiej Matejczyk, Filipe Assunção
Última atualização: 2023-08-29 00:00:00
Idioma: English
Fonte URL: https://arxiv.org/abs/2308.15239
Fonte PDF: https://arxiv.org/pdf/2308.15239
Licença: https://creativecommons.org/licenses/by/4.0/
Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.
Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.