
1. Giới Thiệu
COFER BOT là một ứng dụng chatbot tư vấn tuyển sinh được phát triển cho trường Cao đẳng Kinh tế Đối ngoại. Hệ thống sử dụng kiến trúc RAG (Retrieval-Augmented Generation) sử dụng công nghệ nhận dạng văn bản, sinh câu trả lời ngữ nghĩa và khả năng tìm kiếm văn bản chính xác từ tài liệu tuyển sinh, kết hợp với giao diện web Streamlit để cung cấp trải nghiệm tương tác với người dùng.
Kỹ thuật RAG mang lại nhiều ưu điểm vượt trội so với các phương pháp truyền thống. Thay vì chỉ dựa vào kiến thức được huấn luyện sẵn của mô hình ngôn ngữ, hệ thống có thể truy xuất và tham chiếu thông tin từ cơ sở dữ liệu nội bộ để tạo ra câu trả lời chính xác và cập nhật. Điều này đặc biệt quan trọng đối với các tổ chức cần xây dựng chatbot có khả năng trả lời về các quy trình, chính sách hoặc thông tin đặc thù.
Việc triển khai hệ thống dưới dạng ứng dụng web không chỉ đảm bảo tính tiếp cận và dễ sử dụng, mà còn tạo điều kiện thuận lợi cho việc tích hợp với các hệ thống doanh nghiệp hiện có. Khả năng mở rộng và cập nhật linh hoạt của hệ thống cho phép tổ chức liên tục cải thiện chất lượng dịch vụ, đồng thời duy trì quyền kiểm soát và bảo mật đối với dữ liệu nội bộ.
Toàn bộ chi tiết kỹ thuật trong quá trình thiết kế, xây dựng, triển khai và phát triển Chatbot này được trình bày sau đây. Ngoài ra, các bạn có thể nghe phiên bản Podcast audio với nút nhấn sau:
2. Mục Tiêu
- Tạo một giao diện dễ dùng cho người truy cập và chat với chatbot.
- Cho phép upload tài liệu tuyển sinh dưới dạng PDF, Markdown, hình ảnh.
- Trích xuất nội dung và xử lý văn bản tự động.
- Tìm kiếm thông tin liên quan và sinh câu trả lời từ tài liệu số.
3. Kiến Trúc Tổng Thể
3.1. Mô Hình Kiến Trúc

Hình 1: Sơ đồ kiến trúc hệ thống tổng quát
3.2. Quy trình xử lý và phản hồi trong hệ thống RAG Chatbot AI
- Người dùng tải lên tài liệu
- Người dùng cung cấp tài liệu tuyển sinh dưới dạng file PDF hoặc hình ảnh lên hệ thống qua giao diện Streamlit.
- Xử lý tài liệu (document_handler.py)
- Nếu tài liệu là hình ảnh:
- Sử dụng
OpenCV
để xử lý ảnh (lọc nhiễu, chuyển sang trắng đen).
- Sử dụng
pytesseract
để thực hiện OCR, trích xuất văn bản từ ảnh.
- Sử dụng
- Nếu tài liệu là PDF:
- Sử dụng
PyPDF2
để trích xuất toàn bộ nội dung văn bản từ các trang PDF.
- Sử dụng
- Văn bản sau khi trích xuất sẽ được chia nhỏ thành các đoạn hợp lý (chunk) sử dụng
Langchain TextSplitter
để chuẩn bị cho bước embedding.
- Nếu tài liệu là hình ảnh:
- Sinh vector embedding
- Các đoạn văn bản được đưa vào Cohere Embedding API để sinh ra vector embedding.
- Mỗi đoạn embedding đi kèm với metadata như: tiêu đề tài liệu, vị trí đoạn, tên tệp gốc…
- Lưu trữ vector embedding
- Các embedding cùng metadata sẽ được lưu trữ vào hệ thống vector store:
FAISS
(dành cho môi trường chạy cục bộ).
Google Firestore
(triển khai trên cloud, tích hợp dễ dàng với Google Cloud Functions).
- Các embedding cùng metadata sẽ được lưu trữ vào hệ thống vector store:
- Người dùng đặt câu hỏi
- Giao diện chatbot Streamlit cho phép người dùng nhập câu hỏi liên quan đến thông tin tuyển sinh.
- RAG Pipeline xử lý truy vấn
- Câu hỏi người dùng được embedding lại và truy vấn vào vector store:
- Tính toán độ tương đồng cosine để tìm ra các đoạn embedding có liên quan.
- Các đoạn văn bản phù hợp sẽ được đưa vào ngữ cảnh đầu vào cho mô hình sinh ngôn ngữ Cohere.
- Mô hình Cohere Generate sẽ sinh ra phản hồi hoàn chỉnh, rõ nghĩa dựa trên ngữ cảnh và câu hỏi.
- Câu hỏi người dùng được embedding lại và truy vấn vào vector store:
- Hiển thị kết quả lên giao diện
- Câu trả lời từ mô hình sẽ được hiển thị trên giao diện chatbot của Streamlit.
- Người dùng có thể tiếp tục hỏi, chỉnh sửa tài liệu, hoặc tải lại dữ liệu.
3.3. Thành Phần Hệ Thống
Module | Vai trò |
app.py | Giao diện Streamlit, điều hướng trang, nhận input và hiển thị output. |
document_handler.py | Tiếp nhận, xử lý, trích xuất và embedding tài liệu. |
gdrive_storage.py | Quản lý upload/download tài liệu với Google Drive và Firestore. |
4. Thư Viện và Công Nghệ Sử Dụng
4.1 Môi trường & Tiện ích
- python-dotenv, tenacity: Quản lý biến môi trường, retry khi lỗi.
- python-magic: Kiểm tra định dạng file upload.
4.2 Xử lý Dữ liệu
- numpy, pandas: Xử lý dữ liệu cơ bản.
- opencv-python-headless, Pillow, pytesseract: Nhận dạng ký tự (OCR) từ hình ảnh.
- PyPDF2: Trích xuất văn bản từ file PDF.
4.3 NLP và Vector Search
- cohere: Embedding và text generation.
- langchain, langchain-cohere, langchain-community: Xây dựng pipeline RAG.
- faiss-cpu: Lưu trữ vector embedding cục bộ.
4.4 Cloud APIs
- google-api-python-client, google-auth, google-cloud-storage, google-cloud-firestore: Tích hợp upload/download và Firestore.
4.5 Web Framework
- streamlit: Xây dựng giao diện chatbot tư vấn.
5. Chi Tiết Từng Module
5.1 app.py
- Trang giao diện chính: main, settings_page, chat_page.
- Xử lý upload: handle_file_upload, debug_document.
- Xử lý truy vấn: get_chat_response, re_rank_documents.
5.2 document_handler.py
- process_pdf: Trích xuất nội dung từ PDF.
- get_vectorstore: Chia văn bản, embedding và lưu vector.
- validate_pdf, verify_document, add_document, delete_document.
5.3 gdrive_storage.py
- upload_file, download_file, delete_file: Tương tác Google Drive.
- save_vectorstore, load_vectorstore, get_metadata: Lưu metadata và vector.
6. Bảo Mật
- Sử dụng OAuth 2.0 để xác thực truy cập tài liệu.
- Quản lý quyền truy cập theo email/người dùng trong Drive.
7. Kết Luận
Hệ thống chatbot tư vấn tuyển sinh RAG tích hợp Cohere là một giải pháp hiện đại, mang lại tính tư động cao trong công tác tư vấn. Công nghệ Streamlit, Langchain và Cohere giúp đơn giản hóa quy trình xây dựng, triển khai một chatbot hỏi-đáp thông minh từ tài liệu sẵn có.