Skip to content

Repository files navigation

💻 An Khang Laptop AI Assistant

AI Assistant thông minh hỗ trợ tư vấn laptop và dịch vụ cho cửa hàng An Khang Computer. Ứng dụng sử dụng RAG (Retrieval Augmented Generation) và LangGraph để cung cấp câu trả lời chính xác về sản phẩm, chính sách bảo hành, đổi trả và vận chuyển.

🌟 Tính năng

  • 🤖 AI Chatbot thông minh: Tự động trả lời câu hỏi về laptop và dịch vụ
  • 📊 RAG Architecture: Truy xuất thông tin chính xác từ vector database
  • 🔄 Query Rewriting: Tự động cải thiện câu hỏi để tìm kiếm hiệu quả hơn
  • 🎯 Smart Routing: Định tuyến câu hỏi đến đúng nguồn dữ liệu
  • ⚡ Real-time Streaming: Phản hồi theo thời gian thực qua WebSocket
  • 🐳 Docker Support: Dễ dàng triển khai với Docker Compose

📁 Cấu trúc dự án

AI_Asistant/
├── app.py                      # FastAPI Backend
├── streamlit_app.py            # Streamlit Frontend
├── docker-compose.yml          # Docker Compose config
├── Dockerfile                  # Docker image cho FastAPI
├── Dockerfile.streamlit        # Docker image cho Streamlit
├── requirements.txt            # Python dependencies
├── .env                        # Environment variables (cần tạo)
│
├── src/
│   ├── config.py              # Configuration settings
│   ├── logger.py              # Logging configuration
│   │
│   ├── agent/                 # LangGraph Agent
│   │   ├── graphs.py          # Graph definitions
│   │   ├── model.py           # State models
│   │   └── nodes.py           # Node implementations
│   │
│   ├── crawl_data/            # Data collection & processing
│   │   ├── final_data/
│   │   │   ├── laptop.txt     # Thông tin laptop
│   │   │   ├── csbh.txt       # Chính sách bảo hành
│   │   │   ├── csdt.txt       # Chính sách đổi trả
│   │   │   └── csvc.txt       # Chính sách vận chuyển
│   │   └── *.ipynb            # Data crawling notebooks
│   │
│   ├── embedding/             # Embedding models
│   │   ├── base.py
│   │   └── google_embed.py    # Google Gemini Embedding
│   │
│   ├── prompts/               # LLM Prompts
│   │   └── rag_prompts.py
│   │
│   └── vector_store/          # Vector database clients
│       ├── qdrant.py          # Qdrant client
│       └── chroma.py          # Chroma client (backup)
│
└── qdrant_data/               # Qdrant persistent storage
    └── collections/
        ├── laptop_collection/
        ├── csbh_collection/
        ├── csdt_collection/
        └── csvc_collection/

🚀 Cài đặt và chạy

Phương án 1: Chạy với Docker Compose (Khuyến nghị)

Bước 1: Clone repository và setup

git clone <repository-url>
cd AI_Asistant

Bước 2: Tạo file .env

Tạo file .env trong thư mục gốc với nội dung:

# Required
GOOGLE_API_KEY=your_google_api_key_here

# Optional
GROQ_API_KEY=your_groq_api_key_here
OPENAI_API_KEY=your_openai_api_key_here

# Qdrant (Docker sẽ tự động cấu hình)
QDRANT_HOST=qdrant
QDRANT_PORT=6333

Bước 3: Chạy toàn bộ hệ thống

# Khởi động tất cả services
docker-compose up -d

# Xem logs
docker-compose logs -f

# Dừng services
docker-compose down

Bước 4: Truy cập ứng dụng

Phương án 2: Chạy local (Development)

Bước 1: Cài đặt dependencies

# Tạo virtual environment
python -m venv venv

# Kích hoạt virtual environment
# Windows:
venv\Scripts\activate
# Linux/Mac:
source venv/bin/activate

# Cài đặt packages
pip install -r requirements.txt

Bước 2: Chạy Qdrant Database

# Chạy Qdrant với Docker (có persist volume)
docker run -d -p 6333:6333 -p 6334:6334 \
  -v "D:\CV_Project\AI_Asistant\qdrant_data:/qdrant/storage" \
  --name qdrant_db \
  qdrant/qdrant:latest

Lưu ý: Thay D:\CV_Project\AI_Asistant bằng đường dẫn thực tế của bạn.

Bước 3: Tạo file .env

GOOGLE_API_KEY=your_google_api_key_here
GROQ_API_KEY=your_groq_api_key_here

# Local development
QDRANT_HOST=localhost
QDRANT_PORT=6333

Bước 4: Chạy các services

Terminal 1 - FastAPI Backend:

uvicorn app:app --reload --host 0.0.0.0 --port 8000

Terminal 2 - Streamlit Frontend:

streamlit run streamlit_app.py

Bước 5: Truy cập

Khởi tạo lần đầu: Collections sẽ được tự động tạo khi khởi động backend lần đầu (mất ~5-10 phút để embedding). Lưu ý: Nếu chạy Docker Qdrant không mount volume, dữ liệu sẽ bị mất khi container dừng.

🐛 Troubleshooting

Lỗi: Collections không có dữ liệu

Nguyên nhân: Qdrant chạy không có volume mounting, dữ liệu bị mất.

Giải pháp:

# Dừng container cũ
docker stop qdrant_db
docker rm qdrant_db

# Chạy lại với volume
docker run -d -p 6333:6333 -p 6334:6334 \
  -v "./qdrant_data:/qdrant/storage" \
  qdrant/qdrant:latest

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages