Instructions to use AdarshSingh7647/TabRankMultiTableNaive with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use AdarshSingh7647/TabRankMultiTableNaive with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="AdarshSingh7647/TabRankMultiTableNaive")# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("AdarshSingh7647/TabRankMultiTableNaive", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use AdarshSingh7647/TabRankMultiTableNaive with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "AdarshSingh7647/TabRankMultiTableNaive" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "AdarshSingh7647/TabRankMultiTableNaive", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/AdarshSingh7647/TabRankMultiTableNaive
- SGLang
How to use AdarshSingh7647/TabRankMultiTableNaive with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "AdarshSingh7647/TabRankMultiTableNaive" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "AdarshSingh7647/TabRankMultiTableNaive", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "AdarshSingh7647/TabRankMultiTableNaive" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "AdarshSingh7647/TabRankMultiTableNaive", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use AdarshSingh7647/TabRankMultiTableNaive with Docker Model Runner:
docker model run hf.co/AdarshSingh7647/TabRankMultiTableNaive
TabRank — Single + Multi Table, Answer-Only
Part of the TabRank family: six Qwen3-8B checkpoints for single-call generative listwise table reranking. Given a question and a list of candidate tables, the model reads them all in one prompt and returns the full ranking in a single generation — no pairwise scoring, no cross-encoder passes.
This checkpoint is the Answer-Only variant: fine-tuned to output the ranking directly, with no reasoning trace, so it is the fastest of the three objectives at inference time. It is trained on NQ Tables + MultiTabQA, adding multi-table retrieval questions on top of the single-table split.
For the reasoning variants trained on the same data, see TabRankMultiTableCoTGen (Standard SFT) and TabRankMultiTableCoTCond (TabRank, our best method). The sibling checkpoint TabRankSingleTableNaive uses the same objective trained on single-table data only.
Full family: TabRankSingleTableNaive · TabRankSingleTableCoTGen · TabRankSingleTableCoTCond · TabRankMultiTableNaive (this model) · TabRankMultiTableCoTGen · TabRankMultiTableCoTCond.
How it works
TabRank is trained on 6,728 chain-of-thought reasoning traces distilled from a teacher model reasoning about table relevance. This variant drops the reasoning trace and trains only on the final ranking, so at inference it goes straight from input to output. The multi-table training mix adds MultiTabQA questions that require reasoning over more than one table, which is where this data mix helps generalization the most (see the paper).
Input / output format
Input — a chat message with the question followed by each candidate table, labeled ### Table 1, ### Table 2, ...:
Question: Which table shows 2022 quarterly revenue by region?
### Table 1
| Region | Q1 2022 | Q2 2022 | Q3 2022 | Q4 2022 |
|---|---|---|---|---|
| North America | 120 | 134 | 128 | 145 |
| Europe | 88 | 91 | 95 | 102 |
### Table 2
| Product | Units Sold | Year |
|---|---|---|
| Widget A | 4200 | 2021 |
### Table 3
| Region | Headcount |
|---|---|
| North America | 340 |
Output — a single JSON object with the ranked, one-indexed candidate positions, best first:
{"ranked_tables": [1, 3, 2]}
Map the numbers back to your own table ids to get the reranked list — position 1 in the output is ### Table 1 from the input, etc.
Evaluation
This card does not publish a verified in-distribution results table (SQA/TAT-QA/HybridQA/TabFact) for the Answer-Only objective on this training mix — earlier published numbers for this specific checkpoint could not be confirmed against source eval logs, so rather than risk repeating an error we're leaving them out until they're re-run and verified.
For a trustworthy, fully-verified comparison, see the results tables on TabRankMultiTableCoTGen (Standard SFT) and TabRankMultiTableCoTCond (TabRank, our best method), which include both in-distribution results (including NQ-Tables, the actual training split) and out-of-distribution results on 7 benchmarks from the IBM table-text-ir-evaluation suite. Source eval code and logs are in the GitHub repo.
Usage with vLLM
from vllm import LLM, SamplingParams
from transformers import AutoTokenizer
repo = "AdarshSingh7647/TabRankMultiTableNaive"
tok = AutoTokenizer.from_pretrained(repo)
llm = LLM(model=repo, dtype="bfloat16", max_model_len=32768)
system = ("You are a table relevance expert. Given a question and a set of candidate tables "
"rank them from most to least useful for answering the question. Output exactly "
"JSON with key ranked_tables.")
user = "Question: ...\n\n### Table 1\n...\n\n### Table 2\n...\n"
msgs = [{"role": "system", "content": system}, {"role": "user", "content": user}]
text = tok.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True)
out = llm.generate([text], SamplingParams(temperature=0.6, top_p=0.95, max_tokens=2048))
print(out[0].outputs[0].text)
Usage with Transformers
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
repo = "AdarshSingh7647/TabRankMultiTableNaive"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(repo, torch_dtype=torch.bfloat16, device_map="auto")
system = ("You are a table relevance expert. Given a question and a set of candidate tables "
"rank them from most to least useful for answering the question. Output exactly "
"JSON with key ranked_tables.")
user = "Question: ...\n\n### Table 1\n...\n\n### Table 2\n...\n"
msgs = [{"role": "system", "content": system}, {"role": "user", "content": user}]
text = tok.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True)
inputs = tok(text, return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=2048, temperature=0.6, top_p=0.95, do_sample=True)
print(tok.decode(out[0][inputs.input_ids.shape[1]:], skip_special_tokens=True))
For full training and evaluation code, dataset builders, and the reasoning-trace dataset, see the TabRanker GitHub repo.
Model details
- Base model: Qwen3-8B
- Method: LoRA rank 16 fine-tuning, merged into the base weights so it loads directly
- Precision: bfloat16, single-file safetensors, ~16 GB
- Training data: NQ Tables + MultiTabQA (single- and multi-table retrieval)
- Family: six TabRank checkpoints span three objectives (Answer-Only, Standard SFT, TabRank) across two training mixes (Single Table, Single + Multi Table)
Citation
If you use these models, please cite the TabRank paper:
@misc{singh2026tabrank,
title={TabRank: Chain-of-Thought Distillation for Table Re-Rankers},
author={Adarsh Singh and Kushal Raj Bhandari and Jianxi Gao and Soham Dan and Vivek Gupta},
year={2026},
eprint={2607.25182},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2607.25182}
}
The MultiTabQA data in this checkpoint's training mix comes from RAG over Tables. If your usage relies specifically on the multi-table data, please also cite:
@misc{zou2025ragtableshierarchicalmemory,
title={RAG over Tables: Hierarchical Memory Index, Multi-Stage Retrieval, and Benchmarking},
author={Jiaru Zou and Dongqi Fu and Sirui Chen and Xinrui He and Zihao Li and Yada Zhu and Jiawei Han and Jingrui He},
year={2025},
eprint={2504.01346},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2504.01346}
}
