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