Giới thiệu dự án
Thương mại điện tử (E-Commerce) tại Việt Nam ghi nhận tốc độ tăng trưởng kép vượt bậc trên 20%/năm, đưa quy mô thị trường bán lẻ trực tuyến vượt mốc 16 tỷ USD. Trong phân khúc thiết bị kỹ thuật số và điện tử tiêu dùng (smartphone, laptop, tablet, linh kiện máy tính), sự đa dạng về thông số kỹ thuật (chipset, dung lượng RAM/ROM, pin, công nghệ màn hình) khiến người tiêu dùng gặp khó khăn lớn trong việc ra quyết định mua sắm (Information Overload). Tại các cửa hàng truyền thống, nhân viên tư vấn đóng vai trò định hướng khách hàng; tuy nhiên, trên không gian số, phần lớn các website bán hàng vừa và nhỏ vẫn chỉ dừng lại ở các bộ lọc thuộc tính thô sơ hoặc danh mục khuyến mãi tĩnh, thiếu khả năng cá nhân hóa trải nghiệm người dùng theo thời gian thực.
Đồ án tốt nghiệp chuyên ngành Hệ thống Thông tin của nhóm tác giả Lê Võ Đình Kha và Lê Phúc Khang (Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM, dưới sự hướng dẫn chuyên môn của TS. Cao Thị Nhạn) giải quyết trực diện bài toán trên thông qua đề tài: "Xây dựng trang web kinh doanh thiết bị điện tử tích hợp khuyến nghị sản phẩm".
+-----------------------------------------------------------------------------+
| VẤN ĐỀ VÀ MỤC TIÊU DỰ ÁN |
+-----------------------------------------------------------------------------+
| Pain Points: |
| - Bùng nổ thông tin sản phẩm công nghệ (Information Overload) |
| - Hệ số thưa thớt dữ liệu đánh giá cao (Data Sparsity > 98%) |
| - Độ trễ phản hồi hệ thống khi tích hợp mô hình Machine Learning |
| - Định kiến đánh giá chủ quan giữa các người dùng (User Rating Bias) |
+-----------------------------------------------------------------------------+
| Mục tiêu nghiên cứu: |
| 1. Xây dựng nền tảng E-commerce chuẩn Microservices bằng Golang & MySQL |
| 2. Tích hợp Recommendation Engine độc lập bằng Python (NumPy, Pandas) |
| 3. Tối ưu thuật toán Item-item Collaborative Filtering bằng Adjusted Cosine|
| 4. Đạt chỉ số sai số RMSE < 0.92 và giảm thời gian phản hồi API < 120ms |
+-----------------------------------------------------------------------------+
Mục tiêu dự án
- Nghiên cứu và phát triển hệ thống E-commerce hiệu năng cao: Ứng dụng kiến trúc Microservices tách biệt giữa luồng xử lý nghiệp vụ bán hàng (Golang) và luồng phân tích dữ liệu khuyến nghị (Python).
- Xây dựng Recommendation Engine đa phương thức: Kết hợp phương pháp Lọc cộng tác theo sản phẩm (Item-item Collaborative Filtering - CF) và Lọc theo nội dung (Content-based Filtering - CB) nhằm tối ưu khả năng cá nhân hóa danh mục sản phẩm gợi ý.
- Giải quyết vấn đề định kiến đánh giá (User Rating Bias): Ứng dụng biến thể khoảng cách Cosine hiệu chỉnh (Adjusted Cosine Similarity) thay thế Cosine tiêu chuẩn để triệt tiêu độ lệch điểm số giữa người dùng dễ tính và khó tính.
- Đo lường và tối ưu hóa hiệu suất: Đánh giá độ chính xác của mô hình dự đoán bằng chỉ số sai số Root Mean Squared Error (RMSE) và tối ưu độ trễ truy vấn API nghiệp vụ.
Phạm vi và giới hạn
- Phạm vi đối tượng: Nền tảng phục vụ khách hàng tìm kiếm, đặt mua thiết bị điện tử cá nhân hóa và quản trị viên quản lý kho bãi, danh mục, đơn hàng.
- Tập dữ liệu thử nghiệm: Dữ liệu lịch sử đánh giá thực tế thu thập từ thị trường thương mại điện tử Việt Nam (thang điểm 1–5 sao), tập trung vào các nhóm hàng điện thoại thông minh, máy tính bảng và phụ kiện số.
- Giới hạn: Hệ thống tập trung tối ưu vào dữ liệu phản hồi tường minh (Explicit Feedback - số sao rating) kết hợp đặc trưng kỹ thuật; chưa tích hợp luồng dữ liệu phản hồi ngầm định thời gian thực quy mô lớn (Implicit Feedback như thời gian dừng clickstream, di chuột).
Phân tích và thiết kế giải pháp
Phân tích hiện trạng và khảo sát đối thủ
Khảo sát 04 doanh nghiệp bán lẻ và sàn thương mại điện tử hàng đầu tại thị trường Việt Nam (Thế Giới Di Động, FPT Shop, Điện Máy Chợ Lớn, Tiki) cho thấy sự phân hóa rõ nét trong việc ứng dụng công nghệ khuyến nghị:
| Nền tảng |
Kiến trúc / Quy trình mua hàng |
Phương thức khuyến nghị hiện diện |
Ưu điểm |
Nhược điểm / Khoảng trống kỹ thuật |
| Thế Giới Di Động |
Monolithic / Không bắt buộc Auth |
- Gợi ý từ khóa tìm kiếm - Phụ kiện thường mua cùng - Gợi ý hôm nay (Rule-based) |
UI/UX tối ưu, tốc độ tải nhanh, chốt đơn tức thì không cần đăng nhập. |
Danh mục khuyến nghị mang tính chất quảng bá đồng loạt, thiếu tính cá nhân hóa theo từng User Profile. |
| FPT Shop |
Hybrid / Cho phép Guest Checkout |
- Sản phẩm tìm kiếm nhiều - Sản phẩm cùng tầm giá |
Danh mục phân loại rõ ràng, hỗ trợ tra cứu cửa hàng và trả góp tốt. |
Chưa tích hợp mô hình Machine Learning tự động học hành vi tương tác sâu. |
| Điện Máy Chợ Lớn |
RDBMS-centric / Bắt buộc Auth |
- Gợi ý theo phân khúc giá - Sản phẩm liên quan cùng danh mục |
Khai thác thông tin khảo sát sở thích người dùng khi đăng ký tài khoản. |
Thuật toán gợi ý chủ yếu dựa trên bộ lọc thuộc tính cứng, khả năng mở rộng (scalability) thấp. |
| Tiki.vn |
Microservices / Hybrid Auth |
- Khuyến nghị "Gợi ý hôm nay" - Sản phẩm tương tự (Similarity) - Tích hợp Tiki Chat |
Xử lý Big Data mạnh, kết hợp hành vi duyệt web và lịch sử mua sắm. |
Chi phí vận hành hạ tầng cực lớn, khó áp dụng cho các doanh nghiệp quy mô vừa và nhỏ. |
+-----------------------------------------------------------------------------+
| ƯU TIÊN YÊU CẦU HỆ THỐNG THEO MÔ HÌNH MOSCOW |
+-----------------------------------------------------------------------------+
| [MUST HAVE] |
| - Xác thực JWT, Quản lý Catalog, Giỏ hàng, Đặt hàng đa bước (Checkout) |
| - Engine Item-item CF tính ma trận Adjusted Cosine Similarity |
| - CRUD Danh mục, Thuộc tính biến thể (Options), Quản lý Kho, Đánh giá 1-5* |
+-----------------------------------------------------------------------------+
| [SHOULD HAVE] |
| - Content-based Recommender sử dụng TF-IDF trên Metadata sản phẩm |
| - Khuyến nghị "Sản phẩm mua kèm", "Sản phẩm tương tự cùng phân khúc" |
| - Trang Admin trực quan hóa báo cáo doanh thu và trạng thái đơn hàng |
+-----------------------------------------------------------------------------+
| [COULD HAVE] |
| - Tích hợp cổng thanh toán trực tuyến qua Sandbox Gateway |
| - Gửi thông báo đẩy (Push Notification) cập nhật trạng thái giao vận |
+-----------------------------------------------------------------------------+
| [WON'T HAVE (Phase 1)] |
| - Deep Learning Matrix Factorization (Neural Collaborative Filtering) |
| - Chatbot AI tương tác đàm thoại tự nhiên theo thời gian thực |
+-----------------------------------------------------------------------------+
Thiết kế kiến trúc hệ thống
Hệ thống được thiết kế theo mô hình Microservices phân tán, đảm bảo tính độc lập và khả năng mở rộng linh hoạt:
+-----------------------------------+
| Client Tier (SPA / Responsive) |
| HTML5 / Bootstrap / JS ES6 |
+-----------------+-----------------+
| (HTTPS / JSON)
v
+-----------------------------------+
| API Gateway / Reverse Proxy |
+--------+-----------------+--------+
| |
(Port 8080/REST) | | (Port 5000/REST)
v v
+--------------------------------+ +--------------------------------+
| Core Business Microservice | | Recommendation Service |
| (Golang v1.18 + Echo + GORM)| | (Python v3.9 + NumPy/Pandas)|
+---------------+----------------+ +---------------+----------------+
| |
| (SQL Queries) | (Read Only Sync)
+-----------------+-----------------+
v
+-----------------------------------+
| Database Tier: MySQL v8.0 |
| (InnoDB Engine, UTF8MB4, Indexes)|
+-----------------------------------+
Technology Stack và Versioning
- Backend Core: Golang
v1.18 với Echo Framework v4.9, GORM v1.23. Lý do: Khả năng biên dịch nhị phân trực tiếp (compiled binary), tiêu tốn cực ít bộ nhớ RAM, cơ chế xử lý đồng thời siêu nhẹ (Goroutines và Channels) đáp ứng hàng nghìn I/O concurrent requests mà không bị nghẽn (blocking).
- Recommendation Service: Python
v3.9.12, NumPy v1.22.4, Pandas v1.4.2, Scipy v1.8.1. Lý do: Cung cấp hệ sinh thái đại số tuyến tính vector hóa mạnh mẽ, tối ưu hóa các phép tính ma trận mật độ cao và thưa.
- Database Engine: MySQL
v8.0.28 sử dụng Storage Engine InnoDB hỗ trợ chuẩn ACID, tối ưu hóa chỉ mục B-Tree trên các trường Foreign Key và Unique Index.
- Frontend Layer: HTML5, CSS3, JavaScript ES6+, Bootstrap
v5.1.3.
Thiết kế cơ sở dữ liệu quan hệ (Database Schema)
Hệ thống chuẩn hóa cơ sở dữ liệu quan hệ với 16 bảng cốt lõi. Một số thực thể trọng tâm:
user_account: Lưu thông tin định danh, mật khẩu băm (Bcrypt), phân quyền RBAC (Role: Customer, Admin).
product: id (PK, BigInt), name (Varchar), sku (Varchar, Unique), price (Decimal), stock_quantity (Int), is_active (TinyInt).
product_rating: id (PK), user_id (FK), product_id (FK), rating_score (TinyInt 1-5), review_text (Text), created_at (Timestamp). Khóa Unique phức hợp (user_id, product_id) ngăn chặn hành vi spam đánh giá nhiều lần trên một sản phẩm.
sale_order & sale_order_item: Quản lý giao dịch, trạng thái đơn hàng (Pending, Confirmed, Shipping, Completed, Cancelled).
-- DDL Schema định nghĩa thực thể đánh giá phục vụ Recommender Engine
CREATE TABLE `product_rating` (
`id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`user_id` BIGINT UNSIGNED NOT NULL,
`product_id` BIGINT UNSIGNED NOT NULL,
`rating_score` TINYINT UNSIGNED NOT NULL CHECK (`rating_score` BETWEEN 1 AND 5),
`review_text` TEXT NULL,
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY `idx_user_product_rating` (`user_id`, `product_id`),
FOREIGN KEY (`user_id`) REFERENCES `user_account`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`product_id`) REFERENCES `product`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
Thiết kế RESTful API
Hệ thống cung cấp danh mục endpoints tiêu chuẩn hóa:
POST /api/v1/auth/login: Xác thực tài khoản, trả về JWT Access Token.
GET /api/v1/products: Truy vấn danh sách sản phẩm có phân trang (page, limit), sắp xếp (sort) và lọc đa điều kiện (category_id, min_price, max_price).
GET /api/v1/recommendations/personalized: Truy vấn danh sách sản phẩm gợi ý cá nhân hóa cho User hiện tại (gọi nội bộ từ Python Service).
GET /api/v1/recommendations/related/:product_id: Lấy top $K$ sản phẩm tương đồng cao nhất theo đặc trưng nội dung.
Implementation và kết quả
Chi tiết giải thuật khuyến nghị (Core Algorithms)
1. Ma trận tiện ích (Utility Matrix) và Chuẩn hóa dữ liệu
Cho tập hợp $U = {u_1, u_2, ..., u_m}$ gồm $m$ người dùng và $I = {i_1, i_2, ..., i_n}$ gồm $n$ sản phẩm. Ma trận tiện ích $Y \in \mathbb{R}^{m \times n}$ chứa các giá trị đánh giá $r_{u,i} \in [1, 5]$. Do mỗi người dùng chỉ đánh giá một lượng nhỏ sản phẩm, ma trận $Y$ có độ thưa (sparsity) vượt mức $95%$.
2. Công thức khoảng cách Cosine hiệu chỉnh (Adjusted Cosine Similarity)
Trong lọc cộng tác theo sản phẩm (Item-item CF), việc sử dụng Cosine thông thường giữa hai vector cột sản phẩm $i$ và $j$ bỏ qua sự khác biệt trong thang đánh giá của từng cá nhân (người dùng khắt khe chỉ cho 3 sao cho sản phẩm tốt, trong khi người dùng dễ tính luôn cho 5 sao). Adjusted Cosine Similarity khắc phục điều này bằng cách trừ đi điểm trung bình đánh giá $\bar{R}_u$ của chính người dùng $u$:
$$s(i, j) = \text{sim}(i, j) = \frac{\sum_{u \in U_{i,j}} (R_{u,i} - \bar{R}u)(R{u,j} - \bar{R}u)}{\sqrt{\sum{u \in U_{i,j}} (R_{u,i} - \bar{R}u)^2} \cdot \sqrt{\sum{u \in U_{i,j}} (R_{u,j} - \bar{R}_u)^2}}$$
Trong đó $U_{i,j}$ là tập hợp tất cả người dùng đã đánh giá cả hai sản phẩm $i$ và $j$.
3. Dự đoán điểm đánh giá (Rating Prediction)
Điểm dự đoán $\hat{R}_{u,i}$ của người dùng $u$ cho sản phẩm chưa đánh giá $i$ được suy diễn từ tập $K$ sản phẩm lân cận gần nhất ($N(u, i)$) mà người dùng $u$ đã từng cho điểm:
$$\hat{R}{u,i} = \frac{\sum{j \in N(u,i)} s(i, j) \cdot R_{u,j}}{\sum_{j \in N(u,i)} |s(i, j)|}$$
import numpy as np
import pandas as pd
def calculate_adjusted_cosine_similarity(rating_matrix: pd.DataFrame) -> pd.DataFrame:
"""
Tính ma trận Adjusted Cosine Similarity giữa các Items.
rating_matrix: DataFrame có index là user_id, columns là product_id.
"""
# Tính rating trung bình của từng user (chỉ tính trên các item đã rate)
user_mean = rating_matrix.mean(axis=1)
# Chuẩn hóa ma trận bằng cách trừ điểm trung bình của user
normalized_matrix = rating_matrix.sub(user_mean, axis=0)
items = rating_matrix.columns
n_items = len(items)
sim_matrix = np.zeros((n_items, n_items))
for i in range(n_items):
for j in range(i, n_items):
item_i = items[i]
item_j = items[j]
# Lấy tập người dùng đồng thời đánh giá cả 2 item
common_users = rating_matrix[[item_i, item_j]].dropna().index
if len(common_users) < 2:
sim_matrix[i, j] = 0.0
sim_matrix[j, i] = 0.0
continue
u_i = normalized_matrix.loc[common_users, item_i].values
u_j = normalized_matrix.loc[common_users, item_j].values
norm_i = np.linalg.norm(u_i)
norm_j = np.linalg.norm(u_j)
if norm_i == 0 or norm_j == 0:
similarity = 0.0
else:
similarity = np.dot(u_i, u_j) / (norm_i * norm_j)
sim_matrix[i, j] = similarity
sim_matrix[j, i] = similarity
return pd.DataFrame(sim_matrix, index=items, columns=items)
package controllers
import (
"net/http"
"github.com/labstack/echo/v4"
"gorm.io/gorm"
)
type ProductController struct {
DB *gorm.DB
}
// GetProductDetails retrieves product info along with associated category and options
func (pc *ProductController) GetProductDetails(c echo.Context) error {
productID := c.Param("id")
var product struct {
ID uint `json:"id"`
Name string `json:"name"`
Price float64 `json:"price"`
Stock int `json:"stock_quantity"`
CategoryID uint `json:"category_id"`
Description string `json:"description"`
}
result := pc.DB.Table("product").
Select("id, name, price, stock_quantity, category_id, description").
Where("id = ? AND is_active = ?", productID, 1).
First(&product)
if result.Error != nil {
return c.JSON(http.StatusNotFound, echo.Map{"error": "Product not found"})
}
return c.JSON(http.StatusOK, echo.Map{
"status": "success",
"data": product,
})
}
Kết quả thực nghiệm và đánh giá kiểm thử
Mô hình được huấn luyện và kiểm thử chéo (Cross-Validation) trên tập dữ liệu đánh giá sản phẩm thiết bị điện tử. Độ chính xác dự báo được đo lường bằng chỉ số sai số trung bình bình phương (RMSE):
$$\text{RMSE} = \sqrt{\frac{1}{|D_{\text{test}}|} \sum_{(u,i) \in D_{\text{test}}} (r_{u,i} - \hat{r}_{u,i})^2}$$
| Phương pháp giải thuật |
Kích thước tập lân cận ($K$) |
RMSE trước tiền xử lý |
RMSE sau tiền xử lý & Lọc nhiễu |
Mức cải thiện (%) |
| Standard Cosine Similarity |
$K = 10$ |
1.1420 |
1.0215 |
+10.55% |
| Standard Cosine Similarity |
$K = 20$ |
1.0950 |
0.9840 |
+10.13% |
| Adjusted Cosine Similarity |
$K = 10$ |
0.9860 |
0.8920 |
+9.53% |
| Adjusted Cosine Similarity |
$K = 20$ |
0.9540 |
0.8650 |
+9.32% |
+-----------------------------------------------------------------------------+
| KẾT QUẢ ĐO LƯỜNG HIỆU NĂNG TẢI HỆ THỐNG (BENCHMARK) |
+-----------------------------------------------------------------------------+
| Công cụ kiểm thử: Apache JMeter & Postman Runner |
| Kịch bản: 1,000 Concurrent Users (Thời gian dốc Ramp-up: 10s) |
+-----------------------------------------------------------------------------+
| - Throughput (Golang Core API): 3,850 Requests/second |
| - P95 Response Time (Product Detail API): 42 ms |
| - P95 Response Time (Personalized Recommendation API): 118 ms |
| - Tỷ lệ lỗi (HTTP 5xx Error Rate): 0.00% |
| - Tiêu thụ bộ nhớ RAM (Golang Web Service): ~45 MB |
| - Tiêu thụ bộ nhớ RAM (Python Recommendation Service): ~280 MB |
+-----------------------------------------------------------------------------+
Đổi mới và đóng góp
- Khắc phục nhược điểm của Cosine truyền thống bằng Adjusted Cosine: Đồ án chứng minh trên dữ liệu thực nghiệm rằng khoảng cách Cosine chuẩn bị sai lệch lớn khi các vector có cùng hướng nhưng khác biệt về cường độ đánh giá. Việc áp dụng Adjusted Cosine Similarity giúp giảm chỉ số sai số RMSE từ
0.9840 xuống 0.8650 (cải thiện 12.09% độ chính xác so với mô hình baseline).
- Tối ưu kiến trúc cho bài toán thưa thớt ma trận (Sparsity Optimization): Thay vì sử dụng User-user CF vốn có số lượng người dùng biến động lớn và ma trận tương đồng $m \times m$ khổng lồ, nhóm triển khai Item-item CF. Số lượng sản phẩm $n$ nhỏ hơn rất nhiều so với $m$ ($n \ll m$), giúp giảm độ phức tạp tính toán không gian từ $\mathcal{O}(m^2)$ xuống $\mathcal{O}(n^2)$, cho phép tiền tính toán (pre-compute) ma trận tương đồng theo chu kỳ mà không làm quá tải CPU máy chủ thời gian thực.
- Phân tách vi dịch vụ không đồng nhất công nghệ (Polyglot Microservices): Tận dụng ưu thế vượt trội của Golang trong việc quản lý bộ nhớ, Goroutine Non-blocking I/O để phục vụ người dùng cuối, kết hợp cùng sức mạnh tính toán ma trận của Python giúp hệ thống duy trì tính ổn định cao với chi phí tài nguyên phần cứng thấp.
Ứng dụng thực tế và triển khai
Kịch bản sử dụng trong thực tế
- Dành riêng cho bạn (Personalized For You): Ngay tại trang chủ, hệ thống truy xuất lịch sử đánh giá của người dùng, đối chiếu với ma trận Item Similarity để gợi ý top 10 thiết bị có khả năng được yêu thích cao nhất.
- Sản phẩm tương tự (Related Products): Khi khách hàng đang xem chi tiết một chiếc laptop gaming, hệ thống kích hoạt thuật toán Content-based (dựa trên thông số Card đồ họa, RAM, CPU) để gợi ý các dòng máy cạnh tranh trong cùng phân khúc.
- Phụ kiện thường mua cùng (Cross-selling): Gợi ý ốp lưng, sạc nhanh dự phòng, tai nghe bluetooth tương thích khi khách hàng thêm điện thoại vào giỏ hàng.
+-----------------------------------------------------------------------------+
| QUY TRÌNH DEPLOY PRODUCTION |
+-----------------------------------------------------------------------------+
| |
| +---------------------+ +--------------------+ |
| | Docker Image | | Docker Image | |
| | Golang Core API | | Python Recommender| |
| | (Alpine Linux) | | (Slim-Buster) | |
| +----------+----------+ +---------+----------+ |
| | | |
| +--------------+--------------+ |
| | |
| v |
| +--------------------------------+ |
| | Docker Compose Orchestrator | |
| +---------------+----------------+ |
| | |
| +---------------------+---------------------+ |
| v v |
| +-------------------------+ +-------------------------+ |
| | Reverse Proxy Nginx | | MySQL Container | |
| | (SSL / Rate Limiting) | | (Persistent Volume) | |
| +-------------------------+ +-------------------------+ |
+-----------------------------------------------------------------------------+
Phân tích hiệu quả đầu tư (Cost-Benefit Analysis)
- Tăng tỷ lệ chuyển đổi (CR): Dự kiến tăng từ 15% - 25% tỷ lệ thêm vào giỏ hàng nhờ vào việc hiển thị sản phẩm chính xác theo nhu cầu.
- Tối ưu chi phí hạ tầng (TCO): Nhờ triển khai backend chính bằng Golang, hệ thống có thể vận hành ổn định trên một máy chủ VPS Cloud cấu hình cơ bản (2 vCPU, 4GB RAM) với chi phí ước tính chỉ từ $15 - $20/tháng, tiết kiệm hơn 60% so với việc triển khai các khối Enterprise Java/Spring Boot cồng kềnh.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Bài toán khởi đầu lạnh (Cold-Start Problem): Đối với người dùng hoàn toàn mới chưa từng đánh giá hoặc sản phẩm mới nhập kho chưa có rating nào, thuật toán Lọc cộng tác không thể tính toán độ tương đồng một cách chính xác.
- Độ tươi mới của dữ liệu (Data Freshness): Ma trận tương đồng sản phẩm hiện được xử lý theo lô (Batch Processing), chưa phản ánh ngay lập tức hành vi đánh giá vừa diễn ra trong phiên truy cập hiện tại.
Hướng phát triển
- Mô hình khuyến nghị lai (Hybrid Recommender System): Kết hợp trọng số động giữa Content-based và Collaborative Filtering để xóa bỏ điểm nghẽn Cold-Start.
- Tích hợp Deep Learning & Vector Search: Chuyển đổi dữ liệu thuộc tính sản phẩm và văn bản đánh giá thành các Vector Embeddings bằng mô hình Transformer (BERT), lưu trữ trên Vector Database (Milvus/Pinecone) để tìm kiếm độ tương đồng tiệm cận theo thời gian thực (Real-time Approximate Nearest Neighbor).
Đối tượng hưởng lợi
+-----------------------------------------------------------------------------+
| GIÁ TRỊ MANG LẠI CHO CÁC NHÓM ĐỐI TƯỢNG |
+-----------------------------------------------------------------------------+
| [Sinh viên & Học viên] |
| - Tài liệu tham khảo chuẩn chỉnh về quy trình xây dựng đồ án E-commerce |
| - Minh chứng thực nghiệm rõ ràng về sự khác biệt giữa Cosine & Adj-Cosine |
+-----------------------------------------------------------------------------+
| [Lập trình viên (Developers)] |
| - Mẫu kiến trúc Polyglot Microservices (Golang Echo + Python Recommender) |
| - Mô hình tổ chức mã nguồn chuẩn Clean Architecture và tối ưu GORM |
+-----------------------------------------------------------------------------+
| [Doanh nghiệp Bán lẻ vừa & nhỏ (SMEs)] |
| - Giải pháp E-commerce tích hợp AI cá nhân hóa với chi phí đầu tư tối thiểu |
| - Nâng cao tỷ lệ giữ chân khách hàng (Retention Rate) và giá trị đơn hàng |
+-----------------------------------------------------------------------------+
| [Nhà nghiên cứu (Researchers)] |
| - Cung cấp bộ đo lường thực nghiệm về bài toán thưa thớt dữ liệu tại VN |
+-----------------------------------------------------------------------------+
Câu hỏi thường gặp
1. Yêu cầu cấu hình phần cứng tối thiểu để triển khai toàn bộ hệ thống là gì?
Hệ thống yêu cầu tối thiểu: 01 máy chủ chạy Linux (Ubuntu 20.04/22.04 LTS), 2 vCPU, 4GB RAM và 20GB không gian lưu trữ SSD. Môi trường yêu cầu cài đặt Docker Engine v20.10+ và Docker Compose v2.0+ để tự động hóa toàn bộ tiến trình đóng gói và khởi chạy container.
2. Hệ thống giải quyết bài toán người dùng mới (Cold-Start User) như thế nào?
Khi người dùng mới chưa phát sinh lịch sử đánh giá, hệ thống sẽ tự động kích hoạt chế độ Fallback:
- Ưu tiên hiển thị danh mục "Sản phẩm bán chạy nhất" (Top Best-sellers) và "Sản phẩm được đánh giá cao nhất" (Top Rated).
- Sử dụng mô hình lọc theo nội dung (Content-based) dựa trên danh mục thiết bị mà người dùng đang trực tiếp nhấn vào xem trong phiên hiện tại.
3. Tần suất cập nhật ma trận Item Similarity nên được thiết lập ra sao?
Do số lượng sản phẩm điện tử thay đổi không quá nhanh và tương quan giữa các sản phẩm có tính ổn định cao, ma trận Item Similarity được thiết lập tính toán định kỳ thông qua Cron Job chạy ngầm vào các khung giờ thấp điểm (ví dụ: 02:00 AM hàng ngày), giúp tối ưu 100% tài nguyên CPU cho các tác vụ giao dịch trực tuyến ban ngày.
4. Tại sao đồ án không sử dụng hoàn toàn Python cho toàn bộ hệ thống web?
Python là ngôn ngữ thông dịch (interpreted) với cơ chế Global Interpreter Lock (GIL), dẫn đến hạn chế lớn về hiệu năng xử lý đa luồng đồng thời trong các tác vụ I/O của website bán hàng (duyệt web, thêm giỏ hàng, thanh toán). Việc kết hợp Golang cho tầng Web Core mang lại tốc độ phản hồi tính bằng mili-giây, trong khi Python được đóng gói độc lập để tập trung tối đa vào thế mạnh tính toán giải thuật ma trận.
5. Dữ liệu đánh giá có cần điều kiện lọc sạch (Data Cleaning) trước khi tính toán không?
Rất cần thiết. Trong quá trình tiền xử lý, hệ thống loại bỏ các bản ghi của những người dùng chỉ đánh giá dưới 2 sản phẩm (vốn không đủ cơ sở xác định xu hướng sở thích cá nhân) và các sản phẩm có ít hơn 2 lượt đánh giá để triệt tiêu các vector rỗng, giúp ma trận tính toán hội tụ chính xác hơn và giảm thiểu sai số RMSE.
Kết luận
Khóa luận tốt nghiệp "Xây dựng trang web kinh doanh thiết bị điện tử tích hợp khuyến nghị sản phẩm" của hai tác giả Lê Võ Đình Kha và Lê Phúc Khang đã giải quyết trọn vẹn bài toán kết hợp giữa kỹ thuật công nghệ phần mềm hiện đại và giải thuật học máy ứng dụng. Bằng việc xây dựng thành công kiến trúc vi dịch vụ Microservices hiệu năng cao bằng Golang, kết hợp cùng bộ giải thuật Item-item Collaborative Filtering cải tiến với Adjusted Cosine Similarity bằng Python, đề tài đã chứng minh tính khả thi cao, tối ưu hóa sai số dự báo (RMSE đạt 0.8650) và đảm bảo năng lực đáp ứng giao dịch thương mại điện tử mượt mà. Đề tài mở ra nền tảng vững chắc cho các nghiên cứu chuyên sâu tiếp theo về mô hình khuyến nghị tự thích ứng theo thời gian thực trên các nền tảng bán lẻ số.