๐ง Plugging Schema Graph into Multi-Table QA
May 19, 2025 ยท View on GitHub
A Human-Guided Framework for Reducing LLM Reliance
This repository contains the source code, datasets, and evaluation scripts for our paper on multi-table question answering using graph-enhanced reasoning. Our method integrates human-curated schema graphs to assist large language models (LLMs), improving performance and reducing reliance on model memorization.
๐ Directory Structure
TableQA-Graph/
โโโ data/ # Datasets, prompts, and SQL resources
โ โโโ dev/ # Financial dataset & testing scripts
โ โโโ train/ # Olympics dataset & testing scripts
โ โโโ outputs/ # Result logs and output files
โ โโโ processed_data/ # Preprocessed CISS tables
โ โโโ prompts/ # Prompt templates for LLMs
โ โโโ datasetCISS.xlsx # Raw CISS dataset
โ โโโ questions_and_comments_v2.txt
โโโ notebooks/ # Table schemas and notes
โโโ docs/ # Paper and figures (optional)
โโโ src/ # Core logic
โ โโโ data/ # Data loading and processing
โ โโโ llm/ # LLM querying and reasoning modules
โโโ tests/ # Evaluation scripts on CISS
โโโ find.py # Global task orchestration
โโโ find_nocode_question.py # Non-SQL QA generation
โโโ tasks.py # End-to-end main pipeline
โโโ requirements.txt # Runtime dependencies
โโโ requirements_dev.txt # Dev dependencies
โโโ pyproject.toml # Python build and packaging
โโโ README.md
๐ง Key Modules
๐ฆ src/llm/ โ Model & Reasoning Engine
-
llm_loader.py
Unified interface for GPT-4o, Qwen, LLaMA, etc. Enables.query()abstraction. -
prompt_manager.py
Loads, formats, and manages prompt templates for LLM input. -
question_decompose.py
Decomposes complex questions into constraints + target for multi-hop logic. -
TableRAG_keywords.py
Keyword and embedding-based attribute-level retrieval for table QA. -
TableRAG_keywords_decompQuestion.py
Enhanced version that handles decomposition and retrieval in stages. -
variable_Graph.py
Builds and queries schema-level graphs across multi-table environments to guide information extraction.
๐ Model Inference Setup
We support both API-based and local inference:
- ๐น
GPT-4o(via OpenAI API) - ๐น
LLaMA-3 70B(local on A100 GPUs) - ๐น Embedding:
text-embedding-3-small(OpenAI)
๐งช Running Experiments
You can evaluate the system on different datasets using SLURM scripts:
# CISS dataset (real-world crash investigation)
sbatch tests/TableRAG_test.sh
# Olympics dataset (text-to-SQL benchmark)
sbatch data/train/Olympics_test.sh
# Financial dataset (text-to-SQL benchmark)
sbatch data/dev/financial_test.sh
๐ Evaluation
To summarize hop-type accuracy and correctness:
python tests/results_summary.py
โ๏ธ Requirements
We recommend using conda or virtualenv.
# Basic dependencies
pip install -r requirements.txt
# Developer tools and notebook support
pip install -r requirements_dev.txt
๐ Key Dependencies
transformers >= 4.37openai >= 1.10pandas,scikit-learn,numpytorch >= 2.0sentence-transformers