๐Ÿง  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.37
  • openai >= 1.10
  • pandas, scikit-learn, numpy
  • torch >= 2.0
  • sentence-transformers