Giới thiệu dự án

Sự bùng nổ của kỷ nguyên số và nhu cầu tự động hóa giao tiếp đã biến giao diện đàm thoại (Conversational UI) trở thành phương thức tương tác người - máy trọng yếu. Theo thống kê từ Accenture, hơn 56% doanh nghiệp toàn cầu nhận định chatbot là nhân tố tạo đột phá chiến lược, với khả năng tối ưu hóa tới 90% các tương tác khách hàng định kỳ trong lĩnh vực tài chính - ngân hàng và dịch vụ công. Hàng năm, khoảng 265 tỷ yêu cầu hỗ trợ khách hàng tiêu tốn hơn 1,3 nghìn tỷ USD chi phí vận hành toàn cầu. Tuy nhiên, hơn 30% người dùng sẵn sàng từ bỏ dịch vụ nếu gặp phải trải nghiệm tương tác tự động kém chất lượng, phản hồi sai lệch hoặc độ trễ cao.

Tại Việt Nam, phần lớn các hệ thống trợ lý ảo ngoại nhập (Google Assistant, Siri, Alexa) hoặc các chatbot thương mại trên thị trường gặp phải rào cản lớn về mặt bản địa hóa:

  • Hạn chế xử lý tiếng Việt: Xử lý ngữ nghĩa tiếng Việt đa tầng, cấu trúc từ ghép, từ đồng âm, hiện tượng gõ sai dấu hoặc thiếu dấu thanh chưa đạt độ chính xác cao.
  • Thiếu khả năng nhận thức cảm xúc (Sentiment-awareness): Đa phần hệ thống chỉ so khớp từ khóa tĩnh (Rule-based) hoặc nhận diện ý định đơn giản, không phân tích được sắc thái cảm xúc của người dùng để điều chỉnh phản hồi phù hợp.
  • Thiếu tính đa nền tảng đồng bộ: Thiếu sự kết nối liền mạch giữa nền tảng Web và Ứng dụng di động (Mobile App), đặc biệt là cơ chế đồng bộ hóa dữ liệu ngữ cảnh (Context state) và hệ thống đẩy thông báo thời gian thực (Real-time Push Notifications).

Đồ án tốt nghiệp kỹ sư ngành Kỹ thuật Phần mềm: "Xây dựng Chatbot trợ lý ảo đa nền tảng" (YourChatStarter) của nhóm tác giả Nguyễn Ngọc Đăng và Bề Hải Long (Trường Đại học Công nghệ Thông tin - ĐHQG-HCM) được phát triển nhằm giải quyết triệt để các hạn chế trên. Hệ thống kết hợp mô hình học máy lai (Hybrid Architecture) giữa mạng nơ-ron truyền thẳng (Feed-forward Neural Network - FNN), thuật giải so khớp mờ Wagner-Fischer, cùng kỹ thuật tinh chỉnh (Fine-tuning) mô hình Transformer tiên tiến chuyên sâu cho tiếng Việt (PhoBERTBARTpho).

                              KIẾN TRÚC TỔNG QUAN HỆ THỐNG
+-------------------------------------------------------------------------+
|                  GIAO DIỆN ĐA NỀN TẢNG (CLIENT LAYER)                   |
|   - Web Application: React.js (React Suite, Web Speech API, Push API)   |
|   - Mobile Application: Flutter & Dart (iOS & Android)                  |
+-------------------------------------------------------------------------+
                                    | HTTP/REST & WebSockets
                                    v
+-------------------------------------------------------------------------+
|                 MÁY CHỦ TRUNG TÂM (NODE.JS & EXPRESS.JS)                |
|   - Authentication & Role-Based Access Control (JWT)                    |
|   - Dialog State Tracking & Context Management                          |
|   - Notification Scheduler & Web Push Service (FCM / VAPID)             |
+-------------------------------------------------------------------------+
          |                                              |
          v                                              v
+------------------------------------+   +--------------------------------+
|  BỘ XỬ LÝ NGÔN NGỮ TỰ NHIÊN (NLP)  |   |    DỮ LIỆU & API BÊN THỨ BA    |
| - Intent Recognition (NLP.js FNN)  |   | - MongoDB (User, Logs, Config) |
| - Fuzzy NER (Wagner-Fischer, Trie) |   | - OpenWeatherMap, COVID-19 API |
| - Sentiment Analysis (PhoBERT)     |   | - Stock / Currency Exchange    |
| - NLG Generation (BARTpho)         |   | - Google Knowledge Graph API   |
+------------------------------------+   +--------------------------------+

Mục tiêu dự án

  1. Nghiên cứu và làm chủ lý thuyết NLP/NLU: Hiện thực hóa pipeline toàn diện gồm bài toán thấu hiểu ngôn ngữ tự nhiên (Natural Language Understanding - NLU) và cấu tạo ngôn ngữ tự nhiên (Natural Language Generation - NLG) chuyên biệt cho tiếng Việt.
  2. Xây dựng kiến trúc xử lý ngôn ngữ kết hợp (Hybrid Engine): Tích hợp thư viện NLP.js với các mô hình ngôn ngữ lớn huấn luyện trước (Pre-trained Transformers: PhoBERT, BARTpho) và thuật toán tìm kiếm mờ chuỗi ký tự Levenshtein Distance để tối ưu độ chính xác và hiệu năng tính toán.
  3. Phát triển hệ thống Backend đa dịch vụ: Xây dựng máy chủ trên nền tảng Node.js/Express.js, quản lý phiên hội thoại (Session state), lưu trữ dữ liệu với MongoDB, tích hợp cổng thanh toán trực tuyến và phân quyền người dùng nhiều cấp độ (RBAC).
  4. Phát triển ứng dụng Client đa nền tảng: Cung cấp giao diện Web Responsive (React.js) và Ứng dụng di động (Flutter trên iOS và Android) hỗ trợ giao tiếp qua văn bản, nhận diện giọng nói (Speech-to-Text), tổng hợp âm thanh (Text-to-Speech) và gửi thông báo đẩy theo lịch trình (Scheduled Push Notifications).
  5. Đạt chỉ số vận hành thực tế: Phản hồi tức thời với độ trễ xử lý $\le 300\text{ms}$ đối với các tác vụ tra cứu thông dụng và duy trì độ chính xác nhận diện ý định $\ge 92%$.

Phạm vi và Giới hạn hệ thống

  • Phạm vi chức năng: Hỗ trợ hội thoại thông thường (Small talk), tra cứu dữ liệu thời gian thực (thời tiết, tỷ giá ngoại tệ, chỉ số chứng khoán, dữ liệu dịch tễ COVID-19, dịch thuật đa ngôn ngữ), truy vấn cơ sở tri thức (Wikidata, Google Knowledge Graph), quản lý lịch trình cá nhân và phát âm phản hồi.
  • Giới hạn: Khả năng sinh từ tự do của mô hình NLG phụ thuộc vào miền dữ liệu huấn luyện (Domain-specific), chưa xử lý chuyên sâu các phương ngữ vùng miền quá khác biệt hoặc tiếng lóng biến thể phức tạp.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tiêu chí kỹ thuật CleverBot Google Assistant YourChatStarter (Đề tài)
Cơ chế xử lý đàm thoại Khai phá dữ liệu ngữ cảnh cũ Học sâu kết hợp đồ thị tri thức Hybrid: FNN + Fuzzy Matching + Transformers
Xử lý tiếng Việt chuyên sâu Kém, lỗi ngữ pháp Khá, nhưng khó mở rộng ngữ cảnh riêng Cao (Tối ưu hóa qua PhoBERT, BARTpho, VNCoreNLP)
Phân tích cảm xúc hội thoại Không hỗ trợ Gián tiếp qua giọng điệu Trực tiếp phân tích văn bản qua PhoBERT-base
Khả năng tùy biến nghiệp vụ Đóng hoàn toàn Hạn chế qua Google Actions Toàn quyền kiểm soát mã nguồn Backend & Database
Truy vấn tri thức tổng hợp Không Rất mạnh (Google Ecosystem) Wikidata SPARQL + Google Knowledge Graph API
Hỗ trợ đa nền tảng Web thuần túy Android / iOS / Smart Devices Web (React.js) + Mobile (Flutter iOS/Android)

Ma trận ưu tiên yêu cầu người dùng (MoSCoW Matrix)

  • Must-have (Bắt buộc):
    • Xác thực người dùng (JWT Authentication), mã hóa mật khẩu (bcrypt).
    • Phân loại ý định hội thoại (Intent Classification) với độ trễ thấp.
    • Trích xuất thực thể đặt tên (Named Entity Recognition - NER) kết hợp sửa lỗi chính tả bằng khoảng cách hiệu chỉnh Levenshtein.
    • Tích hợp API thời tiết, tiền tệ, chứng khoán, tin tức thời gian thực.
    • Giao diện chat trực quan trên Web và Mobile.
  • Should-have (Cần có):
    • Phân tích cảm xúc người dùng (Positive, Negative, Neutral) để lưu vết hành vi.
    • Tổng hợp giọng nói (Text-to-Speech) và Nhận dạng giọng nói (Speech-to-Text).
    • Đặt lịch hẹn và gửi Web Push Notification định kỳ.
    • Bảng điều khiển Quản trị viên (Admin Dashboard) phân quyền người dùng.
  • Could-have (Có thể có):
    • Tích hợp cổng thanh toán nâng cấp gói thành viên Premium.
    • Truy vấn đồ thị tri thức mở rộng qua SPARQL Endpoint.
  • Won't-have (Chưa thực hiện ở giai đoạn này):
    • Nhận diện vân tay âm thanh (Audio fingerprinting) định danh bài hát trực tiếp.

Thiết kế hệ thống

graph TD
    subgraph Client_Layer [Giao diện Người dùng]
        WebClient["Web Client (React.js v17.0)"]
        MobileClient["Mobile App (Flutter v2.10)"]
    end

    subgraph API_Gateway [Máy chủ Ứng dụng Node.js/Express.js]
        AuthModule["Authentication & Authorization (JWT)"]
        ChatEngine["Chat Controller & Context Tracker"]
        QueryModule["Information Query Dispatcher"]
        PushService["Notification & Scheduler Engine"]
    end

    subgraph NLP_Pipeline [Hệ thống Xử lý Ngôn ngữ Tự nhiên]
        FNN["NLP.js Engine (Intent Classifier - FNN)"]
        FuzzyMatcher["Wagner-Fischer NER & Trie Dictionary"]
        DL_Service["Python Flask/FastAPI Deep Learning Service"]
        PhoBERT["PhoBERT Sentiment Model"]
        BARTpho["BARTpho NLG Model"]
    end

    subgraph Storage_3rdParty [Lưu trữ & Dịch vụ Ngoài]
        MongoDB[(MongoDB Database)]
        OpenWeather["OpenWeatherMap API"]
        KnowledgeGraph["Google Knowledge Graph / Wikidata"]
        FinanceAPI["Currency & Stock Market APIs"]
    end

    WebClient -->|HTTPS / WSS| AuthModule
    MobileClient -->|HTTPS / WSS| AuthModule
    AuthModule --> ChatEngine
    ChatEngine --> FNN
    ChatEngine --> FuzzyMatcher
    ChatEngine --> DL_Service
    DL_Service --> PhoBERT
    DL_Service --> BARTpho
    ChatEngine --> QueryModule
    ChatEngine --> PushService
    QueryModule --> OpenWeather
    QueryModule --> KnowledgeGraph
    QueryModule --> FinanceAPI
    ChatEngine --> MongoDB

Technology Stack và Phiên bản

Thành phần Công nghệ / Thư viện Phiên bản Vai trò & Rationale kỹ thuật
Backend Runtime Node.js v16.14.2 LTS Xử lý I/O bất đồng bộ Non-blocking, chịu tải cao
Web Framework Express.js v4.17.3 Middleware định tuyến RESTful API linh hoạt, gọn nhẹ
Cơ sở dữ liệu MongoDB / Mongoose v5.0.6 / v6.2.8 NoSQL Schema-less, lưu trữ tài liệu JSON linh hoạt
NLU Core NLP.js v4.22.15 Phân loại ý định tốc độ cao bằng Feed-forward Neural Network
Deep Learning PyTorch / Transformers v1.10.2 / v4.17.0 Tinh chỉnh mô hình vinai/phobert-basevinai/bartpho-word
NLP Tiếng Việt VNCoreNLP v1.1.1 Tách từ (Word Segmentation) và gán nhãn từ loại (POS Tagging)
Frontend Web React.js / React Suite v17.0.2 / v5.8.0 Xây dựng Single Page Application (SPA), Component UI chuẩn hóa
Mobile App Flutter / Dart v2.10.4 / v2.16.2 Biên dịch mã nguồn gốc cho iOS và Android từ một codebase
Task Scheduler Node-cron / Agenda v3.0.0 Quản lý tác vụ chạy ngầm và gửi thông báo theo lịch

Thiết kế Cơ sở dữ liệu (Database Schemas)

Hệ thống triển khai trên MongoDB với các Collection chính:

// Collection: Users
{
  "_id": "ObjectId('623b12f49c0d123456789abc')",
  "username": "dang_nguyen",
  "email": "dang.nguyen@example.com",
  "password": "$2b$10$e8wY0u8G3Jq1nKpR.6dDye9f0...",
  "role": "PREMIUM_USER",
  "preference": {
    "voice_output": true,
    "theme": "dark",
    "language": "vi"
  },
  "created_at": "2022-03-23T10:00:00.000Z"
}

// Collection: Sessions & Contexts
{
  "_id": "ObjectId('623b13509c0d123456789abd')",
  "user_id": "ObjectId('623b12f49c0d123456789abc')",
  "active_context": {
    "intent": "ask_weather",
    "entities": {
      "location": "Hà Nội",
      "date_time": "2022-03-24"
    },
    "lifespan": 2
  },
  "messages": [
    {
      "sender": "user",
      "content": "Thời tiết Hà Nội ngày mai thế nào?",
      "sentiment": "NEUTRAL",
      "timestamp": "2022-03-23T10:05:12.000Z"
    },
    {
      "sender": "bot",
      "content": "Ngày mai tại Hà Nội trời có mưa nhỏ, nhiệt độ dao động từ 18°C đến 22°C.",
      "type": "weather_card",
      "timestamp": "2022-03-23T10:05:12.215Z"
    }
  ]
}

Đặc tả API Endpoints chính

Endpoint Method Quyền truy cập Mô tả chức năng Request Payload / Response Data
/api/v1/auth/login POST Public Đăng nhập hệ thống, cấp mã JWT {"username": "...", "password": "..."} $\rightarrow$ Token
/api/v1/chat/message POST User Gửi tin nhắn và nhận phản hồi Chatbot {"message": "...", "context": {...}} $\rightarrow$ Bot Response
/api/v1/query/weather GET User Lấy thông tin thời tiết theo địa điểm Query Params: ?location=HaNoi $\rightarrow$ Weather JSON
/api/v1/query/finance GET User Tra cứu tỷ giá ngoại tệ / mã chứng khoán Query Params: ?symbol=VCB $\rightarrow$ Stock metrics
/api/v1/notifications POST User Đăng ký lịch nhận thông báo đẩy {"time": "...", "payload": "...", "sub": {...}}
/api/v1/admin/users GET Admin Quản lý danh sách và cấp bậc tài khoản Pagination: ?page=1&limit=20 $\rightarrow$ User List

Phương pháp luận (Methodology)

Dự án áp dụng mô hình phát triển Agile/Scrum tinh chỉnh, phân bổ trong tổng thời gian 15 tuần (17/02/2022 – 11/06/2022) gồm 5 giai đoạn trọng tâm:

TIẾN ĐỘ THỰC HIỆN DỰ ÁN (15 TUẦN)
========================================================================================
Giai đoạn 1 (Tuần 1-2):   [=== Khảo sát, Refactor & Đặc tả yêu cầu ===]
Giai đoạn 2 (Tuần 3-5):        [=== R&D NLP, Transformers & Xây dựng PoC ===]
Giai đoạn 3 (Tuần 6-7):             [=== Thiết kế Kiến trúc, UI/UX & API ===]
Giai đoạn 4 (Tuần 8-13):                 [=== Lập trình Hệ thống & Huấn luyện Model ===]
Giai đoạn 5 (Tuần 14-15):                               [=== Kiểm thử & Đóng gói ===]
========================================================================================
  • Giai đoạn 1 (Tuần 1 - Tuần 2): Tinh chỉnh mã nguồn nền tảng, xác định yêu cầu nghiệp vụ, hoàn thiện đề cương chi tiết.
  • Giai đoạn 2 (Tuần 3 - Tuần 5): Nghiên cứu mô hình ngôn ngữ PhoBERT, BARTpho, cấu trúc NLU của NLP.js; khảo sát Browser Web APIs và xây dựng Proof-of-Concept (PoC).
  • Giai đoạn 3 (Tuần 6 - Tuần 7): Thiết kế sơ đồ kiến trúc hệ thống, cơ sở dữ liệu MongoDB, thiết kế Wireframe/UI trên Web và Mobile, đặc tả RESTful APIs.
  • Giai đoạn 4 (Tuần 8 - Tuần 13): Hiện thực hóa mã nguồn Backend (Node.js), Frontend (React.js), Mobile (Flutter); huấn luyện và tích hợp các bộ suy luận học máy.
  • Giai đoạn 5 (Tuần 14 - Tuần 15): Kiểm thử đơn vị (Unit Testing), kiểm thử hiệu năng (Stress testing), đánh giá UAT, đóng gói triển khai và hoàn thiện báo cáo khóa luận.

Implementation và kết quả

Quá trình phát triển và thuật toán cốt lõi

1. Thuật toán so khớp mờ Wagner-Fischer cho trích xuất thực thể (Fuzzy NER)

Để xử lý các lỗi chính tả phổ biến trong tiếng Việt (gõ sai ký tự, lỗi bộ gõ Telex), hệ thống sử dụng thuật toán Quy hoạch động Wagner-Fischer tính khoảng cách Levenshtein giữa chuỗi nguồn $S$ có độ dài $m$ và chuỗi đích $T$ có độ dài $n$:

$$\operatorname{lev}(S, T) = D(m, n)$$

Trong đó ma trận quy hoạch động $D(i, j)$ được khởi tạo và tính toán:

$$D(i, 0) = i, \quad D(0, j) = j$$

$$D(i, j) = \begin{cases} D(i-1, j-1) & \text{nếu } S[i] = T[j] \ \min \begin{cases} D(i-1, j) + 1 & \text{(Xóa)} \ D(i, j-1) + 1 & \text{(Thêm)} \ D(i-1, j-1) + 1 & \text{(Thay thế)} \end{cases} & \text{nếu } S[i] \neq T[j] \end{cases}$$

Độ phức tạp thuật toán: Không gian bộ nhớ $O(m \cdot n)$, thời gian thực thi $O(m \cdot n)$. Để tăng tốc độ tra cứu từ điển thực thể (Địa danh, Tên cổ phiếu, Tiền tệ), hệ thống lưu trữ danh từ vựng dưới dạng cây tiền tố (Trie data structure), giảm thời gian tìm kiếm mờ trung bình xuống $O(L \cdot |\Sigma|)$ với $L$ là độ dài từ khóa tối đa.

// Cài đặt thuật toán Wagner-Fischer với tối ưu không gian O(n)
function calculateLevenshteinDistance(source, target) {
  const m = source.length;
  const n = target.length;
  if (m === 0) return n;
  if (n === 0) return m;

  let previousRow = Array.from({ length: n + 1 }, (_, i) => i);
  let currentRow = new Array(n + 1);

  for (let i = 1; i <= m; i++) {
    currentRow[0] = i;
    for (let j = 1; j <= n; j++) {
      const substitutionCost = source[i - 1].toLowerCase() === target[j - 1].toLowerCase() ? 0 : 1;
      currentRow[j] = Math.min(
        previousRow[j] + 1,                     // Deletion
        currentRow[j - 1] + 1,                 // Insertion
        previousRow[j - 1] + substitutionCost  // Substitution
      );
    }
    previousRow = [...currentRow];
  }
  return currentRow[n];
}

2. Pipeline xử lý phân loại ý niệm và phân tích cảm xúc

  • Ý định hội thoại: Sử dụng mô hình FNN đa tầng (Multi-layer Feed-forward Network) trong NLP.js, sử dụng biểu diễn One-hot và Bag-of-Words (BoW) sau khi chuẩn hóa ký tự tiếng Việt.
  • Phân tích cảm xúc: Fine-tune mô hình vinai/phobert-base trên tập dữ liệu tiếng Việt UIT-VSFC (Vietnamese Students' Feedback Corpus).
# Pipeline Fine-tuning PhoBERT cho tác vụ phân tích cảm xúc (PyTorch)
import torch
import torch.nn as nn
from transformers import AutoModel, AutoTokenizer

class PhoBERTSentimentClassifier(nn.Module):
    def __init__(self, n_classes=3, dropout_rate=0.3):
        super(PhoBERTSentimentClassifier, self).__init__()
        self.bert = AutoModel.from_pretrained("vinai/phobert-base")
        self.dropout = nn.Dropout(p=dropout_rate)
        self.fc = nn.Linear(self.bert.config.hidden_size, n_classes)
        
    def forward(self, input_ids, attention_mask):
        outputs = self.bert(input_ids=input_ids, attention_mask=attention_mask)
        pooled_output = outputs[1]  # [CLS] token representation
        x = self.dropout(pooled_output)
        logits = self.fc(x)
        return logits

Kiểm thử và Đánh giá hiệu năng

                  KẾT QUẢ PHÂN BỔ TRẠNG THÁI KIỂM THỬ
+-------------------------------------------------------------------------+
| [██████████████████████████████████████████████████████░░░] 96.6% Pass  |
| Đã thực hiện: 232 Test Cases | Đạt: 224 | Lỗi nhẹ: 8 | Nghiêm trọng: 0  |
+-------------------------------------------------------------------------+

Hệ thống được kiểm thử tự động (Unit Tests, Integration Tests bằng JestSupertest) kết hợp kiểm thử tải với Apache JMeter:

Danh mục kiểm thử Số lượng kịch bản Tỷ lệ vượt qua (Pass rate) Kết quả / Độ trễ trung bình
Authentication & RBAC 24 100% Mã hóa Token an toàn, chặn truy cập trái phép
NLU Intent Recognition 85 96.4% Độ chính xác đạt 94.2% trên 12 miền ý định
Fuzzy NER Extraction 45 95.5% Bắt chính xác thực thể sai khác $\le 2$ ký tự
Sentiment Analysis (PhoBERT) 30 93.3% F1-score đạt 0.89 trên tập dữ liệu test
External API Integration 28 100% Fallback an toàn khi API bên thứ ba gặp sự cố
Cross-Platform Sync (Push) 20 95.0% Thông báo đẩy đến Client trễ $< 1.2\text{s}$

Đánh giá tải và Hiệu năng hệ thống (Load Testing)

  • Thông lượng (Throughput): Đạt 450 requests/second (RPS) trên môi trường máy chủ 4 vCPU, 8GB RAM.
  • Độ trễ phản hồi (Response Latency):
    • Truy vấn dữ liệu cục bộ / Intent thuần: $45\text{ms} - 80\text{ms}$.
    • Truy vấn kèm gọi API bên thứ ba (Weather, Stocks): $180\text{ms} - 280\text{ms}$.
    • Xử lý Deep Learning qua Transformers (PhoBERT): $210\text{ms}$ (sử dụng GPU Acceleration).

Đổi mới và đóng góp

  1. Kiến trúc Hybrid NLU tối ưu cho tài nguyên thực tế: Thay vì phụ thuộc hoàn toàn vào các mô hình Transformer cồng kềnh gây độ trễ lớn, hệ thống kết hợp FNN siêu nhẹ của NLP.js cho tác vụ phân loại ý định tức thời ($<50\text{ms}$), đồng thời sử dụng PhoBERT độc lập cho bài toán phân tích cảm xúc chuyên sâu.
  2. Khả năng chịu lỗi chính tả tiếng Việt (Typo-resilient NER): Ứng dụng giải thuật Wagner-Fischer kết hợp từ điển cấu trúc Trie giúp giải quyết triệt để bài toán nhận dạng thực thể khi người dùng nhập liệu sai dấu, viết tắt hoặc gõ nhầm trên bàn phím di động, tăng tỷ lệ trích xuất đúng thực thể lên thêm 28.4% so với việc so khớp Regex cứng nhắc.
  3. Đồng bộ hóa trải nghiệm đa nền tảng: Tích hợp hoàn chỉnh giữa Web Speech API, Web Push API và Flutter Engine, cho phép chuyển giao phiên hội thoại liền mạch giữa máy tính và thiết bị cầm tay.
  4. Đánh giá học thuật xuất sắc: Khóa luận được Hội đồng chuyên môn Khoa Công nghệ Phần mềm - Trường Đại học Công nghệ Thông tin chấm điểm 10/10 (Xuất sắc) bởi Cán bộ hướng dẫn và 9.5/10 (Giỏi) bởi Cán bộ phản biện.

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng thực tế

  • Trợ lý thông tin cá nhân: Hỗ trợ người dùng tra cứu nhanh tỷ giá hối đoái, diễn biến chứng khoán, tin tức dịch bệnh và dự báo thời tiết bằng các câu lệnh tự nhiên ngắn gọn.
  • Tự động hóa chăm sóc khách hàng đa kênh: Doanh nghiệp vừa và nhỏ có thể tái sử dụng khung kiến trúc YourChatStarter để tích hợp vào website bán hàng, quản lý đơn hàng và giải đáp thắc mắc người dùng 24/7.
  • Cổng thông tin và nhắc việc tự động: Lập lịch hẹn định kỳ, tự động gửi Web Push Notification thông báo nhắc việc hoặc cảnh báo thời tiết tới điện thoại và máy tính cá nhân.
QUY TRÌNH TRIỂN KHAI HỆ THỐNG TRÊN MÔI TRƯỜNG PRODUCTION
+-------------------------------------------------------------------------+
| [Code Repository: Git] --> [CI/CD Pipeline: GitHub Actions]              |
|                                       |                                 |
|                                       v (Build & Dockerize)             |
| +---------------------------------------------------------------------+ |
| | Docker Container 1: Web Frontend (Nginx Reverse Proxy - Port 80/443)| |
| | Docker Container 2: Node.js/Express API Gateway (PM2 - Port 5000)   | |
| | Docker Container 3: Python DL Microservice (Gunicorn - Port 8000)  | |
| | Docker Container 4: MongoDB Instance (Replica Set - Port 27017)     | |
| +---------------------------------------------------------------------+ |
+-------------------------------------------------------------------------+

Hướng dẫn cài đặt và Triển khai (Deployment Guide)

1. Yêu cầu hệ thống tối thiểu

  • Phần cứng: 2 vCPU, 4GB RAM (Khuyến nghị 4 vCPU, 8GB RAM nếu kích hoạt đồng thời mô hình Deep Learning), 20GB SSD.
  • Môi trường phần mềm: Node.js $\ge$ 16.14.0, Python $\ge$ 3.8, MongoDB $\ge$ 5.0, Flutter SDK $\ge$ 2.10.0.

2. Khởi chạy hệ thống

# 1. Khởi động Cơ sở dữ liệu MongoDB
mongod --dbpath /var/lib/mongodb --fork --logpath /var/log/mongodb.log

# 2. Cài đặt và chạy Backend API
cd yourchatstarter-backend
npm install --production
npm run build
pm2 start dist/server.js --name "chat-backend" -i max

# 3. Chạy Python Deep Learning Service (PhoBERT)
cd ../yourchatstarter-dl
pip install -r requirements.txt
gunicorn -w 2 -b 127.0.0.1:8000 app:app --daemon

# 4. Khởi chạy Web Client
cd ../yourchatstarter-web
npm install && npm run build
# Cấu hình file build qua Nginx Web Server

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Sự phụ thuộc vào API bên thứ ba: Tính chính xác và tính sẵn sàng của một số luồng thông tin (thời tiết, chứng khoán, tin tức) phụ thuộc vào đường truyền mạng và giới hạn tần suất (Rate limit) của các nhà cung cấp API công cộng.
  • Tập dữ liệu huấn luyện (Training Data): Tập mẫu câu sinh từ tự nhiên (NLG) cho mô hình BARTpho còn ở quy mô vừa phải, đôi khi xảy ra hiện tượng lặp từ trong các tình huống hội thoại phức tạp.

Hướng phát triển tiếp theo

  • Tích hợp mô hình ngôn ngữ lớn (LLMs & RAG): Nâng cấp bộ sinh phản hồi bằng việc tích hợp kỹ thuật Retrieval-Augmented Generation (RAG) kết hợp với các mô hình LLM mã nguồn mở (như Gemma, Llama-3 tiếng Việt) để mở rộng tri thức hội thoại không giới hạn.
  • Nhận diện giọng nói nâng cao: Tích hợp mô hình Whisper trực tiếp trên máy chủ để nhận dạng giọng nói đa vùng miền chuẩn xác hơn so với Web Speech API mặc định.

Đối tượng hưởng lợi

  • Sinh viên & Học viên CNTT: Nguồn tài liệu tham khảo hoàn chỉnh (227 trang báo cáo, 58 bảng số liệu, 78 hình vẽ kiến trúc) về cách tổ chức đồ án phần mềm chuẩn mực từ đặc tả Use-Case, sơ đồ lớp UML đến lập trình triển khai.
  • Kỹ sư Phần mềm & AI Engineers: Nắm vững phương pháp tích hợp kiến trúc Hybrid giữa công nghệ Web truyền thống (Node.js/React) và mô hình học sâu hiện đại (PyTorch/Transformers).
  • Doanh nghiệp & Startup: Giải pháp tham khảo tối ưu chi phí để xây dựng hệ thống trợ lý ảo độc lập, làm chủ hoàn toàn dữ liệu và bảo mật thông tin.
  • Nhà nghiên cứu NLP: Cung cấp dữ liệu thực nghiệm so sánh giữa thuật toán so khớp mờ truyền thống và mô hình Transformer trên tập dữ liệu tiếng Việt.

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

1. Yêu cầu kỹ thuật tối thiểu để triển khai hệ thống là gì?

Hệ thống yêu cầu máy chủ chạy hệ điều hành Linux (Ubuntu 20.04 LTS trở lên), tối thiểu 2 vCPU và 4GB RAM cho các dịch vụ cơ bản (Node.js, MongoDB, React Web). Nếu triển khai trọn gói mô hình Deep Learning PhoBERT, khuyến nghị sử dụng máy chủ có tối thiểu 8GB RAM hoặc GPU (NVIDIA T4 trở lên) để đảm bảo thời gian phản hồi dưới $250\text{ms}$.

2. Khả năng mở rộng (Scalability) của hệ thống được xử lý như thế nào khi lượng người dùng tăng cao?

Hệ thống được thiết kế theo kiến trúc Stateless Backend:

  • Node.js API Gateway có thể scale ngang (Horizontal scaling) dễ dàng bằng PM2 Cluster Mode hoặc Kubernetes Pods.
  • MongoDB hỗ trợ Replica Sets và Sharding khi lưu lượng tin nhắn lớn.
  • Mô hình Deep Learning được cô lập thành Microservice riêng biệt, có thể scale độc lập trên các cụm tính toán GPU chuyên dụng.

3. Hệ thống có thể tích hợp với các nền tảng mạng xã hội có sẵn (Facebook Messenger, Telegram, Zalo) không?

Có. Nhờ thiết kế tách biệt hoàn toàn tầng điều khiển hội thoại (Chat Controller), nhà phát triển chỉ cần bổ sung các Webhook Adapter tương ứng để chuyển tiếp tin nhắn từ Facebook Graph API hoặc Telegram Bot API về máy chủ trung tâm mà không cần thay đổi logic xử lý NLU cốt lõi.

4. Chi phí vận hành và bảo trì hệ thống ước tính như thế nào?

Nhờ tận dụng tối đa các công nghệ mã nguồn mở (Node.js, Flutter, MongoDB Community Edition, HuggingFace Models), chi phí bản quyền phần mềm là 0 VNĐ. Chi phí hạ tầng điện toán đám mây (Cloud Server) ước tính từ 15 - 30 USD/tháng cho quy mô dưới 50.000 yêu cầu/ngày.

5. Cơ chế xử lý khi người dùng nhập câu hỏi sai chính tả hoặc câu hỏi không có trong tập huấn luyện?

Hệ thống vận hành theo cơ chế 3 lớp phòng vệ:

  1. Lớp 1: Thuật toán Wagner-Fischer đối soát khoảng cách Levenshtein để tự động nắn chỉnh từ khóa về đúng từ điển thực thể.
  2. Lớp 2: Mô hình FNN phân loại xác suất ý định; nếu độ tin cậy (Confidence Score) $< 0.65$, hệ thống tự động chuyển sang bộ xử lý dự phòng (Fallback Handler).
  3. Lớp 3: Hệ thống chuyển hướng tra cứu sang cơ sở tri thức mở Wikidata hoặc Google Knowledge Graph để trích xuất câu trả lời tổng quát nhất.

Kết luận

Đồ án "Xây dựng Chatbot trợ lý ảo đa nền tảng" (YourChatStarter) đã giải quyết trọn vẹn bài toán xây dựng một hệ thống đàm thoại thông minh đa nền tảng, đáp ứng xuất sắc cả về mặt lý thuyết học máy lẫn kỹ thuật công nghệ phần mềm thực tế. Bằng việc kết hợp sáng tạo giữa mô hình nơ-ron truyền thẳng FNN, thuật giải so khớp mờ Levenshtein và các mô hình Transformer tiếng Việt hiện đại (PhoBERT, BARTpho), sản phẩm mang lại tốc độ phản hồi vượt trội cùng khả năng thấu hiểu ngữ cảnh bản địa chính xác.

Toàn bộ tài liệu thiết kế, quy trình kiểm thử và mã nguồn là nền tảng giá trị cho sinh viên, kỹ sư và các tổ chức đang tìm kiếm giải pháp phát triển trợ lý ảo chuyên nghiệp, phục vụ hiệu quả cho cộng đồng người dùng Việt Nam.