Tên đề tài: "Nghiên cứu và xây dựng hệ thống hỏi đáp kết hợp RAG và Knowledge Graph hỗ trợ lựa chọn học phần trong giáo dục đại học Việt Nam"
Tên tiếng Anh: "A Knowledge Graph-Augmented Retrieval System for Course Selection Question Answering in Vietnamese Higher Education"
Trong thực tế, sinh viên thường gặp những câu hỏi như:
Sinh viên CNTT khóa 2022 phải học bao nhiêu tín chỉ?
Học phần X là bắt buộc hay tự chọn?
Học phần X được bố trí ở học kỳ nào?
Muốn học X thì phải hoàn thành học phần nào?
Học phần X của CNTT khóa 2022 và khóa 2024 có giống nhau không?
Sinh viên đã hoàn thành A và B thì có đủ điều kiện đăng ký C không?
Những học phần nào sinh viên có thể lựa chọn trong học kỳ tiếp theo?
Các chương trình đào tạo lại tồn tại dưới dạng tài liệu tiếng Việt và có:
nhiều ngành + nhiều phiên bản theo khóa + nhiều quan hệ giữa các học phần.
Do đó hệ thống tìm kiếm văn bản đơn thuần có thể:
tìm đúng tên học phần nhưng lấy thông tin sai ngành hoặc sai khóa.
Khóa luận nghiên cứu cách sử dụng Knowledge Graph để biểu diễn rõ những quan hệ này và hỗ trợ RAG đưa ra câu trả lời chính xác hơn.
Tôi đề nghị không đưa toàn bộ dữ liệu hiện có vào ngay.
Sử dụng 4 CTĐT:
Công nghệ Thông tin (2022, 2024)
Sư phạm Tin học (2022, 2024)
[Option] Mở rộng: Công nghệ Giáo dục. KG schema đã xây dựng có áp dụng được cho một ngành mới hay không?
Xây dựng và đánh giá một hệ thống hỏi đáp tiếng Việt kết hợp Retrieval-Augmented Generation và Knowledge Graph nhằm hỗ trợ sinh viên tra cứu chương trình đào tạo và xác định các học phần có thể lựa chọn phù hợp với ngành, khóa tuyển sinh và các ràng buộc học phần.
Sinh viên cần hoàn thành 5 mục tiêu.
Trích xuất từ các CTĐT:
mã học phần;
tên học phần;
số tín chỉ;
học kỳ;
bắt buộc/tự chọn;
ngành;
khóa;
nhóm học phần;
học phần tiên quyết nếu có.
Biểu diễn các quan hệ giữa:
ngành – chương trình – khóa – học phần – học kỳ – điều kiện học.
Cho phép truy xuất nội dung từ tài liệu chương trình đào tạo.
Kết hợp graph retrieval với document retrieval.
So sánh:
RAG thông thường với RAG có lọc metadata và KG-RAG.
Đây chính là phần làm khóa luận có tính nghiên cứu thay vì chỉ là project phần mềm.
KG không cần quá lớn.
Program
Curriculum
Cohort
Course
Semester
CourseGroup
Program
└── hasCurriculum → Curriculum
Curriculum
├── appliesTo → Cohort
├── contains → Course
└── containsGroup → CourseGroup
Course
├── prerequisite → Course
├── belongsTo → CourseGroup
└── recommendedIn → Semester
Một học phần có thể có các thuộc tính:
course_code
course_name
credits
course_type
semester
curriculum_version
Sinh viên không cần xây ontology phức tạp bằng OWL ngay từ đầu, dùng Neo4j hoặc một graph database tương đương là đủ.
Khóa luận chỉ cần bốn loại chính.
Học phần Cơ sở dữ liệu có bao nhiêu tín chỉ?
Học phần X có phải là học phần bắt buộc của CNTT khóa 2024 không?
Muốn học X cần hoàn thành học phần nào trước?
Ví dụ profile:
Ngành: Công nghệ Thông tin
Khóa: 2022
Đã hoàn thành: A, B, C
Câu hỏi:
Sinh viên này có đủ điều kiện học môn X không?
Loại thứ tư là phần nâng khóa luận từ tra cứu thông tin thành hỗ trợ lựa chọn học phần.
Tạo khoảng:
50–100 hồ sơ sinh viên giả lập.
Ví dụ:
{
"program": "Công nghệ Thông tin",
"cohort": 2022,
"semester": 4,
"completed_courses": [
"IT101",
"IT102",
"MA101"
]
}
Sau đó hệ thống xác định:
môn nào đủ điều kiện;
môn nào chưa đủ điều kiện;
điều kiện còn thiếu.
Vừa sạch về nghiên cứu vừa không đụng dữ liệu cá nhân.
Paper có thể hướng tới 500 câu, nhưng khóa luận đại học chỉ nên bắt buộc khoảng 250–350 câu được kiểm tra kỹ.
Đề xuất:
Course facts: 70
Curriculum context: 70
Prerequisite/relationship: 70
Eligibility: 90
Tổng cộng: 300
Tất cả câu hỏi và đáp án giữ nguyên bằng tiếng Việt.
Mỗi sample nên lưu:
{
"id": "Q001",
"question": "...",
"program": "Công nghệ Thông tin",
"cohort": 2022,
"question_type": "eligibility",
"gold_answer": "...",
"evidence": "...",
"source_document": "..."
}
Nếu là multi-hop thì thêm:
reasoning_path
Tôi sẽ yêu cầu sinh viên triển khai kiến trúc sau:
Câu hỏi tiếng Việt
│
▼
Phân tích ngữ cảnh câu hỏi
│
┌───────────────┼───────────────┐
▼ ▼ ▼
Ngành Khóa Học phần
└───────────────┬───────────────┘
▼
Curriculum Resolver
│
┌─────────────┴─────────────┐
▼ ▼
Knowledge Graph Vector Database
│ │
Graph Retrieval Text Retrieval
│ │
└─────────────┬─────────────┘
▼
Evidence Context
│
▼
LLM
│
▼
Câu trả lời + nguồn tham chiếu
Đây là yêu cầu bắt buộc của khóa luận.
Query
→ vector search
→ documents
→ LLM
Query
→ program/cohort extraction
→ filtering
→ vector search
→ LLM
Query
→ curriculum resolution
→ KG traversal
→ document evidence
→ LLM
Nếu còn thời gian có thể thêm:
Nhưng đây là optional.
Tùy ý, dưới đây là gợi ý
Python + FastAPI.
Có thể dùng:
LangChain;
LlamaIndex;
hoặc tự viết pipeline đơn giản.
Tôi thích tự viết các module chính hơn để sinh viên hiểu hệ thống.
FAISS;
Chroma;
Qdrant.
FAISS là đủ cho khóa luận.
Neo4j.
Một multilingual hoặc Vietnamese embedding model.
Có thể dùng:
API LLM;
hoặc một open-source instruct model nếu đủ tài nguyên.
Quan trọng là giữ cố định cùng một LLM khi so sánh các hệ thống.
React/Vue hoặc UI đơn giản.
Frontend chỉ là demo, không phải trọng tâm khóa luận.
Chỉ cần:
Ngành:
[Công nghệ Thông tin]
Khóa:
[2022]
Các học phần đã hoàn thành:
[x] A
[x] B
[x] C
Câu hỏi:
"Trong học kỳ tiếp theo tôi có thể học những môn nào?"
[Hỏi]
Output:
Bạn đủ điều kiện đăng ký:
- Course X
- Course Y
Bạn chưa đủ điều kiện đăng ký Course Z
vì chưa hoàn thành Course P.
Nguồn:
CTĐT Công nghệ Thông tin khóa 2022.
Một demo như vậy là đủ.
Tôi đề xuất 6 chương.
Chương 1. Tổng quan
1.1. Bối cảnh
1.2. Bài toán
1.3. Mục tiêu
1.4. Đối tượng và phạm vi
1.5. Phương pháp nghiên cứu
1.6. Đóng góp của khóa luận
1.7. Cấu trúc báo cáo
Chương 2. Cơ sở lý thuyết và nghiên cứu liên quan
2.1 Question Answering
2.2 Large Language Models
2.3 Retrieval-Augmented Generation
2.4 Knowledge Graph
2.5 KG-augmented Question Answering
2.6 LLM/KG trong giáo dục
2.7 Khoảng trống nghiên cứu
Chương 3. Dữ liệu và biểu diễn chương trình đào tạo
3.1 Dữ liệu CTĐT
3.2 Chuẩn hóa dữ liệu tiếng Việt
3.3 Thiết kế Curriculum Knowledge Graph
3.4 Trích xuất entity/relation
3.5 Xây dựng bộ dữ liệu QA
3.6 Synthetic student profiles
3.7 Kiểm tra chất lượng dữ liệu
Chương 4. Phương pháp và xây dựng hệ thống
4.1 Kiến trúc tổng thể
4.2 Vanilla RAG
4.3 Metadata-filtered RAG
4.4 Curriculum Resolver
4.5 Knowledge Graph Retrieval
4.6 Evidence Retrieval
4.7 LLM Answer Generation
4.8 Xây dựng ứng dụng demo
Chương 5. Thực nghiệm và đánh giá
5.1 Thiết lập thực nghiệm
5.2 Dataset
5.3 Baselines
5.4 Metrics
5.5 Kết quả tổng thể
5.6 Kết quả theo loại câu hỏi
5.7 Phân tích lỗi
5.8 Thảo luận
Chương 6. Kết luận
6.1 Kết quả đạt được
6.2 Hạn chế
6.3 Hướng phát triển
Tuần/Nội dung
1 Tìm hiểu bài toán, literature review
2 Khảo sát và chuẩn hóa CTĐT
3 Thiết kế schema KG
4 Xây dựng Knowledge Graph
5 Xử lý corpus + vector index
6 Xây Vanilla RAG
7 Metadata RAG
8 KG retrieval + Curriculum Resolver
9 Tích hợp CurriculumKG-RAG
10 Xây QA benchmark
11 Chạy thực nghiệm
12 Error analysis + cải tiến
13 Hoàn thiện demo + viết luận văn
14 Chốt kết quả, slide, rehearsal
Đây là timeline khá thực tế cho một sinh viên khá.
Cuối khóa luận nên có 6 sản phẩm:
Báo cáo khóa luận.
Source code.
Curriculum Knowledge Graph.
Vietnamese Curriculum QA Dataset.
Experimental results của ba hệ thống.
Demo web QA/advising.
Tiêu đề bài báo dự kiến: "Knowledge Graph-Augmented Question Answering for Course Selection in Vietnamese Higher Education: A Pilot Study"
3 sản phẩm cần đạt: Vietnamese Curriculum QA Dataset + Curriculum Knowledge Graph + evaluation framework cho academic advising.