TensorTalk / README.md
TensorCat's picture
Remove outdated UI screenshot
5f93024 verified
|
Raw
History Blame Contribute Delete
10.3 kB
---
license: apache-2.0
language:
- en
- zh
base_model:
- Qwen/Qwen3-8B
pipeline_tag: text-generation
library_name: transformers
tags:
- qwen3
- qwen3-8b
- lora
- qlora
- sft
- rag
- faiss
- dense-retrieval
- agent
- ppo
- rlhf
- rule-reward
- harness-engineering
- um-handbook
- question-answering
- chatbot
- education
- tensor-talk
---
# TensorTalk
**TensorTalk** is a fully deployed Universiti Malaya Faculty of Computer Science and Information Technology handbook QA system built around **Qwen3-8B**, supervised fine-tuning, metadata-aware RAG, an official-source web helper, and a guarded harness for traceable answers.
The project includes the research and training pipeline in this repository, a separately maintained model repository, and a complete Vercel-deployed frontend experience. The live application provides conversation history, handbook and official-web routing, semantic retrieval controls, answer traces, grounding status, and source-aware responses.
## Live Deployment
**Try TensorTalk:** [https://tensor-talk.vercel.app/](https://tensor-talk.vercel.app/)
| Project Component | Link | Role |
| --- | --- | --- |
| Live web application | [tensor-talk.vercel.app](https://tensor-talk.vercel.app/) | Public Vercel deployment for interacting with TensorTalk. |
| Frontend source code | [github.com/nfdlh/tensor-talk](https://github.com/nfdlh/tensor-talk) | Source repository for the deployed web interface. |
| Model repository | [huggingface.co/nfdlh/tensortalk](https://huggingface.co/nfdlh/tensortalk) | Related TensorTalk model repository used by the deployed project. |
| Training and research repository | [TensorCat/TensorTalk/UM_Handbook](https://huggingface.co/TensorCat/TensorTalk/tree/main/UM_Handbook) | SFT, RAG, agent-harness, PPO, datasets, adapters, and evaluation artifacts. |
### Deployment Architecture
```text
User Browser
|
v
Vercel Frontend
https://tensor-talk.vercel.app/
|
+-- Conversation threads and responsive chat interface
+-- Semantic retrieval and routing controls
+-- Evidence, grounding, and tracing views
|
v
TensorTalk Model + RAG / Agent Harness
|
+-- UM handbook knowledge base
+-- Metadata-aware dense retrieval
+-- Official UM / FSKTM web-source helper
+-- Evidence and answer-grounding checks
```
The frontend deployment turns the research notebooks and model artifacts into a complete user-facing application. It exposes the system's intermediate retrieval and validation states instead of presenting TensorTalk as a black-box chatbot.
## Project Demonstration
The following GIF is generated from the complete deployment walkthrough. The original HDR recording was brightness-normalized for readability and accelerated to keep the README demonstration practical.
![TensorTalk full deployment demonstration](UM_Handbook/assets/tensortalk-simulation.gif)
## What This Project Does
TensorTalk answers handbook-style questions about UM FSKTM academic rules, student guidance, programme details, facilities, dress-code guidance, industrial training, supervision policy, postgraduate requirements, and other faculty handbook topics.
The project compares three stages:
1. **Baseline 1: Closed-book SFT Qwen3-8B**
Fine-tunes Qwen3-8B on handbook question-answer pairs and tests how much the model can answer from parameters alone.
2. **Baseline 2: SFT + metadata-aware RAG + agent harness**
Adds dense retrieval over handbook chunks, metadata reranking, official-source web assistance, and guardrail checks before showing the final answer.
3. **Improved stage: PPO rule-reward post-training + RAG + agent harness**
Experiments with rule-based reward shaping so responses are more grounded, concise, and aligned with the desired handbook-answer style.
## System Design
| Layer | Purpose |
| --- | --- |
| Qwen3-8B base model | General language model foundation. |
| LoRA / QLoRA SFT | Adapts the model to UM FSKTM handbook QA style. |
| Handbook knowledge base | Structured chunks from the undergraduate, postgraduate, and general handbook sources. |
| Dense retrieval + FAISS | Retrieves candidate evidence using `BAAI/bge-base-en-v1.5` embeddings. |
| Metadata-aware reranker | Uses scope, section, subsection, and keywords to reduce wrong-context answers. |
| Official web helper | Searches constrained official UM/FSKTM-related sources when local handbook evidence is not enough. |
| Harness engineering | Runs source guards, fake-URL guards, evidence checks, grounding checks, retry logic, and fallback rules. |
| Vercel frontend | Provides the deployed conversation workspace, history, retrieval controls, and trace views. |
| TensorTalk UI | Shows answers together with traceable RAG, web, and harness evidence panels. |
## Data Assets
The repository includes the core artifacts used to build and evaluate the assistant:
| Artifact | Path | Size / Role |
| --- | --- | --- |
| SFT QA dataset | `UM_Handbook/Dataset/SFT_Dataset/SFT_QA_Training_Ready.jsonl` | 1,000 question-answer rows. |
| SFT metadata | `UM_Handbook/Dataset/SFT_Dataset/SFT_QA_Metadata.jsonl` | 1,000 rows with scope and source metadata. |
| RAG knowledge base | `UM_Handbook/Dataset/RAG/UM_RAG_Knowledge_Base.jsonl` | 521 retrieval chunks. |
| RAG evaluation set | `UM_Handbook/Dataset/RAG/UM_RAG_Evaluation_Dataset.jsonl` | 1,000 retrieval-evaluation rows. |
| Source chunk report | `UM_Handbook/Dataset/Source Chunk Dataset/Source_Chunks_Dataset_report.json` | Chunk distribution and preprocessing notes. |
| Baseline 2 LoRA adapter | `UM_Handbook/outputs/baseline2_rag_harness_agent/lora_adapter/` | PEFT LoRA adapter and tokenizer assets. |
The 521 handbook chunks are split into 58 general, 250 postgraduate, and 213 undergraduate chunks. Low-information cover pages and divider pages are filtered before retrieval.
## Evaluation Snapshot
| Component | Result |
| --- | --- |
| Dataset split | 800 train / 100 validation / 100 test, seed 42. |
| Baseline 2 train loss | 0.2748. |
| Retrieval eval size | 1,000 questions. |
| Hit@1 primary chunk | 82.1%. |
| Hit@3 primary chunk | 95.4%. |
| Hit@3 same knowledge group | 99.1%. |
| Scope match at rank 1 | 99.6%. |
| Plain generation token-F1 | 0.3391 on the sampled generation evaluation. |
| RAG generation token-F1 | 0.8460 on the same sampled evaluation. |
The retrieval results show why the project moved beyond closed-book SFT. The model can speak in the right academic tone after fine-tuning, but RAG and harness checks make the answers more evidence-grounded and easier to audit.
## End-to-End Project Flow
1. Handbook PDFs are converted into structured Markdown.
2. Source chunks and question-answer datasets are built with scope and source metadata.
3. Qwen3-8B is adapted with SFT using LoRA / QLoRA.
4. BGE embeddings and FAISS retrieve handbook evidence, followed by metadata-aware reranking.
5. The agent harness validates sources, rejects unsupported evidence, retries weak retrieval, and checks answer grounding.
6. Rule-reward PPO experiments further shape response behavior.
7. The Vercel frontend exposes the complete workflow through an interactive deployed experience.
## Repository Map
```text
UM_Handbook/
Baseline_1_SFT_QWEN3_UM_Handbook_.ipynb
Baseline_2_RAG_SFT_QWEN3_UM_Handbook_A100_intelligent_harness_agent.ipynb
Improved_Model_PPO_QWEN3_UM_Handbook_RAG_Agent_Harness.ipynb
UM_Handbook_Markdown_Preprocess.py
UM_Source_Chunk_Dataset_Builder.py
UM_SFT_QA_Dataset_Builder_from_Index.py
Dataset/
SFT_Dataset/
RAG/
Source Chunk Dataset/
outputs/
baseline2_rag_harness_agent/
lora_adapter/
retrieval_eval/
generation_eval/
rag_augmented_dataset/
```
## Loading the Baseline 2 Adapter
The Baseline 2 adapter is stored in a subfolder of this repository. A typical PEFT loading flow is:
```python
import torch
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
base_model_id = "Qwen/Qwen3-8B"
adapter_repo = "TensorCat/TensorTalk"
adapter_subfolder = "UM_Handbook/outputs/baseline2_rag_harness_agent/lora_adapter"
tokenizer = AutoTokenizer.from_pretrained(
adapter_repo,
subfolder=adapter_subfolder,
trust_remote_code=True,
)
base_model = AutoModelForCausalLM.from_pretrained(
base_model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
trust_remote_code=True,
)
model = PeftModel.from_pretrained(
base_model,
adapter_repo,
subfolder=adapter_subfolder,
)
model.eval()
```
For the full TensorTalk behavior shown in the screenshot, use the adapter together with the RAG knowledge base, FAISS retriever, official-source web helper, and harness checks from the notebooks. The model weights alone do not include the live retrieval index or web-agent runtime.
For an immediate end-to-end demonstration, use the [deployed TensorTalk web application](https://tensor-talk.vercel.app/).
## Intended Use
TensorTalk is intended for research, education, and demonstration of:
- handbook question answering for UM FSKTM content;
- RAG-grounded answer generation;
- metadata-aware retrieval and reranking;
- controlled agent behavior over official web sources;
- harness engineering for evidence checks, fake URL detection, retries, and fallback;
- comparing closed-book SFT against retrieval-grounded and reward-shaped systems.
## Out-of-Scope Use
Do not use TensorTalk as an official university policy authority, legal adviser, disciplinary decision system, or fully autonomous student-support system. University policies can change, and final answers should be checked against the latest official UM/FSKTM documents when used for real administrative decisions.
## Limitations
- The strongest behavior comes from the full runtime pipeline, not from the adapter by itself.
- RAG quality depends on the handbook chunks, retrieval metadata, and official-source availability.
- The web helper is intentionally constrained to trusted domains; it is not a general web search assistant.
- PPO in this project is rule-reward post-training, not a large-scale human-feedback RLHF pipeline.
- Some notebook paths reflect the original training environment and may need local path adjustment before rerunning.
## License
This project is released under the Apache 2.0 license.