stvnnnnnn commited on
Commit
e42938c
·
verified ·
1 Parent(s): 4594737

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +118 -9
README.md CHANGED
@@ -1,12 +1,121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
- title: Nl2sql Backend T5
3
- emoji: 👁
4
- colorFrom: pink
5
- colorTo: indigo
6
- sdk: docker
7
- pinned: false
8
- license: mit
9
- short_description: Backend de T5-large entrenado con Spider
10
  ---
11
 
12
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 🚀 NL→SQL Universal Backend (FastAPI + T5-large Spider)
2
+ **Autores:** Steven Reátegui licham y Danna Medina Villena
3
+ **Modelo:** `stvnnnnnn/t5-large-nl2sql-spider`
4
+ **API:** FastAPI (Docker)
5
+ **Versión:** v1.0.0
6
+
7
+ ![FastAPI](https://img.shields.io/badge/API-FastAPI-009688?logo=fastapi)
8
+ ![HuggingFace](https://img.shields.io/badge/Hosted%20on-HuggingFace-yellow?logo=huggingface)
9
+ ![SQL](https://img.shields.io/badge/Engine-SQLite-blue)
10
+ ![Model](https://img.shields.io/badge/Model-T5--Large%20Spider-orange)
11
+
12
+ ---
13
+
14
+ ## 📌 Descripción
15
+
16
+ Este Space implementa un **backend universal NL→SQL**, capaz de:
17
+
18
+ - Recibir preguntas en **lenguaje natural** (español o inglés).
19
+ - Convertirlas a **SQL** usando el modelo T5-large fine-tuned en Spider.
20
+ - Ejecutar la consulta sobre **cualquier base de datos que el usuario suba**:
21
+ - `.sqlite` / `.db`
22
+ - `.sql` dumps (MySQL, PostgreSQL, SQLite)
23
+ - `.csv`
24
+ - `.zip` con múltiples CSV
25
+
26
+ 🧠 El backend incluye una **SQL Repair Layer** que corrige errores del modelo (nombres de tabla/columna inexistentes, pluralización, sinónimos comunes, etc.), aumentando la **Execution Accuracy**.
27
+
28
+ 📦 Todo se convierte internamente a **SQLite**, para garantizar compatibilidad universal.
29
+
30
+ ---
31
+
32
+ ## 🔥 Características
33
+
34
+ ### ✔ Soporte universal de fuentes de datos
35
+ | Tipo | Soportado | Conversión |
36
+ |------|-----------|------------|
37
+ | SQLite (.sqlite / .db) | ✅ | Usado tal cual |
38
+ | SQL dump (.sql) | ✅ | Convertido a SQLite (best-effort) |
39
+ | CSV (.csv) | ✅ | Importado como tabla |
40
+ | ZIP con CSV | ✅ | Cada CSV → tabla en SQLite |
41
+
42
+ ---
43
+
44
+ ### ✔ Traducción automática ES → EN
45
+ Si escribes en español, el backend detecta el idioma y traduce con **Helsinki-NLP/opus-mt-es-en** antes de enviarlo al modelo NL→SQL.
46
+
47
+ ---
48
+
49
+ ### ✔ SQL Repair Layer (SRL)
50
+ Corrige errores típicos:
51
+
52
+ - `no such table: Songs` → `Track`
53
+ - `no such column: Length` → `Milliseconds`
54
+ - Singularización inteligente: songs → song → track
55
+ - Matching difuso (`difflib`)
56
+ - Diccionario de sinónimos (song, track, length…)
57
+
58
  ---
59
+
60
+ ### ✔ Multi-query generation + Re-ranking
61
+ Se generan **6 SQL candidatos** y se selecciona el mejor según:
62
+
63
+ 1. ¿Ejecuta sin error?
64
+ 2. ¿Tiene mejor score del modelo?
65
+ 3. ¿Luego de reparar, ejecuta correctamente?
66
+
67
  ---
68
 
69
+ ## 📂 Endpoints
70
+
71
+ ### 📤 `POST /upload`
72
+ Subir una base de datos.
73
+
74
+ Ejemplo (curl):
75
+ ```bash
76
+ curl -X POST -F "[email protected]" https://<space>.hf.space/upload
77
+ ```
78
+
79
+ ### 📤 `GET /connections`
80
+ Lista todas las bases subidas.
81
+
82
+ ### 📤 `GET /schema/{connection_id}`
83
+ Devuelve el esquema en formato Spider-like:
84
+
85
+ ```bash
86
+ Track(TrackId, Name, AlbumId, …) ; Album(AlbumId, Title, ArtistId) ; …
87
+ ```
88
+
89
+ ### 📤 `GET /preview/{connection_id}/{table}`
90
+ Vista previa de una tabla.
91
+
92
+ ### 📤 `POST /infer`
93
+ Genera SQL, lo ejecuta, repara si es necesario y retorna resultados.
94
+
95
+ ```bash
96
+ {
97
+ "connection_id": "db_xxxxxx",
98
+ "question": "Muestra los nombres de las canciones."
99
+ }
100
+ ```
101
+
102
+ ### 🧱 `Arquitectura`
103
+ Genera SQL, lo ejecuta, repara si es necesario y retorna resultados.
104
+
105
+ ```bash
106
+ Usuario → Pregunta (ES/EN)
107
+ → Detectar idioma
108
+ → Traducir (si ES)
109
+ → T5-large NL→SQL
110
+ → SQL Repair Layer
111
+ → Ejecución real en SQLite
112
+ → Respuesta JSON (SQL + resultados + candidatos)
113
+ ```
114
+
115
+ ### 🏁 `Estado actual del proyecto`
116
+ Versión v1.0 — Backend Final
117
+ Listo para integrarse con:
118
+ - Frontend Next.js (UI estilo chat)
119
+ - Explorador de esquemas
120
+ - Historial de consultas por usuario
121
+ - Ejecución segura de SQL (solo lectura)