Giới thiệu dự án
Ngành du lịch Việt Nam nói chung và Thành phố Hồ Chí Minh (Sài Gòn) nói riêng đóng vai trò mũi nhọn trong cơ cấu kinh tế dịch vụ, đóng góp trực tiếp vào GDP và tạo việc làm cho hàng triệu lao động. Theo thống kê của Sở Du lịch TP.HCM, thành phố đón hàng chục triệu lượt khách nội địa và quốc tế mỗi năm. Tuy nhiên, hạ tầng chuyển đổi số trong hỗ trợ thông tin du lịch vẫn tồn tại nhiều rào cản. Du khách đối mặt với ma trận dữ liệu phân tán trên các công cụ tìm kiếm (Google, Bing) và mạng xã hội, dẫn đến tình trạng quá tải thông tin, khó xác thực tính chính xác về địa điểm, giá cả, thời gian mở cửa và trải nghiệm ẩm thực đặc thù.
[Khách du lịch] ──(Natural Language Query)──> [Giao diện Messenger/Mobile]
│
▼
[Phản hồi đa phương tiện] <──(JSON/Action)── [Hệ thống Chatbot Du Lịch Ở Đâu (Rasa)]
Vấn đề thực tế (Problem Statement)
Các kênh hỗ trợ truyền thống (tổng đài viên, quầy hướng dẫn trực tiếp, website tĩnh) bộc lộ nhiều hạn chế nghiêm trọng:
- Độ trễ phản hồi cao: Quá tải vào mùa cao điểm, không đảm bảo hỗ trợ 24/7 tức thì.
- Chi phí vận hành lớn: Chi phí nhân sự trực hotline và bảo trì hệ thống chăm sóc khách hàng truyền thống tăng theo quy mô.
- Thiếu tính cá nhân hóa: Các website du lịch truyền thống cung cấp thông tin một chiều, không cho phép truy vấn ngôn ngữ tự nhiên nhiều điều kiện phức tạp (ví dụ: "tìm khách sạn quận 1 dưới 500k có đánh giá 4 sao").
Mục tiêu dự án
- Nghiên cứu và ứng dụng framework Rasa Open Source cùng kỹ thuật Xử lý ngôn ngữ tự nhiên (NLP/NLU) chuyên sâu cho tiếng Việt.
- Xây dựng trợ lý ảo đàm thoại thông minh mang tên "Du Lịch Ở Đâu", có khả năng phân loại ý định (Intent Classification) và trích xuất thực thể (Entity Extraction) chính xác từ câu hỏi của du khách.
- Thiết kế hệ thống cơ sở dữ liệu phi quan hệ tối ưu hóa cho thông tin du lịch TP.HCM (địa danh, ẩm thực, khách sạn).
- Phát triển hệ sinh thái đa nền tảng gồm Backend REST API, ứng dụng quản trị Web (ReactJS) và ứng dụng di động cho người dùng cuối (Flutter), tích hợp webhook qua Facebook Messenger.
- Đạt độ chính xác phân lớp ý định trên 90% và thời gian phản hồi (Response Latency) trung bình dưới 1.0 giây.
Phạm vi và giới hạn
- Phạm vi dữ liệu: Tập trung toàn diện vào địa bàn TP. Hồ Chí Minh với 3 danh mục chính: Địa điểm tham quan (di tích, giải trí, danh lam), Địa điểm ẩm thực (món ăn đặc sản, quán ăn theo quận), Khách sạn (phân khúc giá, vị trí quận, tiêu chuẩn sao) và tiện ích mở rộng (thời tiết, hỏi đáp nhanh).
- Giới hạn kỹ thuật: Hệ thống vận hành theo mô hình miền đóng (Closed Domain) kết hợp truy xuất thông tin (Retrieval-based) và điền khung dữ liệu (Frame-based/Slot Filling); chưa tích hợp cổng thanh toán trực tiếp hay mô hình sinh ngôn ngữ tự do (Generative Model).
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Để giải quyết bài toán tư vấn du lịch tự động, các giải pháp trên thị trường được đánh giá và so sánh toàn diện:
| Tiêu chí |
Cổng thông tin tĩnh (Web/App truyền thống) |
Chatbot theo luật (Rule-based / Menu-driven) |
Nền tảng SaaS Cloud (Google Dialogflow) |
Hệ thống Rasa NLU & Core tự chủ (Giải pháp đề xuất) |
| Xử lý ngôn ngữ tự nhiên |
Không hỗ trợ (Form-based) |
Khớp từ khóa đơn giản (Keyword matching) |
NLU nâng cao dựa trên Cloud AI |
NLU/NLG chuyên sâu, toàn quyền tùy biến Pipeline |
| Quyền riêng tư & Dữ liệu |
Lưu trữ cục bộ |
Phụ thuộc bên thứ ba |
Dữ liệu đẩy lên máy chủ đám mây của Google |
Triển khai On-Premise/Private Server, bảo mật 100% dữ liệu |
| Chi phí vận hành |
Cố định cho Server |
Thấp |
Tính phí theo số lượng API calls (Pay-as-you-go) |
Miễn phí bản quyền mã nguồn mở, tối ưu chi phí hạ tầng |
| Khả năng mở rộng nghiệp vụ |
Thấp, phải viết lại UI |
Trung bình, luồng tĩnh dễ gãy |
Cao |
Rất cao nhờ Python Custom Actions & REST hooks |
Ma trận ưu tiên yêu cầu người dùng (MoSCoW)
- Must-Have (Bắt buộc): Nhận diện ý định tra cứu du lịch, ẩm thực, khách sạn; trích xuất thực thể (quận, mức giá, số sao, loại địa điểm); phản hồi đàm thoại theo ngữ cảnh; Web Admin CRUD dữ liệu địa điểm.
- Should-Have (Nên có): Tích hợp API dự báo thời tiết 3-7 ngày tới; hỗ trợ lọc đa điều kiện đồng thời; giao diện ứng dụng di động Flutter mượt mà.
- Could-Have (Có thể có): Tích hợp nút chia sẻ vị trí bản đồ (Google Maps/Mapbox SDK); giao diện chatbot dạng popup nhúng website.
- Won't-Have (Chưa thực hiện): Đặt phòng thanh toán trực tuyến qua ngân hàng/Visa; điều hướng giọng nói thời gian thực.
Thiết kế hệ thống
Kiến trúc tổng thể hệ thống
Hệ thống được thiết kế theo mô hình Microservices tách biệt giữa tầng hội thoại thông minh (Conversational Layer), tầng nghiệp vụ (Business Logic Layer) và tầng giao diện người dùng (Presentation Layer).
+-------------------------------------------------------------------------+
| PRESENTATION LAYER |
| +-----------------------+ +-------------------+ +-----------------+ |
| | Flutter Mobile Client | | ReactJS Dashboard | | FB Messenger | |
| +-----------+-----------+ +---------+---------+ +--------+--------+ |
+---------------│------------------------│---------------------│----------+
│ HTTPS │ Axios/REST │ Webhook
+---------------▼------------------------▼---------------------▼----------+
| GATEWAY & BACKEND LAYER |
| +-----------------------------------------------------------------+ |
| | Node.js / LoopBack 4 REST API Server (Port 3000) | |
| +--------------------------------+--------------------------------+ |
+------------------------------------│------------------------------------+
│ Database Driver
+------------------------------------▼------------------------------------+
| DATA STORAGE LAYER |
| +-----------------------------------------------------------------+ |
| | MongoDB Database Engine (Port 27017) | |
| | Collections: PlaceTravel | PlaceEating | Hotel | User | |
| +-----------------------------------------------------------------+ |
+-------------------------------------------------------------------------+
▲
│ Query & Data Extraction
+------------------------------------│------------------------------------+
| AI & CONVERSATION ENGINE |
| +-----------------------------+ +-------------------------------+ |
| | Rasa Core & NLU (Port 5005)|<--->| Python Action Server (Pt 5055)| |
| | - DIETClassifier | | - Rasa SDK Custom Actions | |
| | - CRF Entity Extractor | | - Business Logic Rules | |
| +-----------------------------+ +-------------------------------+ |
+-------------------------------------------------------------------------+
Technology Stack và phiên bản chi tiết
- AI & NLU Core:
Rasa Open Source v2.8.x, Rasa SDK v2.8.x, Python 3.8.10, Spacy-vi / Underthesea (Tokenization tiếng Việt).
- Backend API:
Node.js v14.17.x, LoopBack Framework 4, Express.js, Axios.
- Database:
MongoDB Community Server v4.4, Mongoose ODM.
- Frontend Web Admin:
React.js v17.0.2, Ant Design (antd) v4.16.x, Redux Thunk.
- Mobile Application:
Flutter Framework v2.2.x, Dart SDK v2.13.x, Provider State Management.
Thiết kế cơ sở dữ liệu (Database Schema)
Cơ sở dữ liệu MongoDB lưu trữ cấu trúc dạng Document BSON, phân tách rõ ràng thành 3 collections chính:
// Collection: PlaceTravel (Địa điểm du lịch)
{
"_id": { "$oid": "60c72b2f9b1d8b2bad000001" },
"name": "Chợ Bến Thành",
"review": "Biểu tượng văn hóa lịch sử lâu đời của Sài Gòn",
"address": "Đường Lê Lợi, Phường Bến Thành",
"location": { "lat": 10.7725, "lng": 106.6980 },
"openTime": "06:00 - 19:00",
"district": "Quận 1",
"type": "market", // market, historic, park, entertainment
"rating": 4.2,
"isHot": true,
"images": ["https://cdn.dulichodau.vn/places/chobenthanh_1.jpg"],
"website": "https://chobenthanh.org.vn"
}
// Collection: Hotel (Khách sạn lưu trú)
{
"_id": { "$oid": "60c72b2f9b1d8b2bad000002" },
"name": "Rex Hotel Saigon",
"address": "141 Nguyễn Huệ, Bến Nghé",
"district": "Quận 1",
"star": 5,
"priceMin": 2200000,
"priceMax": 6500000,
"rating": 4.5,
"phone": "02838292185",
"amenities": ["wifi", "pool", "breakfast", "bar"],
"location": { "lat": 10.7769, "lng": 106.7009 }
}
// Collection: PlaceEating (Địa điểm ăn uống)
{
"_id": { "$oid": "60c72b2f9b1d8b2bad000003" },
"name": "Cơm Tấm Ba Ghiền",
"foodName": "Cơm tấm sườn bì chả",
"address": "84 Đặng Văn Ngữ, Phường 10",
"district": "Quận Phú Nhuận",
"priceRange": "40.000 - 110.000 VND",
"openTime": "07:30 - 21:00",
"category": "street_food",
"rating": 4.4
}
Phương pháp luận (Methodology)
Dự án áp dụng mô hình Agile/Scrum với chu kỳ 4 Sprint kéo dài trong 16 tuần:
- Sprint 1 (Tuần 1-4): Thu thập tập ngữ liệu tiếng Việt ngành du lịch; thiết kế ontology và sơ đồ cơ sở dữ liệu; cài đặt môi trường Rasa & LoopBack.
- Sprint 2 (Tuần 5-8): Xây dựng NLU Pipeline; huấn luyện mô hình phân lớp Intent và trích xuất Entity; viết Custom Actions tương tác database.
- Sprint 3 (Tuần 9-12): Xây dựng giao diện Dashboard ReactJS (CRUD), lập trình Mobile Client bằng Flutter; kết nối qua REST API và Webhook Messenger.
- Sprint 4 (Tuần 13-16): Kiểm thử toàn diện (Unit Testing, Integration Testing, UAT); tinh chỉnh siêu tham số (Hyperparameter Tuning) của model Rasa; tối ưu hóa độ trễ truy vấn.
Implementation và kết quả
Quy trình phát triển (Development Process)
Cấu hình Pipeline Rasa NLU (config.yml)
Hệ thống sử dụng pipeline đa tầng tối ưu hóa cho việc xử lý cấu trúc từ ghép tiếng Việt:
language: vi
pipeline:
- name: WhitespaceTokenizer
- name: RegexFeaturizer
- name: LexicalSyntacticFeaturizer
- name: CountVectorsFeaturizer
analyzer: "word"
min_ngram: 1
max_ngram: 2
- name: CountVectorsFeaturizer
analyzer: "char_wb"
min_ngram: 1
max_ngram: 4
- name: DIETClassifier
epochs: 150
constrain_similarities: true
- name: EntitySynonymMapper
- name: ResponseSelector
epochs: 100
policies:
- name: MemoizationPolicy
- name: RulePolicy
- name: TEDPolicy
max_history: 5
epochs: 100
constrain_similarities: true
Xử lý Custom Action trong Rasa SDK (actions.py)
Đoạn mã dưới đây minh họa quá trình trích xuất slots và truy vấn API lọc khách sạn theo ngân sách và vị trí:
from typing import Any, Text, Dict, List
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
import requests
class ActionSearchHotel(Action):
def name(self) -> Text:
return "action_search_hotel"
def run(self, dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
district = tracker.get_slot("district")
max_price = tracker.get_slot("price_max")
star_rating = tracker.get_slot("star_rating")
# Chuẩn hóa tham số truy vấn
api_url = "http://localhost:3000/api/hotels/search"
payload = {}
if district:
payload["district"] = district
if max_price:
payload["maxPrice"] = float(max_price)
if star_rating:
payload["star"] = int(star_rating)
try:
response = requests.post(api_url, json=payload, timeout=5)
hotels = response.json()
if not hotels:
dispatcher.utter_message(
text=f"Rất tiếc, không tìm thấy khách sạn phù hợp tại {district or 'TP.HCM'} với yêu cầu của bạn."
)
return []
message = f"Tìm thấy {len(hotels)} khách sạn phù hợp:\n"
for idx, h in enumerate(hotels[:3], 1):
message += f"{idx}. {h['name']} ({h['star']} sao)\n- Địa chỉ: {h['address']}\n- Giá từ: {h['priceMin']:,} VNĐ\n"
dispatcher.utter_message(text=message)
except Exception as e:
dispatcher.utter_message(text="Có lỗi xảy ra khi kết nối máy chủ dữ liệu. Vui lòng thử lại sau.")
return []
Kiểm thử và đánh giá (Testing & Validation)
Đánh giá mô hình NLU (Intent & Entity Metrics)
Dữ liệu huấn luyện gồm 45 Intents với hơn 1.800 mẫu câu tiếng Việt và 12 loại Entities. Đánh giá kiểm thử chéo 5-Fold Cross Validation cho kết quả:
| Thành phần kiểm thử |
Precision |
Recall |
F1-Score |
Số lượng mẫu (Support) |
Intent: find_hotel |
0.94 |
0.92 |
0.93 |
240 |
Intent: find_travel_place |
0.92 |
0.95 |
0.93 |
310 |
Intent: find_food |
0.91 |
0.90 |
0.90 |
280 |
Intent: ask_weather |
0.98 |
0.96 |
0.97 |
150 |
Entity: district |
0.95 |
0.94 |
0.94 |
420 |
Entity: price_limit |
0.89 |
0.88 |
0.88 |
190 |
Entity: star_rating |
0.96 |
0.95 |
0.95 |
160 |
| Toàn bộ hệ thống (Average) |
0.93 |
0.92 |
0.92 |
1,850 |
Ma trận nhầm lẫn (Confusion Matrix - Top Intents)
find_hotel find_place find_food ask_weather
find_hotel [ 221 10 8 1 ]
find_place [ 8 295 6 1 ]
find_food [ 9 14 252 5 ]
ask_weather [ 0 2 4 144 ]
Benchmark hiệu năng hệ thống
- Thời gian phản hồi NLU trung bình: 120ms (chạy trên CPU Intel Core i7-10750H, 16GB RAM).
- Thời gian phản hồi toàn trình (End-to-End Latency): 450ms - 850ms (bao gồm gọi webhook REST API và truy vấn MongoDB).
- Tải đồng thời (Concurrency): Đáp ứng ổn định 150 yêu cầu đồng thời (RPS) không xảy ra suy hao kết nối.
Kết quả đạt được
- Hoàn thành 100% các tính năng đề ra:
- Tra cứu địa điểm theo danh mục, vị trí quận/huyện, độ nổi tiếng (Hot places).
- Tra cứu khách sạn theo ngân sách (dưới/trên mức giá quy định), đánh giá sao.
- Tra cứu món ăn đặc sản, địa điểm ăn uống theo khu vực.
- Tích hợp API OpenWeatherMap kiểm tra thời tiết thời gian thực và dự báo 3-7 ngày.
- Giao diện quản trị Web (ReactJS/Ant Design): Cung cấp đầy đủ dashboard quản trị số lượng bản ghi, thêm mới, sửa đổi, xóa dữ liệu địa điểm du lịch, khách sạn và ẩm thực.
- Đánh giá trải nghiệm người dùng (UAT): Thử nghiệm thực tế trên nhóm 60 sinh viên và du khách nội địa, đạt điểm đánh giá mức độ hài lòng trung bình 4.6 / 5.0.
Đổi mới và đóng góp
- Ứng dụng mô hình Hybrid Dialogue Management cho tiếng Việt: Kết hợp linh hoạt giữa Finite State Automata (FSA) cho các luồng đàm thoại định hướng (form-oriented) và Frame-based (Slot Filling) cho các câu hỏi phức hợp nhiều điều kiện, giải quyết triệt để vấn đề mất ngữ cảnh khi người dùng cung cấp thông tin không theo thứ tự.
- Cơ chế tiền xử lý ngôn ngữ tùy chỉnh: Xây dựng từ điển đồng nghĩa (Entity Synonym Mapper) và bộ tiền xử lý chuẩn hóa phương ngữ, từ viết tắt, tiếng lóng du lịch Sài Gòn (ví dụ: Q1, q.1, quận nhất -> Quận 1; ks, ksan -> khách sạn; 3 xị -> 300.000 VNĐ).
- Tiết kiệm chi phí triển khai: Thay vì tiêu tốn chi phí định kỳ cho các nền tảng SaaS thương mại, hệ thống mã nguồn mở Rasa + LoopBack + MongoDB cho phép tự lưu trữ (Self-hosted) với chi phí hạ tầng giảm đến 80%, kiểm soát tuyệt đối dữ liệu người dùng.
Ứng dụng thực tế và triển khai
Kịch bản sử dụng trong đời sống (Real-World Use Cases)
- Kịch bản 1 - Tìm điểm ăn uống theo khu vực: Du khách gửi tin nhắn: "Ở quận 3 có món gì ngon giá bình dân không bot?" -> NLU trích xuất
intent: find_food, district: Quận 3, price_level: bình dân -> Trả về danh sách quán ngon kèm địa chỉ, mức giá và giờ mở cửa.
- Kịch bản 2 - Lọc nơi lưu trú theo ngân sách: Du khách hỏi: "Tìm cho mình khách sạn 4 sao quận 1 dưới 1 triệu 5" -> Trợ lý ảo thực hiện slot filling (
district: Quận 1, star: 4, price_max: 1500000) và truy vấn trả về các khách sạn Rex, Continental kèm hotline đặt phòng.
[Du khách] ──> "Tìm khách sạn 4 sao Q1 dưới 1.5 triệu"
│
▼
[Rasa NLU] ──> Trích xuất: {district: "Quận 1", star: 4, price_max: 1500000}
│
▼
[Action Server] ──> Gọi API Node.js/LoopBack ──> Truy vấn MongoDB
│
▼
[Chatbot] <── Trả về danh sách Card thông tin khách sạn kèm hình ảnh & hotline
Hướng dẫn triển khai (Deployment Architecture)
Hệ thống được đóng gói thông qua Docker Compose, chạy trên hệ điều hành Linux (Ubuntu 20.04 LTS / Debian):
# 1. Khởi chạy cụm MongoDB và Backend REST API
cd backend-api && npm install && npm run build
pm2 start dist/index.js --name "tourism-api"
# 2. Khởi chạy Rasa Action Server
cd rasa-chatbot
rasa run actions --port 5055 &
# 3. Khởi chạy Rasa Core/NLU Webhook Endpoint
rasa run --enable-api --cors "*" --port 5005 --endpoints endpoints.yml
Phân tích hiệu quả kinh tế (Cost-Benefit Analysis & ROI)
- Chi phí ban đầu: Đầu tư cấu hình máy chủ Cloud VPS (4 Core CPU, 8GB RAM, 100GB SSD) ~ 600.000 - 800.000 VNĐ/tháng.
- Hiệu quả thu được: Tự động hóa giải đáp tới 75% lượng câu hỏi lặp lại của du khách, giảm thời gian tra cứu từ trung bình 15 phút xuống còn 30 giây, giúp các đơn vị xúc tiến du lịch tiết kiệm từ 2-3 nhân sự trực tổng đài hỗ trợ.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Dữ liệu huấn luyện giới hạn trong phạm vi địa giới hành chính TP. Hồ Chí Minh, chưa mở rộng ra các tỉnh lân cận (Bình Dương, Đồng Nai, Vũng Tàu).
- Chưa hỗ trợ xử lý giọng nói (Voice-to-Text) hai chiều và sinh câu trả lời tự do bằng các mô hình ngôn ngữ lớn (LLMs).
- Phụ thuộc vào dữ liệu cập nhật tĩnh trên MongoDB; chưa có cơ chế tự động cào dữ liệu (Web Scraping) giá phòng thời gian thực từ Agoda/Booking.
Hướng phát triển trong tương lai
- Tích hợp các mô hình nền tảng Generative AI (như Gemma, GPT) qua mô hình RAG (Retrieval-Augmented Generation) để đối thoại tự nhiên hơn trong các tình huống đàm thoại mở (Open-Domain).
- Mở rộng định vị GPS trên ứng dụng Flutter để tự động gợi ý danh lam thắng cảnh xung quanh người dùng trong bán kính 1-3km.
- Kết nối cổng thanh toán VNPay/MoMo để hoàn tất quy trình đặt tour và phòng nghỉ ngay trên giao diện đàm thoại.
Đối tượng hưởng lợi
+-----------------------------------------------+
| HỆ SINH THÁI HƯỞNG LỢI |
+-----------------------------------------------+
/ | | \
/ | | \
[Sinh viên/Nghiên cứu] [Kỹ sư phần mềm] [Cơ quan du lịch] [Khách du lịch]
- Tài liệu NLP tiếng Việt - Kiến trúc microservice - Giảm 75% chi phí - Tiết kiệm 90% thời
- Quy trình train Rasa - Flutter/LoopBack vận hành tư vấn gian tìm kiếm thông tin
- Sinh viên & Học viên CNTT: Nguồn tài liệu thực nghiệm hoàn chỉnh về quy trình xây dựng Chatbot NLU tiếng Việt, từ xử lý ngữ liệu, thiết kế pipeline đến triển khai kiến trúc đa nền tảng.
- Kỹ sư phát triển phần mềm: Bộ khung tham chiếu về cách tích hợp Rasa Open Source với Backend Node.js/LoopBack và Mobile Framework Flutter.
- Doanh nghiệp lữ hành & Cơ quan quản lý du lịch: Giải pháp chuyển đổi số dịch vụ khách hàng với chi phí đầu tư tối thiểu, nâng cao hình ảnh du lịch chuyên nghiệp và hiện đại.
- Khách du lịch: Công cụ hỗ trợ 24/7 tức thì, chính xác và hoàn toàn miễn phí, mang lại trải nghiệm khám phá Sài Gòn tiện lợi và an toàn.
Câu hỏi thường gặp
1. Yêu cầu phần cứng và môi trường để triển khai hệ thống là gì?
Máy chủ cần tối thiểu CPU 2 Core, 4GB RAM (khuyến nghị 4 Core, 8GB RAM để huấn luyện mô hình NLU), ổ cứng 40GB SSD; hệ điều hành Linux (Ubuntu 20.04/22.04 LTS), cài đặt sẵn Python 3.8+, Node.js 14+, MongoDB 4.4+ và Docker Engine.
2. Khả năng mở rộng quy mô (Scalability) của hệ thống như thế nào?
Hệ thống thiết kế theo kiến trúc Stateless cho cả Node.js API và Rasa Server, cho phép mở rộng theo chiều ngang (Horizontal Scaling) bằng cách nhân bản container và điều hướng tải qua Nginx Reverse Proxy kết hợp Redis Caching cho session người dùng.
3. Làm thế nào để tích hợp Chatbot vào các hệ thống sẵn có của doanh nghiệp?
Rasa cung cấp REST Webhook API chuẩn hóa (POST /webhooks/rest/webhook). Doanh nghiệp chỉ cần gửi payload dạng JSON chứa sender_id và message, hệ thống sẽ trả về phản hồi đàm thoại để hiển thị trực tiếp lên Website, Zalo OA hoặc ứng dụng CRM nội bộ.
4. Quy trình bảo trì và cập nhật dữ liệu huấn luyện diễn ra như thế nào?
Khi phát hiện câu hỏi bot không hiểu (Fallback Intent), quản trị viên ghi nhận nhật ký (Log), bổ sung mẫu câu vào tệp nlu.yml, sau đó chạy lệnh rasa train để tái huấn luyện mô hình mà không ảnh hưởng đến cơ sở dữ liệu địa điểm hiện có trên MongoDB.
5. Chi phí đầu tư và thời gian hoàn vốn (ROI) ước tính?
Với việc sử dụng 100% công nghệ mã nguồn mở (Rasa, Flutter, ReactJS, MongoDB Community), chi phí bản quyền là 0 VNĐ. Chi phí duy nhất là thuê Cloud Server (khoảng 8-10 triệu VNĐ/năm). Thời gian thu hồi vốn dự kiến từ 3-6 tháng thông qua việc cắt giảm chi phí nhân sự tổng đài và tối ưu hóa chuyển đổi dịch vụ du lịch.
Kết luận
Đồ án tốt nghiệp "Chatbot Tiếng Việt Hỗ Trợ Du Lịch" (Du Lịch Ở Đâu) của nhóm sinh viên Trường Đại học Công nghệ Thông tin - ĐHQG TP.HCM đã giải quyết bài toán tư vấn du lịch nội đô bằng giải pháp công nghệ đàm thoại AI. Thông qua việc làm chủ framework Rasa Open Source, thiết kế NLU Pipeline chuyên sâu cho tiếng Việt, kết hợp hạ tầng Node.js/LoopBack, MongoDB và giao diện đa kênh (ReactJS, Flutter, Facebook Messenger), dự án không chỉ hoàn thành mục tiêu học thuật mà còn mang lại giá trị thực tiễn cao cho ngành du lịch TP. Hồ Chí Minh. Đây là nền tảng vững chắc để mở rộng phát triển thành trợ lý ảo du lịch thông minh toàn diện trên phạm vi cả nước.