Bối cảnh và vấn đề nghiên cứu

Trong hoạt động học tập và nghiên cứu học thuật, việc tiếp cận, đọc hiểu và xử lý khối lượng lớn tài liệu chuyên ngành đặt ra yêu cầu cấp thiết về các công cụ hỗ trợ thông minh. Người dùng thường gặp khó khăn trong việc tìm kiếm nhanh các thông tin trọng tâm, phân tích nội dung chuyên sâu và quản lý các ghi chú trích xuất từ tài liệu. Nhằm giải quyết vấn đề này, đề tài "Xây dựng hệ thống chatbot hỗ trợ nghiên cứu tài liệu" được thực hiện bởi sinh viên Nguyễn Thị Như Ý dưới sự hướng dẫn của TS. Hoàng Thị Mỹ Lệ tại Khoa Công nghệ số – Trường Đại học Sư phạm Kỹ thuật, Đại học Đà Nẵng (bảo vệ tháng 01/2024).

Đồ án hướng tới các mục tiêu và nhiệm vụ nghiên cứu cụ thể sau:

  1. Nghiên cứu và xây dựng một hệ thống chatbot thông minh có khả năng trích xuất thông tin, xử lý ngôn ngữ tự nhiên để trả lời chính xác các câu hỏi của người dùng dựa trên nội dung tài liệu tải lên.
  2. Tích hợp giao diện người dùng trực quan, hỗ trợ quản lý tài liệu toàn diện bao gồm các thao tác: tải lên, xem nội dung, xem danh sách tài liệu tương tự và xóa tài liệu.
  3. Thiết lập hệ thống tương tác hội thoại tự nhiên, cho phép tạo phiên trò chuyện theo từng tài liệu riêng lẻ hoặc trên toàn bộ kho tài liệu, hỗ trợ đổi tên, xóa và chia sẻ hội thoại với người dùng khác.
  4. Cung cấp tiện ích quản lý ghi chú nghiên cứu (tạo mới, xem, chỉnh sửa, ghim, xóa và phân quyền chia sẻ) kết hợp hệ thống thông báo trạng thái theo thời gian thực nhằm tối ưu hóa năng suất học tập và làm việc.

Đối tượng và phạm vi nghiên cứu của đồ án được xác định rõ ràng:

  • Đối tượng nghiên cứu: Người dùng có nhu cầu đọc, tra cứu, xử lý và nghiên cứu các tài liệu học thuật hoặc nghiệp vụ.
  • Phạm vi nghiên cứu: Ứng dụng triển khai trên nền tảng web hướng đến mọi đối tượng người dùng có nhu cầu nghiên cứu tài liệu, không giới hạn hẹp trong một đơn vị cụ thể.

Cơ sở lý thuyết và phương pháp

Đồ án thiết lập nền tảng khoa học dựa trên các mô hình trí tuệ nhân tạo hiện đại kết hợp các công nghệ phát triển web tiêu chuẩn:

  • Mô hình ngôn ngữ và trí tuệ nhân tạo: Kiến trúc Transformer (theo công bố của Vaswani và cộng sự, 2017); mô hình ngôn ngữ lớn (Large Language Model - LLM) và Generative Pre-trained Transformer (GPT) của OpenAI; kỹ thuật biểu diễn vector không gian (Vector Embedding) phục vụ tìm kiếm ngữ nghĩa (semantic search); khung tích hợp LangChain (phát triển từ tháng 10/2022 bởi Harrison Chase) đóng vai trò trung gian kết nối các luồng xử lý văn bản, mô hình nhúng và mô hình sinh câu trả lời.
  • Công nghệ phát triển phía máy chủ và cơ sở dữ liệu: Ngôn ngữ lập trình Python, nền tảng web framework FastAPI dựa trên tiêu chuẩn gợi ý kiểu dữ liệu Python 3.8+ và OpenAPI (Swagger)/JSON Schema; hệ quản trị cơ sở dữ liệu quan hệ MySQL kết hợp công cụ quản lý MySQL Workbench; công nghệ lưu trữ và tìm kiếm vector FAISS (DirectoryFaiss).
  • Công nghệ giao diện và công cụ hỗ trợ: Ngôn ngữ JavaScript, thư viện ReactJS sử dụng Virtual DOM và JSX kết hợp cơ chế định tuyến React Router; môi trường phát triển tích hợp Visual Studio Code.

Phương pháp nghiên cứu thực tế được tác giả triển khai bao gồm:

  • Phương pháp phân tích - tổng hợp lý thuyết: Thu thập, đọc hiểu và hệ thống hóa các tài liệu chuyên ngành về trí tuệ nhân tạo, cơ chế hoạt động của chatbot, thư viện LangChain, các kiến trúc mô hình ngôn ngữ lớn và kỹ thuật lập trình web hiện đại.
  • Phương pháp thực nghiệm và khảo sát giải pháp: Trải nghiệm thực tế, phân tích ưu nhược điểm của các ứng dụng, website tương tự trên thị trường để xây dựng đặc tả yêu cầu, thiết kế luồng quy trình nghiệp vụ và triển khai hoàn thiện phần mềm.
  • Nguồn dữ liệu: Dữ liệu đầu vào là các tệp tài liệu do người dùng trực tiếp tải lên hệ thống, được xử lý phân tách đoạn văn bản, tạo nhúng vector và lưu trữ cục bộ kèm đường dẫn chỉ mục trong cơ sở dữ liệu.

Thiết kế và triển khai

Hệ thống được xây dựng theo mô hình kiến trúc phân lớp hướng dịch vụ (Client-Server), tách biệt hoàn toàn giữa giao diện người dùng (Frontend) và máy chủ xử lý logic (Backend), giao tiếp qua giao thức HTTP/RESTful API.

Client (ReactJS) <---> Server API (FastAPI) <---> LangChain / OpenAI API (LLM & Embedding)
                                            <---> Cơ sở dữ liệu quan hệ (MySQL)
                                            <---> Chỉ mục Vector (FAISS Directory)

Cơ sở dữ liệu của hệ thống được thiết kế trên hệ quản trị MySQL bao gồm 8 bảng dữ liệu chính, thể hiện mối quan hệ giữa người dùng, tài liệu, phiên hội thoại, ghi chú và thông báo:

Tên bảng Tên trường Kiểu dữ liệu Ràng buộc Mô tả chức năng
Document IdDocument Int Khóa chính Mã định danh tài liệu
Name Varchar(255) Tên tệp tài liệu tải lên
Size Varchar(255) Kích thước tệp tài liệu
Directory Varchar(255) Đường dẫn lưu trữ tài liệu trên máy chủ
DirectoryFaiss Varchar(255) Đường dẫn lưu trữ cơ sở dữ liệu vector FAISS
Created Date Ngày tải tài liệu lên
Deleted Int Cờ đánh dấu trạng thái xóa logic
IdUser Int Khóa ngoài Mã người dùng sở hữu tài liệu
Chatsection IdChatsection Int Khóa chính Mã định danh phiên hội thoại
IdUser Int Khóa ngoài Mã người dùng tạo cuộc trò chuyện
IdDocument Int Khóa ngoài Mã tài liệu liên kết (nếu có)
Name Int Tên hoặc tiêu đề của phiên trò chuyện
Created Date Ngày khởi tạo cuộc trò chuyện
Deleted Int Cờ đánh dấu trạng thái xóa logic
HistoryChatsection IdHistoryChatsection Int Khóa chính Mã định danh từng lượt tương tác trong phiên chat
IdChatsection Int Khóa ngoài Mã phiên trò chuyện chứa tin nhắn
Answer Text Câu hỏi của người dùng nhập vào
Question Text Câu trả lời sinh ra từ bot
Paragraph Text Đoạn văn bản trích xuất liên quan nhất từ tài liệu
Source Varchar(255) Đường dẫn tài liệu chứa đoạn văn trích xuất
Deleted Int Cờ đánh dấu trạng thái xóa logic
Group IdGroup Int Khóa chính Mã nhóm chia sẻ phiên hội thoại
IdUser Int Khóa ngoài Mã người dùng được chia sẻ
IdChatsection Int Khóa ngoài Mã phiên trò chuyện được chia sẻ
Deleted Int Cờ đánh dấu trạng thái xóa logic
Note IdNote Int Khóa chính Mã định danh ghi chú
Title Text Tiêu đề của ghi chú
Content Text Nội dung chi tiết của ghi chú
Pinned Int Cờ đánh dấu trạng thái ghim lên đầu danh sách
IdUser Int Khóa ngoài Mã người dùng tạo ghi chú
Deleted Int Cờ đánh dấu trạng thái xóa logic
NoteShare IdNoteShare Int Khóa chính Mã định danh lượt chia sẻ ghi chú
IdUser Int Khóa ngoài Mã người dùng được chia sẻ ghi chú
IdNote Int Khóa ngoài Mã ghi chú được chia sẻ
IsEdit Int Cờ phân quyền cho phép chỉnh sửa ghi chú
Pinned Int Cờ đánh dấu trạng thái ghim ở phía người nhận
Deleted Int Cờ đánh dấu trạng thái xóa logic
Notify IdNotify Int Khóa chính Mã định danh thông báo
IdUser Int Khóa ngoài Mã người dùng nhận thông báo
Content Text Nội dung hiển thị của thông báo
IsRead Int Cờ đánh dấu người dùng đã đọc thông báo hay chưa
Status Int Trạng thái hiển thị thông báo
IdChatsection Int Khóa ngoài Mã phiên hội thoại liên quan đến thông báo
IdNot Int Khóa ngoài Mã ghi chú liên quan đến thông báo
IdUserShare Int Khóa ngoài Mã người dùng thực hiện hành vi chia sẻ
Deleted Int Cờ đánh dấu trạng thái xóa logic

Hệ thống xử lý nghiệp vụ thông qua 17 trường hợp sử dụng (use case) hoàn chỉnh, kiểm soát chặt chẽ các luồng dữ liệu bình thường, ngoại lệ và rẽ nhánh phát sinh trong quá trình vận hành:

  • Luồng quản lý tài liệu và trích xuất vector: Khi người dùng tải tệp lên qua giao diện, máy chủ FastAPI lưu trữ tệp vào đường dẫn Directory, sau đó LangChain kích hoạt mô hình Embedding để băm nhỏ dữ liệu văn bản thành các vector đại diện và lưu vào DirectoryFaiss.
  • Luồng hội thoại thông minh (Q&A Retrieval): Khi người dùng gửi câu hỏi, hệ thống tiến hành nhúng câu truy vấn thành vector, so khớp khoảng cách không gian trong cơ sở dữ liệu FAISS để tìm ra đoạn văn bản (Paragraph) có độ tương đồng ngữ nghĩa cao nhất. Đoạn trích này cùng ngữ cảnh câu hỏi được truyền qua API của OpenAI GPT để tổng hợp câu trả lời chính xác, kèm đường dẫn trích nguồn (Source).
  • Luồng cộng tác và chia sẻ: Cho phép chia sẻ phiên hội thoại sang người dùng khác thông qua bảng Group, chia sẻ ghi chú kèm cờ kiểm soát quyền chỉnh sửa IsEdit qua bảng NoteShare, đồng thời tự động kích hoạt tạo bản ghi trong bảng Notify để thông báo đến tài khoản nhận.

Nội dung chính theo từng chương

Mở đầu

Phần Mở đầu trình bày tính cấp thiết của đề tài trong kỷ nguyên bùng nổ dữ liệu học thuật; phân tích mục tiêu xây dựng một nền tảng hỗ trợ nghiên cứu tài liệu tích hợp trí tuệ nhân tạo; xác định đối tượng phục vụ là tất cả người dùng có nhu cầu đọc hiểu và tra cứu tài liệu. Chương này cũng phác thảo danh mục công nghệ cốt lõi gồm Python, JavaScript, ReactJS, FastAPI, LangChain, OpenAI GPT, MySQL và cấu trúc 3 chương chính của toàn bộ đồ án tốt nghiệp.

Chương 1. Ngôn ngữ lập trình Python và các công nghệ liên quan

Chương 1 đi sâu vào việc khảo cứu cơ sở lý thuyết, kiến trúc và vai trò của từng công nghệ được lựa chọn trong giải pháp:

  • Python: Trình bày lịch sử phát triển do Guido van Rossum khởi xướng (1991), đặc điểm định kiểu động, cơ chế quản lý bộ nhớ tự động và hệ sinh thái thư viện AI.
  • JavaScript: Giới thiệu vai trò ngôn ngữ kịch bản phía máy khách tạo trải nghiệm động và tương tác trực quan cho người dùng web.
  • LangChain: Phân tích khung làm việc mã nguồn mở (ra mắt 10/2022 bởi Harrison Chase) với các module quản lý chuỗi xử lý (chains), giao diện tương tác với các nhà cung cấp LLM khác nhau và các lớp trừu tượng hóa cho việc nhúng tài liệu, truy vấn.
  • ReactJS: Trình bày cơ chế Virtual DOM giúp tối ưu hóa hiệu năng render giao diện, cú pháp JSX và khả năng module hóa giao diện thành các thành phần (components) tái sử dụng.
  • FastAPI: Giới thiệu framework web hiệu năng cao trên nền tảng Python 3.8+, hỗ trợ chuẩn OpenAPI, tối giản mã nguồn trùng lặp và tăng tốc độ phát triển API.
  • OpenAI GPT & Vector Embedding: Phân tích kiến trúc nền tảng Transformer (2017), kỹ năng học trước (pre-training) trên dữ liệu lớn, cơ chế chuyển đổi văn bản sang không gian vector để thực hiện tìm kiếm ngữ nghĩa theo khoảng cách vector giữa truy vấn và tài liệu.
  • Visual Studio Code và MySQL: Giới thiệu môi trường lập trình tích hợp và hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở phổ biến.

Chương 2. Phân tích thiết kế hệ thống

Chương 2 mô tả chi tiết toàn bộ quá trình phân tích yêu cầu, thiết kế kiến trúc và mô hình dữ liệu:

  • Đặc tả 17 chức năng hệ thống: Đăng nhập, Đăng ký, Đăng xuất, Tải tài liệu lên, Xem nội dung tài liệu, Xóa tài liệu, Tạo cuộc trò chuyện mới với bot, Chỉnh sửa tên cuộc trò chuyện, Chia sẻ cuộc trò chuyện với người dùng khác, Xem nội dung cuộc trò chuyện, Xóa cuộc trò chuyện, Tạo ghi chú, Xem ghi chú, Chỉnh sửa ghi chú, Chia sẻ ghi chú cho người dùng khác, Xóa ghi chú, Xem thông báo.
  • Xây dựng 16 kịch bản use-case chi tiết kèm các luồng phát sinh (ngoại lệ mật khẩu sai, trùng email, đóng popup hủy tác vụ, làm mới dữ liệu).
  • Thiết lập hệ thống 16 sơ đồ hoạt động (Activity Diagram) từ Hình 2.1 đến Hình 2.16 mô tả luồng điều khiển của từng chức năng.
  • Thiết kế chi tiết cơ sở dữ liệu vật lý với 8 bảng dữ liệu quan hệ (Document, Chatsection, HistoryChatsection, Group, Note, NoteShare, Notify và Người dùng) cùng sơ đồ quan hệ thực thể (ERD).

Chương 3. Xây dựng chương trình

Chương 3 trình bày việc hiện thực hóa hệ thống thành phần mềm hoàn chỉnh, minh họa chi tiết qua 27 giao diện người dùng:

  • Nhóm giao diện xác thực: Đăng nhập (Hình 3.1), Đăng ký (Hình 3.2).
  • Nhóm giao diện quản lý tài liệu: Trang danh sách tài liệu (Hình 3.3), Tải tài liệu lên (Hình 3.4, 3.5), Xem nội dung tài liệu (Hình 3.6, 3.7), Xem các tài liệu tương tự (Hình 3.8), Xóa tài liệu (Hình 3.9).
  • Nhóm giao diện hội thoại thông minh: Tạo mới cuộc trò chuyện hỗ trợ chọn một tài liệu hoặc toàn bộ tài liệu (Hình 3.10, 3.11), Chỉnh sửa tên cuộc trò chuyện (Hình 3.12), Xem nội dung cuộc trò chuyện (Hình 3.13, 3.14), Xem nội dung câu trả lời kèm đoạn trích dẫn và liên kết tài liệu nguồn (Hình 3.15, 3.16), Chia sẻ cuộc trò chuyện (Hình 3.17), Xóa cuộc trò chuyện (Hình 3.18).
  • Nhóm giao diện ghi chú và thông báo: Danh sách ghi chú (Hình 3.19), Tạo mới ghi chú (Hình 3.20), Xem nội dung ghi chú (Hình 3.21), Chỉnh sửa ghi chú (Hình 3.22), Xóa ghi chú (Hình 3.23), Chia sẻ ghi chú cho người dùng khác (Hình 3.24, 3.25), Xem thông báo hệ thống (Hình 3.26, 3.27).

Kết luận và hướng phát triển

Đưa ra đánh giá tổng kết về các mục tiêu đã hoàn thành của đồ án tốt nghiệp và xác định các định hướng phát triển trong tương lai nhằm nâng cao năng lực của hệ thống.

Kết quả và đóng góp

Đồ án đã đạt được các kết quả kỹ thuật và đóng góp thực tiễn cụ thể:

  • Xây dựng thành công hệ thống ứng dụng web hoàn chỉnh: Tích hợp mô hình ngôn ngữ lớn (OpenAI GPT) và thư viện LangChain vào bài toán hỗ trợ nghiên cứu tài liệu học thuật với đầy đủ các phân hệ quản lý tài nguyên, tương tác hội thoại, ghi chú và cộng tác.
  • Hiện thực hóa cơ chế trích xuất ngữ cảnh chính xác: Hệ thống cho phép người dùng hỏi đáp trực tiếp trên tài liệu cá nhân, cung cấp câu trả lời tổng hợp kèm theo đoạn văn bản liên quan (Paragraph) và đường dẫn tệp tài liệu gốc (Source), giúp kiểm chứng nguồn tin một cách minh bạch.
  • Tối ưu hóa khả năng làm việc cộng tác: Xây dựng cơ chế chia sẻ phiên hội thoại và ghi chú linh hoạt giữa các tài khoản, hỗ trợ phân quyền chỉnh sửa (IsEdit) và hệ thống thông báo trạng thái tức thời.
  • Đóng góp kỹ thuật: Đồ án đóng góp một mô hình mẫu về việc ứng dụng kết hợp giữa framework hiện đại FastAPI (Python) cho backend xử lý AI/Vector và ReactJS cho frontend tương tác hiệu năng cao trong môi trường giáo dục đại học.

Hạn chế và hướng nghiên cứu tiếp

Căn cứ trên phạm vi và nội dung triển khai được trình bày trong đồ án, một số hạn chế và hướng mở phát triển được xác định:

  • Hạn chế:
    • Hệ thống phụ thuộc vào API của nhà cung cấp bên thứ ba (OpenAI), đòi hỏi kết nối mạng liên tục và chi phí bản quyền API khi vận hành quy mô lớn.
    • Văn bản đồ án chưa trình bày các bảng số liệu đo lường định lượng cụ thể về độ trễ phản hồi (latency), điểm số đánh giá chất lượng câu trả lời (evaluation benchmark) hoặc mức độ chịu tải của hệ thống máy chủ.
  • Hướng phát triển:
    • Tối ưu hóa tốc độ xử lý và cải thiện độ chính xác của chatbot khi xử lý các tài liệu có dung lượng lớn hoặc định dạng cấu trúc phức tạp.
    • Mở rộng hỗ trợ đa dạng các định dạng tệp đầu vào và nâng cấp các thuật toán nhúng văn bản cục bộ nhằm giảm thiểu sự phụ thuộc vào dịch vụ bên ngoài.

Giá trị tham khảo

Đồ án là tài liệu tham khảo có giá trị chuyên môn cao cho:

  • Sinh viên ngành Công nghệ thông tin, Khoa học máy tính, Kỹ thuật phần mềm: Cung cấp tài liệu thực hành hoàn chỉnh về việc tích hợp LangChain, mô hình Embedding, FAISS và OpenAI API vào một ứng dụng web thực tế.
  • Các nhà phát triển hệ thống RAG (Retrieval-Augmented Generation): Cung cấp giải pháp mẫu về thiết kế cơ sở dữ liệu quan hệ (Document, HistoryChatsection, NoteShare, Notify) để quản lý trạng thái phiên chat, đoạn văn trích xuất và quyền chia sẻ tài nguyên.
  • Nội dung đáng tham khảo nhất: Bảng đặc tả kịch bản 17 use case chi tiết và thiết kế cấu trúc các bảng cơ sở dữ liệu tại Chương 2.

Câu hỏi thường gặp

1. Hệ thống sử dụng công nghệ nào để thực hiện tìm kiếm ngữ nghĩa và sinh câu trả lời tự động từ tài liệu?
Hệ thống sử dụng thư viện LangChain để quản lý luồng xử lý, áp dụng mô hình Embedding để chuyển đổi văn bản sang vector lưu trữ trong cơ sở dữ liệu FAISS (DirectoryFaiss) phục vụ tìm kiếm ngữ nghĩa, và sử dụng API mô hình ngôn ngữ lớn OpenAI GPT để tạo câu trả lời dựa trên ngữ cảnh đoạn trích tìm được.

2. Bảng dữ liệu nào lưu trữ chi tiết câu hỏi, câu trả lời và nguồn trích dẫn của các phiên chat?
Bảng HistoryChatsection đảm nhiệm việc lưu trữ chi tiết từng lượt chat, bao gồm các trường: Answer (câu hỏi của người dùng), Question (câu trả lời của bot), Paragraph (đoạn văn liên quan được trích xuất) và Source (đường dẫn tài liệu chứa đoạn văn liên quan).

3. Người dùng có thể tạo phiên hội thoại với chatbot trên những phạm vi tài liệu nào?
Theo kịch bản use-case tại Chương 2 và giao diện tại Chương 3 (Hình 3.10, 3.11), người dùng có thể tùy chọn tạo cuộc trò chuyện với bot dựa trên 1 tài liệu cụ thể đã tải lên hoặc chọn tất cả các tài liệu có trong hệ thống.

4. Cơ chế chia sẻ ghi chú giữa các người dùng được thiết kế và kiểm soát quyền như thế nào?
Chức năng này được quản lý qua bảng NoteShare với các trường khóa ngoài liên kết người nhận (IdUser), ghi chú (IdNote), cờ cho phép quyền chỉnh sửa hay chỉ đọc (IsEdit), cờ ghim ghi chú (Pinned) và phát sinh bản ghi thông báo tương ứng trong bảng Notify.

5. Framework nào được sử dụng cho phần backend của hệ thống và lý do lựa chọn là gì?
FastAPI được chọn làm framework backend cho hệ thống vì đây là framework hiện đại trên nền tảng Python 3.8+, có tốc độ xử lý nhanh (tương đương NodeJS và Go), giảm thiểu lỗi lập trình, tự động tạo tài liệu tương tác chuẩn OpenAPI (Swagger) và dễ dàng tích hợp các thư viện AI trong hệ sinh thái Python.

Kết luận

Đồ án tốt nghiệp "Xây dựng hệ thống chatbot hỗ trợ nghiên cứu tài liệu" của sinh viên Nguyễn Thị Như Ý đã giải quyết thành công bài toán ứng dụng trí tuệ nhân tạo vào hoạt động đọc hiểu và tra cứu học thuật. Thông qua sự kết hợp giữa ReactJS, FastAPI, LangChain, OpenAI GPT và cơ sở dữ liệu MySQL, công trình đã xây dựng một nền tảng web hoàn chỉnh đáp ứng đầy đủ các yêu cầu quản lý tài liệu, hỏi đáp thông minh có trích dẫn nguồn, ghi chú và làm việc cộng tác. Báo cáo đồ án được cấu trúc chặt chẽ từ khảo sát công nghệ, phân tích thiết kế cơ sở dữ liệu đến hiện thực hóa giao diện, mang lại giá trị tham khảo thực tiễn cho các nghiên cứu phát triển ứng dụng xử lý tài liệu thông minh.