Hướng dẫn: Xây chatbot hỏi đáp tài liệu nội bộ trong 30 phút
Bài này dành cho bạn mới bắt đầu, muốn có một chatbot trả lời câu hỏi dựa trên tài liệu công ty (PDF, Word). Mình dùng Python, nhưng các bước áp dụng được cho mọi ngôn ngữ. CHUẨN BỊ - Python 3.10 trở lên - Một API key của nhà cung cấp LLM - Thư mục chứa tài liệu cần hỏi đáp BƯỚC 1: CHUYỂN TÀI LIỆU SANG VĂN BẢN Dùng thư viện pypdf cho PDF, python-docx cho Word. Kiểm tra kỹ văn bản sau khi trích: PDF scan sẽ không có chữ, cần OCR riêng. BƯỚC 2: CHIA ĐOẠN Chia mỗi tài liệu thành đoạn khoảng 300–500 từ, cắt theo đề mục hoặc đoạn văn thay vì cắt cứng theo số ký tự. Mẹo quan trọng: thêm tên tài liệu và tiêu đề mục vào đầu mỗi đoạn, ví dụ "Chính sách nghỉ phép Nghỉ ốm ...". Việc tìm kiếm sẽ chính xác hơn rất nhiều. BƯỚC 3: TẠO EMBEDDING VÀ LƯU Tạo embedding cho từng đoạn bằng một model embedding đa ngôn ngữ, lưu vào Chroma (đơn giản, chạy ngay trên máy) hoặc pgvector nếu đã dùng Postgres. BƯỚC 4: TÌM KIẾM KHI CÓ CÂU HỎI Tạo embedding cho câu hỏi, lấy 5 đoạn gần nhất. Nếu tài liệu có nhiều mã số, tên riêng, nên kết hợp thêm tìm kiếm từ khoá (BM25). BƯỚC 5: GỌI LLM Đưa câu hỏi và các đoạn tìm được vào prompt, kèm hướng dẫn: - Chỉ trả lời dựa trên các đoạn được cung cấp - Nếu không có thông tin thì nói rõ là không tìm thấy - Ghi nguồn (tên tài liệu, mục) sau mỗi ý BƯỚC 6: KIỂM TRA Tự viết khoảng 30 câu hỏi mà bạn biết đáp án, chạy thử và ghi lại câu nào sai. Phần lớn lỗi sẽ nằm ở bước 2 và 4, không phải ở LLM. LƯU Ý - Luôn hiển thị nguồn trích dẫn để người dùng tự kiểm tra. - Tài liệu cập nhật thì nhớ chạy lại bước 1–3 cho file đó. - Đừng đưa tài liệu mật lên dịch vụ bên ngoài nếu chưa được phép. Ai cần code mẫu thì để lại bình luận nhé!