How rharish1/schemadrill works
SchemaDrill accepts a natural-language database question, retrieves relevant table DDL, generates SQL, applies safety and database validation, and returns bounded query results. Separately, schema ingestion embeds table definitions for retrieval, while evaluation runners compare generated queries against gold SQL using execution, result-set, and AST metrics. The main runtime and ingestion/evaluation entry points are supported by sampled source; some evaluation capabilities and optional integrations are documented but not sampled.
Main entry points: pipeline.py Query pipeline · evaluator.py SQL pair evaluator · retrieval.py Schema retrieval · run_benchmark.py Prompt benchmark runner
Components 18
Query workflow
- FastAPI query API
app/main.py - Query pipeline
app/pipeline.py - Prompt and feedback
app/prompting.py - Gemini client
app/llm_client.py
Schema retrieval
- Schema retrieval
app/retrieval.py - Text embeddings
app/embedding.py - Schema ingestion
ingest/schema_ingest.py
SQL safety and execution
- SQL guard
app/sql_guard.py - SQL validation and execution
app/executor.py
Evaluation
- Prompt benchmark runner
eval/run_benchmark.py - Dataset evaluation runner
evaluation/runner.py - SQL pair evaluator
eval/evaluator.py - SQL AST judge
app/sql_judge.py - Result-set comparator
eval/result_compare.py
Other components
- Client
- Gemini API
- PostgreSQL and pgvector
- Questions and gold SQL
Connections 23
- Client → FastAPI query API: submits question
- FastAPI query API → Query pipeline: runs query
- Query pipeline → Schema retrieval: retrieves schema
- Schema retrieval → Text embeddings: embeds question
- Schema retrieval → PostgreSQL and pgvector: searches vectors
- Schema retrieval → PostgreSQL and pgvector: reads FK neighbors and DDL
- Query pipeline → Prompt and feedback: builds retry messages
- Query pipeline → Gemini client: requests SQL
- Gemini client → Gemini API: generates SQL
- Query pipeline → SQL guard: checks SQL
- Query pipeline → SQL validation and execution: explains and executes
- SQL validation and execution → PostgreSQL and pgvector: runs bounded queries
- Query pipeline → FastAPI query API: returns query result
- Schema ingestion → PostgreSQL and pgvector: reads table catalog; writes DDL vectors
- Schema ingestion → Text embeddings: embeds table DDL
- Questions and gold SQL → Prompt benchmark runner: supplies benchmark cases
- Prompt benchmark runner → Query pipeline: runs each question
- Prompt benchmark runner → SQL pair evaluator: evaluates gold and generated SQL
- Dataset evaluation runner → Prompt benchmark runner: delegates dataset run
- Dataset evaluation runner → SQL pair evaluator: runs gold-SQL smoke checks
- SQL pair evaluator → PostgreSQL and pgvector: executes SQL pairs
- SQL pair evaluator → SQL AST judge: compares SQL ASTs
- SQL pair evaluator → Result-set comparator: compares result sets