58 lines
2.2 KiB
Markdown
58 lines
2.2 KiB
Markdown
# Blog RAG
|
|
|
|
Hệ thống Retrieval-Augmented Generation (RAG) cho blog orangepi.vn — trợ lý AI trả lời câu hỏi về sản phẩm Orange Pi dựa trên dữ liệu thực tế.
|
|
|
|
## Tính năng
|
|
|
|
- Truy vấn ngữ nghĩa qua FAISS + sentence-transformers (hỗ trợ tiếng Việt)
|
|
- Giao diện web với quản lý phiên chat, lịch sử hội đồng, hiển thị markdown
|
|
- Chế độ Light/Dark mode
|
|
- Dữ liệu sẵn có: 199 bài viết orangepi.vn, 36 model Orange Pi
|
|
- API tương thích OpenAI (OpenAI, Together.ai, Groq, v.v.)
|
|
|
|
## Cài đặt
|
|
|
|
```bash
|
|
pip install -r requirements.txt
|
|
cp .env.example .env
|
|
# Chỉnh sửa .env — điền LLM_API_KEY
|
|
```
|
|
|
|
## Sử dụng nhanh
|
|
|
|
```bash
|
|
# Chạy web UI với dữ liệu orangepi.vn có sẵn
|
|
python web_app.py --data-dir ./orangepi_data --index-dir ./orangepi_data/rag_index --port 5000
|
|
```
|
|
|
|
Mở trình duyệt tại `http://localhost:5000` → tạo phiên mới → đặt câu hỏi.
|
|
|
|
> **Lưu ý:** Lần đầu cần build index trước khi chạy web. Xem hướng dẫn chi tiết tại [HDSD.md](HDSD.md).
|
|
|
|
## Cấu trúc thư mục
|
|
|
|
```
|
|
orangepi-rag/
|
|
├── web_app.py # Web server (Flask)
|
|
├── rag_app.py # Core RAG pipeline (FAISS + LLM)
|
|
├── crawl_blog.py # Crawler tổng quát (Firecrawl + sitemap)
|
|
├── crawl_orangepi_blog.py # Crawler đặc thù orangepi.vn
|
|
├── keywords_example.json # Ví dụ từ khóa theo danh mục
|
|
├── requirements.txt # Dependencies
|
|
├── .env.example # Template API key
|
|
├── orangepi_data/ # Dữ liệu orangepi.vn đã crawl
|
|
│ ├── articles.jsonl
|
|
│ ├── chunks.jsonl
|
|
│ ├── orangepi_models.json
|
|
│ └── ...
|
|
├── templates/index.html # HTML template
|
|
├── static/
|
|
│ ├── app.js # Frontend JavaScript
|
|
│ └── style.css # Styles (Dark/Light theme)
|
|
└── HDSD.md # Hướng dẫn sử dụng chi tiết
|
|
```
|
|
|
|
## Tài liệu
|
|
|
|
- [HDSD.md](HDSD.md) — Hướng dẫn sử dụng chi tiết (cài đặt, crawl dữ liệu, build index, chạy web)
|