Priyabrat14/salesquery-nl2sql
0
SalesQuery AI — Natural Language to SQL
Fine-tuned Llama 3.2 1B Instruct with QLoRA on a custom E-Commerce Sales Analytics NL-SQL dataset. Ask plain English questions, get production-ready SQL.
Domain: E-Commerce / Retail Sales Analytics Stack: HuggingFace · PEFT · TRL · QLoRA · Gradio
Schema (4 Tables)
customers → customer_id, name, email, region, segment, country, acquisition_date, is_active
products → product_id, name, category, subcategory, unit_price, unit_cost
orders → order_id, customer_id, order_date, status, discount_pct, sales_channel
order_items → item_id, order_id, product_id, quantity, unit_price, revenueReal-world equivalent: Shopify / Salesforce CRM / SAP ERP order management data.
Example Queries
Training Details
Dataset Coverage
The training data covers queries across multiple dimensions:
- Regions: North, South, East, West
- Segments: B2B, B2C
- Countries: India, USA, UK, Germany, Singapore, Australia
- Categories: Electronics, Clothing, Furniture, Software, Food
- Channels: online, offline, partner
- Cross-dimensional: region × year, segment × category, channel × status, etc.
- SQL features: JOINs, GROUP BY, HAVING, CTEs, Window functions (RANK, LAG, NTILE, SUM OVER), Subqueries, CASE WHEN
Evaluation Metrics
Usage
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model = AutoModelForCausalLM.from_pretrained(
"YOUR_USERNAME/salesquery-nl2sql",
torch_dtype=torch.float16,
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("YOUR_USERNAME/salesquery-nl2sql")
SCHEMA = (
"customers(customer_id INTEGER, name VARCHAR, email VARCHAR, region VARCHAR, "
"segment VARCHAR, country VARCHAR, acquisition_date DATE, is_active BOOLEAN)\n"
"products(product_id INTEGER, name VARCHAR, category VARCHAR, subcategory VARCHAR, "
"unit_price DECIMAL, unit_cost DECIMAL)\n"
"orders(order_id INTEGER, customer_id INTEGER, order_date DATE, status VARCHAR, "
"discount_pct DECIMAL, sales_channel VARCHAR)\n"
"order_items(item_id INTEGER, order_id INTEGER, product_id INTEGER, quantity INTEGER, "
"unit_price DECIMAL, revenue DECIMAL)"
)
question = "What is the total revenue by region?"
prompt = (
"<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n"
"You are a SQL expert for an e-commerce sales analytics database. "
"Generate correct SQL queries based on the schema and question.<|eot_id|>"
"<|start_header_id|>user<|end_header_id|>\n"
f"### Schema:\n{SCHEMA}\n\n### Question:\n{question}<|eot_id|>"
"<|start_header_id|>assistant<|end_header_id|>\n"
)
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
output = model.generate(**inputs, max_new_tokens=200, do_sample=False, repetition_penalty=1.1)
result = tokenizer.decode(output[0], skip_special_tokens=True)
sql = result.split("<|start_header_id|>assistant<|end_header_id|>")[-1].strip()
print(sql)