Giới thiệu dự án
Thương mại điện tử (E-commerce) toàn cầu đang chứng kiến sự tăng trưởng vượt bậc với tốc độ CAGR dự kiến đạt trên 11.5% giai đoạn 2023–2028. Tại Việt Nam, hành vi mua sắm trực tuyến của người tiêu dùng ngày càng chuyển dịch mạnh mẽ sang các nền tảng số hóa, đặc biệt trong ngành hàng bán lẻ mỹ phẩm và chăm sóc cá nhân – nơi khách hàng phải đối mặt với "nghịch lý lựa chọn" (paradox of choice) giữa hàng ngàn dòng sản phẩm đa dạng về thành phần, loại da, công dụng và thương hiệu.
Tuy nhiên, các hệ sinh thái thương mại điện tử dành cho doanh nghiệp vừa và nhỏ (SMEs) thường gặp phải bài toán nan giải: các thuật toán gợi ý sản phẩm phức tạp dựa trên Trí tuệ nhân tạo (AI/Machine Learning) như Collaborative Filtering hay Deep Matrix Factorization đòi hỏi hạ tầng máy chủ GPU đắt đỏ, tài nguyên tính toán lớn và phụ thuộc nghiêm trọng vào lịch sử dữ liệu người dùng (gây ra vấn đề Cold-Start đối với sản phẩm mới hoặc người dùng mới).
Đề tài "Xây dựng website bán hàng và áp dụng thuật toán Hamming distance để gợi ý sản phẩm" (Khoa Công nghệ Phần mềm, Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM) giải quyết trực diện điểm nghẽn kỹ thuật này bằng cách xây dựng nền tảng thương mại điện tử toàn diện trên nền tảng PHP Laravel kết hợp cấu trúc dữ liệu vector nhị phân (Binary Vector) và thuật toán khoảng cách Hamming (Hamming Distance) để cá nhân hóa đề xuất với chi phí tính toán tối ưu.
[Khách hàng duyệt Sản phẩm A]
│
▼
[Chuyển đổi thuộc tính A -> Binary Bitmask (e.g. 101101)]
│
▼ (Toán tử XOR: Vector A ⊕ Vector B)
[Tính Hamming Distance qua gmp_hamdist()]
│
▼
[Sắp xếp khoảng cách d_min tăng dần]
│
▼
[Đề xuất Top-K sản phẩm tương đồng nhất]
Mục tiêu dự án
- Khảo sát và chuẩn hóa quy trình nghiệp vụ: Phân tích thực trạng quản lý bán lẻ mỹ phẩm, mô hình hóa vòng đời đơn hàng, quản lý kho đa điểm và tương tác người dùng.
- Nghiên cứu và hiện thực hóa thuật toán Hamming Distance: Ứng dụng kỹ thuật biểu diễn thuộc tính sản phẩm dưới dạng chuỗi bit nhị phân để đo lường mức độ tương đồng thông qua phép toán bitwise XOR ($\oplus$).
- Phát triển hệ thống web hoàn chỉnh: Ứng dụng ngôn ngữ PHP kết hợp Framework Laravel theo kiến trúc MVC (Model-View-Controller) và hệ quản trị cơ sở dữ liệu quan hệ MySQL.
- Thiết kế cơ chế phân quyền RBAC (Role-Based Access Control): Tách biệt các tác nhân QUANLY (Administrator), NHANVIEN (Staff) và KHACHHANG (Customer).
Phương pháp tiếp cận và Chỉ số mục tiêu
- Phương pháp tiếp cận: Vector hóa tập thuộc tính phân loại (categorical features) như loại da (dầu, khô, nhạy cảm), kết cấu (gel, kem, serum), công dụng (trị mụn, dưỡng trắng, chống lão hóa) thành các từ mã nhị phân (binary words) có độ dài cố định. Sử dụng hàm tính khoảng cách nhị phân tối ưu hóa ở mức C-level trong PHP để đạt hiệu năng xử lý cực cao.
- Chỉ số kỳ vọng:
- Thời gian phản hồi API gợi ý (Latency): $\le 30\text{ms}$ trên tập dữ liệu $10.000$ SKU.
- Tỷ lệ chính xác trong khớp đặc tính (Feature Match Accuracy): $100%$ dựa trên khoảng cách bit tối thiểu.
- Mức độ chiếm dụng bộ nhớ RAM server: Giảm $\ge 70%$ so với việc tính toán ma trận thực trên Python/Scikit-Learn.
Phạm vi và giới hạn
- Phạm vi: Xây dựng trọn vẹn website bán mỹ phẩm B2C bao gồm cổng tương tác người dùng (Storefront) và hệ thống quản trị nội bộ (Admin Dashboard).
- Giới hạn: Thuật toán áp dụng cho các thuộc tính nhị phân rời rạc (binary discrete attributes); các dữ liệu liên tục như giá tiền được phân cụm thành các khoảng giá (bucket intervals) trước khi mã hóa bit.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Nghiên cứu tiến hành đánh giá so sánh phương pháp tiếp cận của đề tài với các mô hình gợi ý phổ biến trên thị trường:
| Tiêu chí |
Collaborative Filtering |
Cosine Similarity (TF-IDF) |
Ruled-based Filter (SQL WHERE) |
Giải pháp Hamming Distance (Đề tài) |
| Bản chất tính toán |
Phân rã ma trận User-Item |
Đo góc giữa vector không gian số thực |
Truy vấn ràng buộc dữ liệu quan hệ |
Đếm số bit khác biệt ($x \oplus y$) |
| Độ phức tạp thời gian |
$\mathcal{O}(M \times N)$ |
$\mathcal{O}(N \times D)$ (Phép nhân thực) |
$\mathcal{O}(N)$ (Phụ thuộc chỉ mục B-Tree) |
$\mathcal{O}(N)$ (Phép toán bitwise CPU cấp thấp) |
| Xử lý Cold-Start |
Rất kém |
Khá |
Tốt |
Xuất sắc (Không cần lịch sử tương tác) |
| Chi phí hạ tầng |
Rất cao (GPU/Memory cluster) |
Trung bình (RAM cao) |
Thấp (Tải trực tiếp vào DB) |
Rất thấp (Xử lý trực tiếp trên CPU server) |
| Tính linh hoạt |
Học tự động hành vi |
Xử lý văn bản phi cấu trúc |
Cứng nhắc, dễ trả về rỗng (0 kết quả) |
Mềm dẻo, luôn tìm được $k$ item có khoảng cách $d_{min}$ |
Ma trận ưu tiên yêu cầu người dùng (MoSCoW)
- Must-Have (Bắt buộc): Đăng nhập/Đăng ký xác thực BCrypt; Giỏ hàng và quy trình Checkout; CRUD sản phẩm, danh mục, bài viết; Mô-đun tính toán Hamming Distance gợi ý sản phẩm tương tự tại trang chi tiết (
Product Detail View); Phân quyền tài khoản (Admin, Staff, Customer).
- Should-Have (Nên có): Đánh giá/bình luận sản phẩm theo đơn hàng đã mua; Quản lý trạng thái kho hàng tự động cập nhật số lượng tồn; Lọc sản phẩm đa tiêu chí.
- Could-Have (Có thể mở rộng): Tích hợp cổng thanh toán trực tuyến qua Sandbox (VNPAY/Momo); Quản lý mã giảm giá (Coupon system).
- Won't-Have (Giai đoạn này): Ứng dụng di động Native (iOS/Android); Hệ thống đa ngôn ngữ động.
Thiết kế hệ thống
Hệ thống được thiết kế theo kiến trúc Model-View-Controller (MVC) chuẩn mực trên Laravel Framework, đảm bảo sự phân tách độc lập giữa tầng xử lý dữ liệu, điều hướng nghiệp vụ và giao diện người dùng.
[Client Browser]
│ HTTP Request (HTTPS / RESTful)
▼
┌───────────────────────┐
│ Web Server │ (Nginx / PHP-FPM)
└──────────┬────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ Laravel Application │
│ ┌───────────────────────────────────────────────────┐ │
│ │ Routing & Middleware (Auth, CSRF, RoleCheck) │ │
│ └───────────────────────┬───────────────────────────┘ │
│ │ │
│ ┌──────────────────┴──────────────────┐ │
│ ▼ ▼ │
│ ┌────────────┐ ┌───────────┐ │
│ │ Controller │◄───────────────────────┤ View │ │
│ └─────┬──────┘ (Blade Template Engine)│ (HTML/CSS)│ │
│ │ └───────────┘ │
│ ▼ │
│ ┌────────────┐ ┌───────────────────────────────────┐ │
│ │ Model ├───►│ Hamming Distance Engine │ │
│ └─────┬──────┘ │ (gmp_hamdist / Bitwise Operations)│ │
│ │ └───────────────────────────────────┘ │
└───────┼─────────────────────────────────────────────────┘
│ PDO / Eloquent ORM Queries
▼
┌───────────────────────┐
│ MySQL Database │ (InnoDB Engine, UTF8mb4)
└───────────────────────┘
Technology Stack và Phiên bản
- Ngôn ngữ lập trình Backend: PHP 8.2 (Hỗ trợ JIT Compiler và thư viện GMP – GNU Multiple Precision).
- Web Framework: Laravel 10.x (Tích hợp Eloquent ORM, Blade View Engine, Artisan CLI).
- Cơ sở dữ liệu: MySQL 8.0.35 (InnoDB Engine, khóa ngoại quan hệ toàn vẹn).
- Giao diện Frontend: HTML5, CSS3, JavaScript (ES6), Bootstrap 5.3 Framework.
- Bảo mật & Mã hóa: Thuật toán băm BCrypt (
Cost = 10), CSRF Token Protection, PDO Prepared Statements chống SQL Injection.
Thiết kế cơ sở dữ liệu (Database Schema)
Hệ thống sử dụng các thực thể quan hệ chính:
users (id, name, email, password, role_id, created_at): Lưu trữ định danh người dùng.
roles (id, name, description): Quản lý quyền hạn (1: Admin, 2: Staff, 3: Customer).
categories (id, name, slug, status): Phân loại danh mục mỹ phẩm (Chăm sóc da mặt, Trang điểm, v.v.).
products (id, category_id, name, slug, price, quantity, binary_vector, description, image, status): Chứa thuộc tính và chuỗi vector nhị phân đại diện.
orders (id, user_id, total_amount, status, shipping_address, phone_number, created_at): Lưu thông tin đơn đặt hàng.
order_details (id, order_id, product_id, quantity, price): Chi tiết từng sản phẩm trong đơn.
reviews (id, user_id, product_id, order_id, rating, comment): Lưu trữ đánh giá của khách hàng.
posts (id, title, slug, content, author_id, status): Quản lý tin tức bài viết làm đẹp và khuyến mãi.
Methodology
Dự án áp dụng mô hình phát triển phần mềm lặp Agile/Scrum rút gọn với 4 Sprint chính trong tổng thời gian 12 tuần:
Tuần 1-3 (Sprint 1): Khảo sát, phân tích Use Case, thiết kế DB Schema & setup Laravel.
Tuần 4-6 (Sprint 2): Xây dựng CRUD Admin, quản lý tài khoản, kho hàng, danh mục.
Tuần 7-9 (Sprint 3): Phát triển Storefront, Giỏ hàng, Checkout & tích hợp Hamming Engine.
Tuần 10-12 (Sprint 4): Testing toàn diện (Unit Test, Stress Test), tối ưu hiệu năng và đóng gói.
Ma trận quản trị rủi ro (Risk Mitigation Matrix)
- Rủi ro 1: Sai lệch khi biểu diễn thuộc tính sản phẩm thành chuỗi bit.
- Giải pháp: Thiết lập bảng quy chuẩn mã hóa bit (Bitmask Dictionary), cố định độ dài vector (ví dụ $L = 16\text{ bits}$), chuẩn hóa thứ tự các trường thuộc tính.
- Rủi ro 2: Suy giảm hiệu năng khi duyệt vòng lặp toàn bộ tập sản phẩm trong DB.
- Giải pháp: Lọc sơ bộ (Pre-filtering) theo danh mục gốc (
category_id) hoặc khoảng giá trước khi đưa mảng vector vào hàm gmp_hamdist().
Implementation và kết quả
Development process
Cốt lõi của hệ thống đề xuất nằm ở việc mô hình hóa các đặc trưng mỹ phẩm thành một từ mã nhị phân độ dài cố định $N$.
Nguyên lý toán học của thuật toán Hamming Distance
Khoảng cách Hamming giữa hai chuỗi nhị phân cùng độ dài $x$ và $y$, ký hiệu là $d_H(x, y)$, là số lượng vị trí mà tại đó các bit tương ứng khác nhau. Công thức toán học được xác định bởi:
$$d_H(x, y) = \sum_{i=1}^n (x_i \oplus y_i)$$
Trong đó $\oplus$ đại diện cho phép toán XOR logic ($0 \oplus 0 = 0, 1 \oplus 1 = 0, 0 \oplus 1 = 1, 1 \oplus 0 = 1$). Kết quả sau phép XOR là một chuỗi nhị phân mà mỗi bit $1$ đại diện cho một thuộc tính khác biệt. Số lượng bit $1$ (Hamming Weight / Population Count) chính là khoảng cách Hamming.
Đoạn mã nguồn hiện thực hóa trong Service Layer (Laravel)
Hệ thống tận dụng hàm tối ưu hóa gmp_hamdist() từ thư viện C GMP của PHP để thực hiện tính toán với tốc độ phần cứng:
namespace App\Services;
use App\Models\Product;
use Illuminate\Support\Collection;
class ProductRecommendationService
{
/**
* Tính toán khoảng cách Hamming giữa hai chuỗi biểu diễn nhị phân
*
* @param string|int $vectorA
* @param string|int $vectorB
* @return int
*/
public function calculateDistance(string|int $vectorA, string|int $vectorB): int
{
// Chuyển đổi định dạng chuỗi nhị phân thành đối tượng GMP hoặc giá trị nguyên
// gmp_hamdist thực hiện phép toán bitwise XOR và popcount ở mức hợp ngữ C
return gmp_hamdist($vectorA, $vectorB);
}
/**
* Đề xuất Top-K sản phẩm tương đồng nhất dựa trên khoảng cách Hamming tối thiểu
*
* @param int $currentProductId
* @param int $limit
* @return Collection
*/
public function getSimilarProducts(int $currentProductId, int $limit = 4): Collection
{
$currentProduct = Product::findOrFail($currentProductId);
// Lấy danh sách sản phẩm ứng viên cùng phân khúc để tối ưu hiệu năng
$candidateProducts = Product::where('id', '!=', $currentProductId)
->where('status', 1)
->select(['id', 'name', 'slug', 'price', 'image', 'binary_vector', 'category_id'])
->get();
// Ánh xạ và tính toán khoảng cách
$recommended = $candidateProducts->map(function ($product) use ($currentProduct) {
$distance = $this->calculateDistance(
$currentProduct->binary_vector,
$product->binary_vector
);
$vectorLength = strlen($currentProduct->binary_vector);
$similarityPercent = round((1 - ($distance / $vectorLength)) * 100, 2);
return [
'product' => $product,
'distance' => $distance,
'similarity' => $similarityPercent
];
})
->sortBy('distance') // Sắp xếp khoảng cách nhỏ nhất lên đầu (tương đồng cao nhất)
->take($limit);
return $recommended->values();
}
}
Testing và validation
Hệ thống trải qua các bài kiểm thử nghiêm ngặt bao gồm Unit Testing trên Laravel PHPUnit, kiểm thử hiệu năng với Apache JMeter và đánh giá độ chính xác thuật toán.
+-------------------------------------------------------------------------------+
| KẾT QUẢ BENCHMARK HIỆU NĂNG THỰC TẾ |
+------------------------+---------------------+--------------------------------+
| Số lượng sản phẩm (SKU)| Thuật toán | Thời gian phản hồi trung bình |
+------------------------+---------------------+--------------------------------+
| 1.000 SKU | Hamming (GMP PHP) | 2.14 ms |
| 1.000 SKU | Cosine Similarity | 28.60 ms |
| 10.000 SKU | Hamming (GMP PHP) | 14.80 ms |
| 10.000 SKU | Cosine Similarity | 245.20 ms |
| 50.000 SKU | Hamming (GMP PHP) | 58.30 ms |
| 50.000 SKU | Cosine Similarity | 1.180.00 ms |
+------------------------+---------------------+--------------------------------+
Kết quả kiểm thử chấp nhận người dùng (UAT)
- Tổng số người tham gia thử nghiệm: 45 người (bao gồm 5 quản trị viên, 10 nhân viên bán hàng, 30 khách hàng trải nghiệm).
- Thang điểm hài lòng hệ thống (SUS Score - System Usability Scale): Đạt $86.5/100$ điểm (Mức Excellent).
- Tỷ lệ phát hiện lỗi (Bug Resolution Rate): Đạt $100%$ đối với các lỗi nghiêm trọng (Critical/High), thời gian phản hồi trung bình của hệ thống dưới $350\text{ms}$ cho các thao tác CRUD thông thường.
Kết quả đạt được
Hệ thống đã hoàn thiện $100%$ các tính năng cam kết trong mục tiêu đề tài:
- Module Quản trị (Admin & Staff): Kiểm soát toàn diện chuỗi cung ứng nội bộ gồm Quản lý danh mục, Quản lý sản phẩm, Quản lý kho hàng nhập/xuất, Quản lý trạng thái đơn hàng (Chờ xử lý, Đang giao, Hoàn tất, Hủy), Quản lý bài viết truyền thông và Quản lý phân quyền tài khoản.
- Module Người dùng (Customer): Đăng ký, đăng nhập bảo mật, tìm kiếm toàn văn (Full-text search), bộ lọc danh mục, chi tiết sản phẩm kèm widget đề xuất sản phẩm tương tự theo thuật toán Hamming, giỏ hàng tương tác thời gian thực, đặt hàng và đánh giá sản phẩm.
Đổi mới và đóng góp
Đột phá kỹ thuật và Cải tiến hiệu suất
- Chuyển dịch không gian tính toán từ Số thực sang Nhị phân: Thay vì biểu diễn đặc trưng sản phẩm dưới dạng ma trận số thực đa chiều (gây tốn kém bộ nhớ và tiêu tốn chu kỳ lệnh FPU của CPU), đề tài chuẩn hóa toàn bộ miền giá trị về chuỗi nhị phân ngắn. Điều này cho phép thực thi phép so khớp trực tiếp trên thanh ghi CPU thông qua các lệnh phần cứng (Hardware-level instruction).
- Loại bỏ hoàn toàn chi phí hạ tầng máy chủ AI phụ trợ: Các website thương mại điện tử vừa và nhỏ không cần phải thuê các cụm máy chủ Python/FastAPI chạy ngầm để tính toán vector đề xuất, giúp tiết kiệm $100%$ chi phí duy trì hạ tầng AI trung gian.
- Cải thiện tốc độ vượt trội: Giảm thời gian tính toán độ tương đồng hơn $93.9%$ so với giải pháp tính toán vector Cosine truyền thống trên cùng một cấu hình phần cứng.
So sánh mức tiêu thụ tài nguyên trên 10.000 truy vấn:
┌───────────────────────────────────────────────────────────┐
│ Cosine Similarity: 145 MB RAM | 85% CPU Core Usage │
├───────────────────────────────────────────────────────────┤
│ Hamming Distance: 18 MB RAM | 12% CPU Core Usage │
└───────────────────────────────────────────────────────────┘
Đóng góp thực tiễn cho ngành
Đồ án mở ra một hướng tiếp cận mang tính ứng dụng cao cho cộng đồng kỹ sư phần mềm web: ứng dụng các thuật toán kinh điển từ lý thuyết thông tin (Information Theory) và viễn thông (Coding Theory) vào giải quyết các bài toán tối ưu hóa trong phát triển phần mềm thương mại điện tử hiện đại.
Ứng dụng thực tế và triển khai
Tình huống ứng dụng thực tế (Use Case Scenarios)
- Kịch bản 1: Đề xuất thay thế sản phẩm hết hàng (Out-of-Stock Fallback). Khi một loại kem chống nắng cho da dầu mụn của thương hiệu A hết hàng, hệ thống tự động dựa trên vector đặc tính
1100101 để gợi ý ngay sản phẩm của thương hiệu B có cùng đặc tính kiềm dầu, không cồn và cùng phân khúc giá với khoảng cách $d_H = 0$ hoặc $d_H = 1$.
- Kịch bản 2: Gợi ý chéo sản phẩm (Cross-selling). Tại trang chi tiết sản phẩm serum cấp ẩm, hệ thống tính toán vector bổ trợ để đề xuất kem dưỡng khóa ẩm có thành phần tương thích sinh học, nâng cao giá trị đơn hàng trung bình (AOV - Average Order Value).
[Khách xem: Serum B5 (Vector: 101100)]
│
├─► [Sản phẩm A (Vector: 101101) -> d_H = 1 -> Gợi ý Tương đồng 83%]
└─► [Sản phẩm B (Vector: 001100) -> d_H = 1 -> Gợi ý Tương đồng 83%]
Hướng dẫn triển khai hệ thống (Deployment Architecture)
# 1. Clone repository mã nguồn dự án
git clone https://github.com/example/cosmetic-hamming-ecommerce.git
cd cosmetic-hamming-ecommerce
# 2. Cài đặt các gói phụ thuộc PHP và extension GMP
sudo apt-get install php8.2-gmp php8.2-mysql php8.2-mbstring php8.2-xml
composer install --optimize-autoloader --no-dev
# 3. Thiết lập biến môi trường
cp .env.example .env
php artisan key:generate
# 4. Chạy Migration và Seeder nạp dữ liệu mẫu
php artisan migrate --seed
# 5. Tối ưu hóa bộ nhớ đệm cấu hình và routes
php artisan config:cache
php artisan route:cache
php artisan view:cache
Phân tích Chi phí - Lợi ích (Cost-Benefit Analysis)
- Chi phí triển khai: Triển khai trên một máy chủ VPS tiêu chuẩn (2 vCPU, 4GB RAM, ví dụ DigitalOcean/Linode với chi phí khoảng $20/tháng).
- Lợi ích kinh tế: Khả năng phục vụ đồng thời lên đến $500\text{ requests/giây}$ (RPS) mà không bị nghẽn cổ chai tài nguyên, tiết kiệm ít nhất $150 - $300/tháng so với việc vận hành cụm dịch vụ AI gợi ý riêng biệt trên AWS SageMaker hoặc Google Vertex AI.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Trọng số đồng nhất giữa các bit (Unweighted Attributes): Thuật toán khoảng cách Hamming truyền thống xem mọi vị trí bit có vai trò bình đẳng như nhau. Tuy nhiên trong thực tế mỹ phẩm, đặc tính "Loại da phù hợp" thường có tầm quan trọng cao hơn đặc tính "Quy cách đóng gói".
- Độ dài vector cố định: Khi mở rộng thêm nhiều nhóm thuộc tính mới trong tương lai, hệ thống cần phải cấu trúc lại độ dài chuỗi bit của toàn bộ cơ sở dữ liệu sản phẩm đã có.
- Mất mát thông tin ở biến liên tục: Việc lượng tử hóa giá tiền hoặc dung tích thành các khoảng nhị phân rời rạc có thể làm giảm độ mịn của dữ liệu.
Hướng phát triển và Nâng cấp
-
Khoảng cách Hamming có trọng số (Weighted Hamming Distance): Bổ sung hệ số trọng số $w_i$ cho từng bit $i$ để phản ánh chính xác mức độ quan trọng của từng thuộc tính:
$$d_{WH}(x, y) = \sum_{i=1}^n w_i \cdot (x_i \oplus y_i)$$
-
Tích hợp Locality-Sensitive Hashing (LSH): Áp dụng kỹ thuật phân vùng bảng băm dựa trên khoảng cách Hamming để truy vấn các ứng viên gần nhất trong thời gian cận hằng số $\mathcal{O}(1)$ khi quy mô sản phẩm vượt trên $1.000.000\text{ SKU}$.
-
Cơ chế lai ghép (Hybrid Recommendation): Kết hợp kết quả gợi ý đặc tính của Hamming với tần suất hành vi mua hàng (Implicit Feedback) thông qua thuật toán lọc cộng tác nhẹ.
Đối tượng hưởng lợi
HỆ SINH THÁI ĐỐI TƯỢNG HƯỞNG LỢI
┌────────────────────────────────────┬───────────────────────────────────┐
│ │ │
▼ ▼ ▼
┌───────────────────┐ ┌───────────────────┐ ┌───────────────────┐
│ Sinh viên │ │ Lập trình viên │ │ Doanh nghiệp │
│ & Nghiên cứu │ │ & Kỹ sư │ │ Bán lẻ (SMEs) │
├───────────────────┤ ├───────────────────┤ ├───────────────────┤
│• Tài liệu mẫu │ │• Mẫu kiến trúc │ │• Tiết kiệm 85% │
│ chuẩn mực đồ án │ │ Service/Repo │ │ chi phí hạ tầng │
│• Hiểu sâu ứng │ │• Kỹ thuật tối ưu │ │• Tăng tỷ lệ │
│ dụng toán rời rạc│ │ bit GMP trong PHP│ │ chuyển đổi (CR) │
└───────────────────┘ └───────────────────┘ └───────────────────┘
- Sinh viên ngành Công nghệ phần mềm & CNTT: Có được tài liệu tham khảo hoàn chỉnh từ phân tích Use Case, thiết kế biểu đồ hoạt động/tuần tự đến cách thức đưa một thuật toán toán học thuần túy vào sản phẩm thương mại thực tế.
- Lập trình viên Backend / Fullstack: Tiếp cận mô hình kiến trúc MVC rõ ràng trên Laravel, kỹ thuật khai thác thư viện hàm C nhúng (
gmp_hamdist) để giải quyết bài toán hiệu năng cao trong PHP.
- Doanh nghiệp bán lẻ trực tuyến (E-commerce SMEs): Sở hữu giải pháp công nghệ cá nhân hóa trải nghiệm khách hàng với chi phí đầu tư hạ tầng thấp nhất, giúp tăng tỷ lệ chuyển đổi đơn hàng từ $15% - 25%$.
- Nhà nghiên cứu khoa học máy tính: Nhận thêm dữ liệu thực nghiệm về việc so sánh hiệu năng giữa đo lường khoảng cách nhị phân và các giải pháp học máy trên miền dữ liệu rời rạc.
Câu hỏi thường gặp
1. Yêu cầu phần cứng và môi trường tối thiểu để triển khai website 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), cài đặt PHP phiên bản $\ge 8.1$ với các extension bắt buộc: php-gmp, php-mysql, php-mbstring, php-xml, php-curl. Cơ sở dữ liệu MySQL $\ge 8.0$. Về phần cứng, cấu hình tối thiểu là 1 vCPU và 1GB RAM; cấu hình khuyến nghị cho môi trường Production là 2 vCPU và 2GB RAM.
2. Giới hạn quy mô dữ liệu của thuật toán là bao nhiêu và cách mở rộng khi sản phẩm tăng cao?
Trên cấu hình 1 server thông thường, việc tính toán tuần tự thông qua gmp_hamdist() xử lý mượt mà lên tới $50.000\text{ SKU}$ trong thời gian dưới $60\text{ms}$. Khi số lượng SKU vượt ngưỡng $100.000$, giải pháp mở rộng bao gồm: phân cụm dữ liệu theo danh mục cha trước khi tính toán, lưu trữ sẵn ma trận khoảng cách vào bộ nhớ đệm Redis (Cache-aside pattern), hoặc sử dụng bảng chỉ mục BitMap Indexing chuyên dụng trong cơ sở dữ liệu.
3. Làm thế nào để tích hợp thuật toán Hamming Distance vào một website thương mại điện tử có sẵn?
Quá trình tích hợp diễn ra độc lập thông qua việc tạo một bảng product_attributes_bitmask liên kết với bảng products hiện tại thông qua product_id. Sau đó, xây dựng một Service Provider hoặc Microservice đóng gói hàm tính khoảng cách calculateDistance() và gắn hook vào API hiển thị chi tiết sản phẩm.
4. Chi phí bảo trì và vận hành hệ thống định kỳ ước tính như thế nào?
Nhờ loại bỏ các tác vụ huấn luyện mô hình máy học định kỳ, chi phí vận hành hệ thống gần như tương đương với một website tin tức/bán hàng thông thường. Chi phí chỉ bao gồm phí duy trì tên miền, máy chủ VPS ($10 - $20\text{/tháng}$) và dịch vụ sao lưu dữ liệu tự động định kỳ trên đám mây.
5. Tại sao không sử dụng trực tiếp câu lệnh truy vấn SQL LIKE hoặc WHERE để tìm sản phẩm tương tự?
Truy vấn SQL dạng WHERE category = X AND skin_type = Y mang tính tuyệt đối (Hard filtering). Nếu không có sản phẩm nào thỏa mãn đồng thời tất cả các điều kiện, cơ sở dữ liệu sẽ trả về kết quả rỗng (0 sản phẩm), làm đứt gãy trải nghiệm người dùng. Ngược lại, thuật toán Hamming Distance đo lường mức độ tương đồng mờ (Soft similarity) và luôn chọn lọc ra được danh sách $K$ sản phẩm gần giống nhất dựa trên giá trị khoảng cách bit tối thiểu $d_{min}$.
Kết luận
Đề tài tốt nghiệp "Xây dựng website bán hàng và áp dụng thuật toán Hamming distance để gợi ý sản phẩm" của tác giả Nguyễn Đức Phúc, dưới sự hướng dẫn khoa học của ThS. Nguyễn Thị Thanh Trúc tại Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM, là một công trình nghiên cứu ứng dụng có giá trị thực tiễn cao.
Dự án không chỉ hoàn thành xuất sắc mục tiêu xây dựng một nền tảng thương mại điện tử chuyên ngành mỹ phẩm hoàn chỉnh, an toàn và chuẩn mực về mặt công nghệ phần mềm (PHP 8, Laravel Framework, MySQL), mà còn giải quyết sáng tạo bài toán gợi ý sản phẩm thông minh với chi phí tính toán tối ưu nhờ ứng dụng thuật toán Hamming Distance trên không gian bit nhị phân. Kết quả nghiên cứu chứng minh rằng việc kết hợp khéo léo các cấu trúc dữ liệu và thuật toán kinh điển vào kỹ thuật lập trình web hiện đại hoàn toàn có thể tạo ra những hệ thống có hiệu năng vượt trội, mang lại lợi ích kinh tế bền vững cho các doanh nghiệp thương mại điện tử vừa và nhỏ.