File size: 2,453 Bytes
a2727ec
 
 
 
 
 
 
 
 
 
403fdb2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
---
title: EGoV Chatbot
emoji: 💻
colorFrom: red
colorTo: blue
sdk: docker
pinned: false
license: mit
---

# EGoV Chatbot 💻

EGoV Chatbot là một ứng dụng **chatbot tra cứu thủ tục hành chính** sử dụng dữ liệu từ Hugging Face Hub và cơ chế **hybrid search** (semantic + keyword).  
Dự án này được triển khai dưới dạng **Hugging Face Space** với backend **Flask****Docker SDK**.

---

## 🚀 Tính năng chính
- **Tra cứu thủ tục hành chính** với dữ liệu có sẵn.
- **Hybrid Search**: kết hợp tìm kiếm từ khóa (BM25) và tìm kiếm vector (Sentence Transformers).
- **REST API Endpoint**: `/chat` để nhận câu hỏi và trả về câu trả lời.
- **Tích hợp Hugging Face Hub**: tải dữ liệu và model trực tiếp từ HF Hub bằng token.

---

## 📂 Cấu trúc dự án
```
├── app.py               # Flask backend chính
├── requirements.txt     # Danh sách thư viện cần cài đặt
├── Dockerfile           # Docker build cho Space
├── id_to_record.pkl     # File mapping id -> dữ liệu thủ tục
├── toan_bo_du_lieu_final.json            # Dữ liệu gốc (tùy chọn)
└── README.md            # File này
```

---

## 🔑 Biến môi trường yêu cầu
Trước khi chạy, cần cung cấp biến môi trường:
- `HF_TOKEN`: Token Hugging Face của bạn (để tải dữ liệu/model từ Hub).

Trong Hugging Face Space, đặt token trong mục **"Settings > Secrets"**.

---

## 🐳 Chạy bằng Docker (cục bộ)
```bash
docker build -t egov-chatbot .
docker run -p 7860:7860 -e HF_TOKEN=your_hf_token egov-chatbot
```
Sau đó truy cập:
[http://localhost:7860/chat?query=Thủ tục làm CCCD](http://localhost:7860/chat?query=Thủ%20tục%20làm%20CCCD)

---

## 📡 API Endpoint
- **`POST /chat`**
  - **Body**: `{ "query": "Câu hỏi của bạn" }`
  - **Response**: `{ "answer": "Câu trả lời từ chatbot" }`

Ví dụ:
```bash
curl -X POST http://localhost:7860/chat \
    -H "Content-Type: application/json" \
    -d '{"query": "Thủ tục cấp giấy khai sinh"}'
```

---

## 📝 Giấy phép
Dự án sử dụng giấy phép **MIT** – tự do sử dụng và tùy biến.

---

## 📖 Tham khảo
- [Hugging Face Hub](https://huggingface.co/)
- [Sentence Transformers](https://www.sbert.net/)
- [BM25 Ranker](https://github.com/castorini/pyserini)