eGoV_chatbot / README.md
DrPie's picture
Update README.md
403fdb2 verified
---
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)