Tài liệu dự án Text2SQL
1. Sơ đồ tổng quan hệ thống
Luồng sử dụng
Khởi tạo:
- Tạo data group: Người dùng chọn danh sách table và columns trong Redshift thông qua giao diện web
- Tạo chatbot: Người dùng tạo chatbot với data group đã chọn
- Đăng nhập: Web sử dụng xác thực Google kết nối với email CRM của Monkey
Sử dụng:
- Chat và truy vấn: Người dùng tương tác với chatbot để truy vấn dữ liệu trên data group đã chọn
- Hiệu chỉnh schema: Người dùng có thể đọc và sửa schema nếu cần để nâng cao độ chính xác
Luồng Text2SQL
Kết nối:
- Client → WebSocket → Server → SQL Module
SQL Module:
- Data Group Selection: Lựa chọn nhóm dữ liệu để truy vấn
- SQL/Code Generation: Sinh mã SQL dựa trên văn bản đầu vào
- Fuzzy Search: Sửa giá trị một số trường thông qua tìm kiếm fuzzy
- Run và Feedback: Thực thi SQL và cung cấp phản hồi
Xử lý bất đồng bộ:
- Sử dụng Redis Queue để thực thi SQL, tránh block luồng chính
- Mỗi trạng thái khi chạy được stream về phía client qua WebSocket
Lưu trữ:
- Lịch sử chat được lưu vào MongoDB, collection
edu_backend.user_chat_logs
Cấu trúc dữ liệu chat trong MongoDB:
{
"_id": { "$date": "2024-12-31T11:35:41.510Z" },
"updated_at": { "$date": "2024-12-31T11:35:41.510Z" },
"message_count": 0,
"is_active": true,
"is_archived": false,
"tags": [],
"metadata": {}
}
Công nghệ sử dụng:
- Backend: Python FastAPI
- Xác thực: Google OAuth
- Queue xử lý: Redis Queue
- Cơ sở dữ liệu:
- Nguồn dữ liệu chính: Redshift
- Lưu trữ cấu hình và chat: MongoDB
- Giao thức kết nối: WebSocket