Por que o Text-to-SQL falha em ambientes corporativos
A maioria das demonstrações de Text-to-SQL é limpa demais.
Elas usam esquemas simples e nomes de tabelas óbvios. Elas assumem que uma ou duas tabelas se conectam perfeitamente. Isso funciona para uma demonstração. Falha em uma empresa real.
Em bancos de dados corporativos, a parte difícil não é a cláusula SELECT. A parte difícil é o caminho de junção (join path).
Um modelo pode escrever uma consulta válida para a receita por cliente. O SQL é executado. O dashboard mostra números. Mas a resposta está errada.
Por que isso acontece?
- A tabela de clientes não é a lista mestre oficial.
- O campo de receita não é a versão aprovada pelo financeiro.
- Registros estão duplicados entre regiões.
- A junção cria erros de fanout.
- Calendários fiscais diferem de anos civis.
Uma consulta sintaticamente válida não é uma consulta confiável.
Sistemas de produção reais são bagunçados. Você enfrenta chaves estrangeiras ausentes, tabelas legadas e relacionamentos de um-para-muitos que inflacionam os números. Até humanos precisam verificar relatórios antigos ou perguntar ao financeiro antes de confiar em uma junção.
Um modelo de IA vê apenas nomes e colunas. Ele adivinha. Às vezes, o palpite é perigoso.
Considere o fanout. Se você fizer o join de pedidos para itens do pedido e depois para remessas, um pedido pode ser contado várias vezes. O SQL está correto. O resultado está errado.
Metadados ajudam, mas não são suficientes. Nomes de colunas não dizem se um relacionamento é seguro para relatórios financeiros. Chaves estrangeiras não explicam exceções históricas.
O Text-to-SQL precisa de inteligência de relacionamento.
Um sistema confiável deve saber:
- Caminhos de junção aprovados para perguntas de negócio específicas.
- Cardinalidade de relacionamento.
- Riscos de fanout conhecidos.
- Quais caminhos estão obsoletos.
Em vez de apenas escrever código, o sistema deve raciocinar sobre a segurança. Ele deve escolher o caminho confiável ou pedir ajuda quando os caminhos não estiverem claros.
A lacuna nos sistemas atuais é o salto do mapeamento de nomes para a geração de SQL. Você deve adicionar uma camada de contexto de relacionamento.
Text-to-SQL não é apenas um problema de linguagem. É um problema de contexto.
Até que os modelos entendam quais junções são seguras, eles funcionarão em demonstrações, mas falharão em produção.
Fonte: https://dev.to/arisyndata/why-text-to-sql-breaks-when-the-join-path-is-not-obvious-3bk0
Comunidade de aprendizado opcional: https://t.me/GyaanSetuAi
