Dự án này xây dựng một chatbot được thiết kế để tạo truy vấn SQL dựa trên đầu vào là yêu cầu từ người dùng. Chatbot hỗ trợ tạo ra các truy vấn SQL theo ngữ cảnh, hỗ trợ người dùng trong việc trích xuất dữ liệu. Hệ thống sử dụng FAISS để thực hiện tìm kiếm tương tự trên các embedding của tài liệu đã tải trước nhằm cung cấp ngữ cảnh cho API Gemini để tạo SQL chính xác hơn.
## Giới thiệu
## Tính Năng
**VA-VSS** (Virtual Assistant VSS) là trợ lý ảo thông minh được thiết kế để hỗ trợ người dùng một cách toàn diện trong các hoạt động chăm sóc khách hàng. Với khả năng tương tác, hướng dẫn, và thu thập phản hồi từ người dùng, VA-VSS giúp nâng cao trải nghiệm khách hàng, đồng thời được tích hợp sâu vào hệ thống chăm sóc khách hàng của **Vietsens**. Chatbot này không chỉ giúp giải đáp thắc mắc mà còn đóng vai trò là cầu nối giúp khách hàng sử dụng các sản phẩm và dịch vụ một cách hiệu quả hơn.
-**Tạo Truy Vấn SQL**: Tự động tạo các truy vấn SQL dựa trên câu hỏi của người dùng.
-**Tìm Kiếm Ngữ Cảnh**: Sử dụng FAISS để truy xuất các tài liệu liên quan, giúp tăng độ chính xác trong việc tạo truy vấn.
-**Giao Diện Gradio**: Giao diện web thân thiện và dễ sử dụng với Gradio.
-**API Google Gemini**: Tích hợp với API Gemini của Google để xử lý ngôn ngữ tự nhiên.
## Mô hình sử dụng
## Yêu Cầu
Phiên bản mới của **VA-VSS** được nâng cấp để kết hợp giữa công nghệ **RAG** (Retrieval-Augmented Generation) và **Gemini**, thay vì chỉ sử dụng các mô hình ngôn ngữ lớn (LLMs) như trước đây. Sự kết hợp này mang lại khả năng tìm kiếm và truy vấn dữ liệu hiệu quả, đồng thời sinh câu trả lời chính xác hơn bằng cách kết hợp kiến thức truy xuất từ cơ sở dữ liệu với mô hình ngôn ngữ.
- Python 3.8+
-`requests`
-`gradio`
-`faiss-gpu` (dùng FAISS với GPU) hoặc `faiss-cpu` (nếu dùng CPU)
- Khóa API Google Gemini
-**RAG (Retrieval-Augmented Generation)**: Tìm kiếm các câu trả lời từ cơ sở dữ liệu lớn và kết hợp với mô hình sinh để tạo phản hồi tự nhiên và chính xác.
-**Gemini**: Là một mô hình nhỏ, tinh gọn nhưng hiệu quả, giúp giảm tải tính toán và tối ưu hóa hiệu năng, đặc biệt khi triển khai trên CPU.
## Cài Đặt
Cách setup project trên môi trường Google Colab hoặc Kaggle
Việc sử dụng kết hợp RAG và Gemini cho phép **VA-VSS** không chỉ hoạt động mạnh mẽ trên GPU mà còn chạy mượt mà trên **CPU**, mang đến tính linh hoạt cao trong quá trình triển khai. Mô hình có thể cung cấp phản hồi nhanh chóng ngay cả khi không sử dụng các tài nguyên phần cứng đắt đỏ như GPU.
2. Cài đặt các gói phụ thuộc:
```bash
!pip install-r requirements.txt
```
Điều này đặc biệt hữu ích khi triển khai mô hình trong các môi trường có hạn chế về tài nguyên, đồng thời vẫn đảm bảo hiệu suất cao trong việc xử lý và phản hồi các câu hỏi từ người dùng.
3. Thiết lập khóa API Google Gemini:
- Thay thế `"YOUR_API_KEY"` trong file `gemini_api.py` bằng khóa API thực của bạn.
## Nền tảng và tài nguyên triển khai mô hình
## Sử Dụng
Với việc chuyển đổi sang sử dụng **RAG** và **Gemini**, **VA-VSS** hiện có thể được triển khai hoàn toàn trên **CPU**, giúp giảm bớt sự phụ thuộc vào các tài nguyên phần cứng cao cấp như GPU, đồng thời vẫn đảm bảo khả năng phản hồi nhanh chóng và chính xác.
1. Chuẩn bị thư mục tài liệu với các file văn bản để lập chỉ mục FAISS.
Việc triển khai trên **Google Colab** và **Kaggle** vẫn là lựa chọn phổ biến, nhưng nhờ khả năng hoạt động tốt trên CPU, mô hình giờ đây có thể được sử dụng linh hoạt trên các môi trường tính toán khác mà không cần GPU. Điều này giúp giảm chi phí và mở rộng khả năng triển khai trong các hệ thống thực tế có giới hạn tài nguyên.
2. Đừng quên bật GPU để project chạy mượt mà hơn!
Ngoài ra, nền tảng **FAISS** được tích hợp để quản lý cơ sở dữ liệu tìm kiếm hiệu quả, giúp **VA-VSS** có thể truy vấn và tìm kiếm câu trả lời từ nguồn dữ liệu lớn trong thời gian ngắn. Kết hợp với khả năng sinh văn bản tự nhiên của Gemini, hệ thống mang đến trải nghiệm tương tác tốt hơn cho người dùng.
3. Chạy ứng dụng chính:
```bash
!python main.py
```
## Hướng dẫn sử dụng
4. Mở giao diện Gradio trên trình duyệt của bạn (thông qua public URL). Bạn có thể nhập câu hỏi hoặc yêu cầu liên quan đến truy vấn SQL, và chatbot sẽ tạo truy vấn SQL tương ứng dựa trên đầu vào và ngữ cảnh tài liệu được truy xuất.
1.**Chạy mô hình trên CPU**: Mô hình có thể được triển khai và chạy mượt mà trên CPU mà không cần cấu hình phức tạp. Điều này mang đến tính linh hoạt cho những ai không có sẵn GPU nhưng vẫn muốn triển khai hệ thống AI chất lượng cao.
2.**Tích hợp RAG**: VA-VSS giờ đây không chỉ dựa vào mô hình sinh văn bản mà còn có khả năng truy xuất dữ liệu từ cơ sở tri thức có sẵn, đảm bảo rằng các câu trả lời luôn chính xác và dựa trên các thông tin mới nhất từ hệ thống dữ liệu của **Vietsens**.
## Cấu Trúc Dự Án
### Kết luận
-`main.py`: File chính để khởi động giao diện Gradio và xử lý tương tác với người dùng.
-`data_loader.py`: Chứa các hàm để tải và tiền xử lý dữ liệu văn bản.
-`embedding.py`: Tạo embedding cho văn bản tài liệu bằng mô hình bạn chọn.
-`faiss_search.py`: Chứa các hàm để lập chỉ mục và tìm kiếm tương tự với FAISS.
-`gemini_api.py`: Xử lý yêu cầu API tới Google Gemini để tạo truy vấn SQL.
Phiên bản mới của **VA-VSS** tận dụng sức mạnh của **RAG** và **Gemini**, giúp tối ưu hiệu suất, giảm chi phí triển khai, và mang lại khả năng hoạt động trên các hệ thống tính toán với tài nguyên hạn chế như CPU. Đây là một bước tiến lớn trong việc nâng cao trải nghiệm khách hàng và tối ưu hóa quy trình hỗ trợ tại **Vietsens**.
## Lưu ý
---
- Dự án này sử dụng FAISS để truy xuất tài liệu liên quan dựa trên sự tương tự ngữ nghĩa.
- Các truy vấn SQL tạo ra được tối ưu cho cấu trúc cơ sở dữ liệu quan hệ; hãy điều chỉnh chúng theo lược đồ cơ sở dữ liệu cụ thể của bạn.
## Cách chạy project
## Đóng góp
### Bước 1: Clone repository
Mọi đóng góp đều được chào đón! Vui lòng gửi pull request hoặc tạo issue để thảo luận về các thay đổi.