- Dev ChendiLiu open-source RecommenderSystem — 6 kênh recall, three-tower rough rank, multi-objective DCN fine rank, MMR + CLIP rerank, Faiss IVFxPQy, endpoint /recommend và /fine_tuning qua FastAPI.
- Blueprint học việc hiếm có, gói full-link chỉ trong 1 repo đọc được end-to-end.
TL;DR
GitHub user 1-dr-eam (ChendiLiu) vừa release RecommenderSystem — một recsys công nghiệp đủ 4 tầng recall → rough rank → fine rank → rerank, đóng gói thành FastAPI microservice, MIT license, 125★. Gộp đủ UserCF, ItemCF, two-tower, LightGCN, three-tower, multi-objective DCN, MMR + CLIP, Faiss IVFxPQy trong một codebase đọc được end-to-end. Data là synthetic nên không dùng cho research, nhưng là blueprint học việc / prototype cực tốt.

What's new
Hầu hết repo recsys OSS chỉ dừng ở 2 tầng (retrieval + ranking). Repo này đi đủ 4 tầng công nghiệp như YouTube, Xiaohongshu hay TikTok đang chạy, được tác giả phát triển theo 4 iteration lớn từ 2026.3.20 đến 2026.4.16.
- v1.0 (3.20): Pipeline đầu tiên — 5 kênh recall, MLP rough/fine, CLIP + MMR rerank.
- v2.0 (3.27): Thêm LightGCN (thành 6 kênh recall), fine rank lên multi-objective DCN, tối ưu memory khi xử lý CLIP big-data.
- v3.0 (4.2): Tích hợp Faiss với index
IVFxPQy, hyperparameter search, chốt data flow offline-online. - v4.0 (4.10): Đóng gói FastAPI (
interface/main.py), kiến trúc DB-backed offline-online, xuất DDL SQL. - v4.1 (4.16): Endpoint
/fine_tuningcho phép retrain trực tuyến theo cửa sổ thời gian + exception handling.
Why it matters
Repo OSS phổ biến như TensorFlow Recommenders hay LightFM thường chỉ mô hình hoá retrieval + ranking. Tầng rough ranking và rerank gần như luôn được "giấu" trong closed-source infrastructure của các công ty lớn. Việc một repo MIT nhỏ gọn phơi bày cả 4 tầng — và còn cover cold-start bằng 2 kênh riêng — là tài liệu quý cho:
- Kỹ sư đang ôn interview MLE / recsys.
- Team nhỏ cần prototype feed content kiểu Xiaohongshu hoặc e-commerce personalized.
- Người học đang theo course RecSys của Wang Shusen trên bilibili (nguồn tham khảo chính của tác giả).
Technical facts
6 kênh recall
- UserCF & ItemCF — collaborative filtering classic, dựa trên ma trận tương đồng.
- Two-tower neural — user tower + item tower, embedding truy vấn qua Faiss.
- LightGCN — recall dựa trên graph convolution, bổ sung ở v2.0.
- Keyword + category — xử lý item cold-start.
- Content-feature clustering — cold-start thứ hai, dùng đặc trưng nội dung.
Ranking stack
| Tầng | Model | Neural net | Vai trò |
|---|---|---|---|
| Rough rank | Three-tower | MLP fusion | Chấm điểm hàng ngàn item, cắt top vài trăm |
| Fine rank | Multi-objective DCN | Cross + deep network | Chấm chính xác, KHÔNG cắt |
| Rerank | MMR + CLIP | Cosine image+text embedding | Thêm diversity vào danh sách cuối |
Three-tower là lựa chọn khôn ngoan — nằm giữa two-tower (late fusion, nhanh nhưng thiếu tương tác user-item) và full front-fusion (chính xác nhưng đắt), phù hợp đúng vai trò rough ranking. Fine rank dùng DCN-V2 để học feature interaction có bounded degree.
Infra serving
- Faiss với
IVFxPQyindex — chứa embedding two-tower và LightGCN tính offline. - MySQL cho user/item/interaction data (có DDL sẵn trong
/sql). - FastAPI + uvicorn cho lớp HTTP.
- PyTorch cu126 cho training (GPU path).
- Three-tower item embedding không đẩy vào Faiss được (do cần front-fusion), nên dùng memory/cache.
API endpoints
POST /recommend
{ "user_id": "u123", "hour": 21, "is_weekend": true, "is_holiday": false }
→ { "status": "success", "recommendations": ["i42", "i19", ...], "request_id": "uuid" }
POST /fine_tuning
{ "start_time": "2026-04-01T00:00:00", "end_time": "2026-04-15T00:00:00" }
→ { "status": "success", "message": "..." }Comparison
| Đặc điểm | RecommenderSystem (repo này) | TF-Recommenders / LightFM | Industry (YouTube, Xiaohongshu) |
|---|---|---|---|
| Số tầng | 4 đủ | 2 (retrieval + ranking) | 4+ |
| Kênh recall | 6 | 1–2 | 10+ |
| Fine rank | Multi-objective DCN | MLP single-objective | DCN-V2, DIN, SIM |
| Diversity | MMR + CLIP | Hiếm khi có | MMR / DPP / learned |
| Cold-start | 2 kênh riêng | Thường thiếu | Pipeline riêng |
| Serving | FastAPI + Faiss + MySQL | Jupyter / Flask | Custom C++ infra |
Use cases
- Học nghề: đọc một repo là cover UserCF, ItemCF, two-tower, LightGCN, DCN, MMR, Faiss — hiệu suất tự học cao.
- Prototype team nhỏ: bootstrap một content feed / e-commerce recsys với diversity built-in.
- Interview MLE / recsys: bài tập mẫu cover gần trọn syllabus RecSys.
- Reference architecture: cho team engineer đang hỏi "cái gì nên để trong Faiss, cái gì cần memory, cái gì tính offline".
Limitations & pricing
MIT license cho cả code lẫn pretrained weights trong /model_weights — dùng free thương mại được. Nhưng cần lưu ý:
- Dataset AI-synthesized — chỉ metadata sách là thật, còn lại user và interaction đều giả. Tác giả nói rõ không dùng được cho research nghiêm túc, chỉ để stress-test pipeline.
- Không có p50/p99 latency benchmark công bố (tác giả chỉ nói "response speed is good").
- Không có Dockerfile, không có auth layer trên FastAPI — deploy production cần tự bổ sung.
- Mặc định MySQL; đổi DB phải thay driver trong
database.py. - Single contributor, chưa có CI.
What's next
Chưa có roadmap công khai, nhưng các gaps rõ ràng để đóng góp: Dockerfile, latency benchmark thật, dataset thay thế (MovieLens / Amazon Reviews), multi-GPU training, auth/rate-limit cho endpoint. Với tốc độ 4 iteration trong ~4 tuần, tác giả có vẻ active.
Nguồn: GitHub 1-dr-eam/RecommenderSystem, DCN V2 paper, OpenAI CLIP.



