🥈 2nd place — AI Benchmark 2026, a national Thai-language NLP competition organized by NECTEC / NSTDA.
A retrieval-augmented summarization system for Thai parliamentary meeting documents.
Given a long meeting document and a query, it produces an abstractive Thai answer
together with the supporting paragraph references — output as submission.csv
(ID, abstractive, refs).
Submissions are ranked by a composite metric:
score = 0.45 × SS-score (semantic similarity, bge-m3)
+ 0.35 × RougeL (answer overlap)
+ 0.20 × IoU (reference set match)
The winning configuration is a two-stage LLM pipeline over the whole document
(an early finding — exp35/exp37 — was that feeding the full doc to a strong LLM
beats every retrieval setup, so the final system has no retrieval step):
[อ้างอิง: X] and using
Stage A's hint. Context-first prompting lets vLLM reuse the ~14K-token document
prefix across queries via prefix caching.Final references are fixed to Stage A; the abstractive answer comes from Stage B. A lighter single-model production variant (Qwen3-30B-A3B-FP8) is also containerized for deployment.
sbatch jobs.| Path | What it is |
|---|---|
expNN/ | 90+ logged experiments, each a self-contained run + submit script |
textsum/ | Production pipeline and container definition (textsum.def, model/run.py) |
eval_retrieval/ | Fast retrieval-only evaluation (no LLM) |
tools/ | Scoring / score-collection utilities |
SCORES.md | Auto-generated leaderboard of every experiment's leak-free score |
CLAUDE.md | Detailed engineering notes — architecture, environment, gotchas |
The whole project is experiment-driven: every idea is a numbered expNN/
directory, scored on a held-out leak-free split, and tracked in SCORES.md.
Built by a two-person team for the competition; I was the primary author of the pipeline, experiments, and serving infrastructure.
175 commits
Python
87.1%
Shell
12.7%
🥈 2nd place — AI Benchmark 2026, a national Thai-language NLP competition organized by NECTEC / NSTDA.
A retrieval-augmented summarization system for Thai parliamentary meeting documents.
Given a long meeting document and a query, it produces an abstractive Thai answer
together with the supporting paragraph references — output as submission.csv
(ID, abstractive, refs).
Submissions are ranked by a composite metric:
score = 0.45 × SS-score (semantic similarity, bge-m3)
+ 0.35 × RougeL (answer overlap)
+ 0.20 × IoU (reference set match)
The winning configuration is a two-stage LLM pipeline over the whole document
(an early finding — exp35/exp37 — was that feeding the full doc to a strong LLM
beats every retrieval setup, so the final system has no retrieval step):
[อ้างอิง: X] and using
Stage A's hint. Context-first prompting lets vLLM reuse the ~14K-token document
prefix across queries via prefix caching.Final references are fixed to Stage A; the abstractive answer comes from Stage B. A lighter single-model production variant (Qwen3-30B-A3B-FP8) is also containerized for deployment.
sbatch jobs.| Path | What it is |
|---|---|
expNN/ | 90+ logged experiments, each a self-contained run + submit script |
textsum/ | Production pipeline and container definition (textsum.def, model/run.py) |
eval_retrieval/ | Fast retrieval-only evaluation (no LLM) |
tools/ | Scoring / score-collection utilities |
SCORES.md | Auto-generated leaderboard of every experiment's leak-free score |
CLAUDE.md | Detailed engineering notes — architecture, environment, gotchas |
The whole project is experiment-driven: every idea is a numbered expNN/
directory, scored on a held-out leak-free split, and tracked in SCORES.md.
Built by a two-person team for the competition; I was the primary author of the pipeline, experiments, and serving infrastructure.
175 commits
Python
87.1%
Shell
12.7%