# 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)
