№ 86
Orbitra đọc CV của bạn rồi tạo một lộ trình để trở thành AI engineer, trong đó những bài bạn đã biết được đánh dấu đã hoàn thành để khỏi học lại. Nội dung lộ trình lấy từ tin tuyển dụng thật trên thị trường, không phải do tự nghĩ ra hay lấy ngẫu nhiên.
Tài liệu chi tiết nằm ở https://hackmd.io/@Hungmo16102004/orbitra-tai-lieu-ky-thuat
Thị trường tuyển dụng AI ở Việt Nam có nhiều nghề khác nhau — AI Agent Engineer, Data Engineer, Data Scientist, Machine Learning Engineer, MLOps Engineer, Computer Vision Engineer — và mỗi nghề đòi hỏi một bộ kỹ năng riêng. Người muốn vào ngành gặp ba khó khăn.
Không biết nghề nào cần học gì. Các lộ trình trên mạng do cá nhân tự soạn, không ai biết chúng có khớp với thứ nhà tuyển dụng Việt Nam đang cần hay không, và cũng không phân biệt rõ Data Engineer khác Data Scientist ở chỗ nào.
Phải học lại thứ đã biết. Một lập trình viên backend 2 năm kinh nghiệm mở lộ trình AI ra thì vẫn thấy bài dạy Python, Docker, API — những thứ họ làm hằng ngày. Không có cách nào nói với hệ thống "chỗ này tôi biết rồi".
Lộ trình đứng yên trong khi thị trường thì không. Một giáo trình soạn năm ngoái không phản ánh được yêu cầu tuyển dụng năm nay.
Orbitra dựng lộ trình học cho nhiều nghề trong ngành AI, mỗi nghề một lộ trình riêng, rồi cá nhân hoá bằng cách đánh dấu những bài người học đã biết.
Lộ trình sinh từ dữ liệu tuyển dụng thật. Hệ thống thu thập tin tuyển dụng từ các trang việc làm Việt Nam, rút ra kỹ năng được nhắc nhiều nhất cho từng nghề, rồi dựng thành giáo trình chia theo chặng. Mỗi bài học đều truy ngược được về số tin tuyển dụng đã yêu cầu nó. Thị trường đổi thì chạy lại quy trình thu thập, lộ trình đổi theo.
Đánh dấu bài đã biết dựa trên bằng chứng, không dựa trên lời khai. Ba bước:
Nguyên tắc xuyên suốt: CV không bao giờ tự làm một bài trở thành "đã xong". Viết "có làm dự án RAG" trong CV không chứng minh được người đó hiểu RAG.
Để một câu hỏi kiểm được nhiều bài học cùng lúc mà kết quả vẫn tách bạch, hệ thống dựng một : một mạng lưới ghi rõ kiến thức nào nối với kiến thức nào.
| Loại | Là gì | Số lượng (nghề AI Agent) |
|---|---|---|
| Bài học | Một mục trong lộ trình, ví dụ "Docker" | 50 |
| Năng lực | Mảnh kiến thức nhỏ hơn bài học, nhỏ tới mức kiểm được bằng một quyết định. Bài "FastAPI" chẻ ra thành "biết khai báo ràng buộc dữ liệu đầu vào", "biết dùng dependency injection" | khoảng 120 |
| Ngộ nhận | Một hiểu sai phổ biến có thật, ví dụ "gọi lại yêu cầu tạo đơn sau khi mạng lỗi thì lúc nào cũng an toàn" | khoảng 70 |
| Ô tick | Một dòng để chọn trong câu hỏi, mang đúng một quyết định kỹ thuật | 6–12 mỗi câu |
| Câu hỏi | Một tình huống công việc kèm các ô tick | 15–20 |
Bài học cần học trước Bài học Bài học có Năng lực Ô tick chứng minh Năng lực (ô đúng) Ô tick bác bỏ Năng lực (ô sai) Ô tick thể hiện Ngộ nhận Câu hỏi gồm Ô tick
Việc 1 — quyết định gom bài nào với bài nào vào một câu hỏi. Đây là việc quan trọng nhất. Gom sai thì một câu trả lời sai sẽ phủ nhận oan những kiến thức không liên quan.
Hệ thống dùng mối nối "cần học trước" và cách chia chặng để tự kiểm: hai bài chỉ được gom khi chúng cùng chặng, hoặc cách nhau tối đa một bước trong mạng lưới. Kết quả là trong 1.225 cặp bài có thể ghép, chỉ 181 cặp được phép.
| Ghép | Kết quả | Lý do |
|---|---|---|
| Python + FastAPI | Cho phép | Cùng chặng, cùng một quyết định lập trình |
| Docker + Kubernetes | Cho phép | Cùng chặng triển khai |
| SQL + Vector Database | Từ chối | Hai chuyện khác nhau; người biết SQL không nên mất điểm vì chưa biết vector database |
| Python + Multi-agent Systems | Từ chối | Cách nhau quá xa trong lộ trình |
Luật này chạy tự động mỗi khi nạp nội dung. Người soạn không thể vô tình ghép bừa.
Việc 2 — bảo đảm không bài nào bị bỏ quên. Bản đồ bắt buộc mỗi bài trong lộ trình phải hoặc có năng lực để kiểm, hoặc được ghi rõ lý do vì sao không kiểm được. Không bài nào được rơi vào khoảng giữa mà không ai biết.
Việc 3 — bảo đảm mỗi năng lực đều đo được thật. Mỗi năng lực xuất hiện trong một câu hỏi phải có cả ô đúng lẫn ô sai. Thiếu một trong hai thì hệ thống từ chối nạp, vì khi đó "chọn hết" hoặc "không chọn gì" sẽ thành chiến thuật thắng.
Bản đồ được lưu dưới dạng ba tệp dữ liệu có kiểm tra tự động, không cần cơ sở dữ liệu đồ thị chuyên dụng — với quy mô này thì như vậy là đủ và dễ rà soát hơn.
Đây là bước quyết định lộ trình của mỗi người khác nhau ra sao.
Sau khi đọc CV, hệ thống chỉ biết "người này có thể đã biết những gì". Bài kiểm tra biến phỏng đoán đó thành kết luận có căn cứ. Không có bước này thì hoặc phải tin CV (dễ đánh dấu nhầm), hoặc bắt học lại từ đầu (lãng phí).
Chỉ hỏi những gì đang cần xác minh. Người có CV chứng minh được 2 nhóm kỹ năng nhận khoảng 6 câu; người 4 nhóm nhận 12–15 câu. Người chưa có gì trong CV thì không phải làm câu nào — lộ trình sinh ra ngay với đủ các bài chưa đánh dấu.
Một câu hỏi kiểm 3–5 bài. Mỗi câu là một tình huống công việc thật, không phải câu hỏi lý thuyết:
"Một API tạo đơn hàng bị gọi lại sau khi mạng lỗi và chậm dần khi nhiều người dùng cùng lúc. Chọn tất cả những việc bạn sẽ làm."
Nhờ vậy người dùng làm 6–9 câu thay vì vài chục, mất khoảng 15–20 phút.
Các ô đi thành cặp đúng–sai. Mỗi năng lực có ít nhất một ô đúng và một ô sai, và số ô đúng gần bằng số ô sai. Điều này làm chiến thuật "tick hết trừ cái nghe có vẻ tệ" trở nên vô dụng.
Ô sai dựa trên hiểu sai có thật. Không dùng đáp án nhiễu phi lý kiểu "dùng NumPy để định nghĩa dữ liệu đầu vào" — ai cũng loại được mà không cần biết chuyên môn. Ô sai phải là điều mà người thực sự hiểu sai sẽ chọn.
Chấm từng năng lực, không chấm cả gói. Đây là điểm kỹ thuật quan trọng nhất. Một ô tick sai chỉ đánh hỏng đúng năng lực mà ô đó nói tới:
| Chấm cả gói | Chấm từng năng lực | |
|---|---|---|
| Python | trượt | đúng |
| FastAPI | trượt | đúng |
| REST API | trượt | đúng |
| SQL | trượt | trượt |
| Bài được đánh dấu đã biết | 0 | 3 |
(Cùng một người, cùng một câu trả lời — chỉ sai phần đánh chỉ mục cơ sở dữ liệu.)
Một bài chỉ được đánh dấu đã biết khi trả lời đúng mọi năng lực bắt buộc của nó. Bài rộng như "Python" cần 3 năng lực; bài hẹp cần 1–2. Vì vậy xác suất tick bừa mà vẫn được đánh dấu là 1,6% với bài rộng và 6,25% với bài thường.
Làm bao nhiêu tuỳ ý. Người dùng bấm "Kết thúc đánh giá" bất cứ lúc nào; những câu chưa làm được ghi là chưa làm và các bài liên quan nằm trong phần cần học. Bài kiểm tra là đường tắt tuỳ chọn, không phải cổng bắt buộc để có lộ trình.
Mô hình ngôn ngữ chỉ được đề xuất, không được quyết. Khi chấm CV, mô hình đưa ra đề xuất kèm câu trích. Một bộ luật viết sẵn trên máy chủ rà lại từng đề xuất và chỉ có quyền hạ điểm, không bao giờ được nâng. Câu trích không khớp đúng từng chữ với CV thì bị loại. Lúc người dùng đang làm bài, hệ thống hoàn toàn không gọi mô hình ngôn ngữ — câu hỏi soạn sẵn, chấm bằng luật cố định.
Không chắc thì cho vào phần phải học. Trả lời sai, làm dở, hay chưa có câu hỏi phù hợp đều dẫn tới "cần học". Học thừa một bài thì mất thời gian; bỏ qua nhầm một bài nền tảng thì hỏng cả phần sau.
Mọi kết luận đều giải thích được. Với mỗi bài được đánh dấu đã biết, hệ thống lưu lại đầy đủ: câu hỏi nào, ô nào, năng lực nào, phiên bản nội dung nào.
Nội dung không sửa lén được. Mỗi tệp nội dung mang một mã sinh từ chính nội dung của nó. Đổi một chữ là mã đổi, và hệ thống biết bản đã duyệt không còn khớp.
Sản phẩm chạy được đầu-cuối trên nền web, không cần cài gì: nộp CV, xem kết quả chấm, xác nhận, làm bài, nhận lộ trình.
Dữ liệu đã có thật, không phải mô phỏng. Hệ thống hiện phủ 6 nghề trong ngành AI, ở các mức hoàn thiện khác nhau:
| Nghề | Trạng thái | Đã có gì |
|---|---|---|
| AI Agent Engineer | Đang mở, hoàn thiện nhất | Lộ trình 50 bài / 8 chặng, tài liệu học cho cả 50 bài, 48 bộ quiz, bộ đánh giá đầu vào |
| Data Engineering | Đang mở | Lộ trình 39 bài / 9 chặng |
| Data Science | Đang mở | Lộ trình 33 bài / 9 chặng |
| Machine Learning | Lộ trình xong, chờ mở | Lộ trình 35 bài / 7 chặng |
| MLOps | Khung nội dung xong, chờ sinh lộ trình | Kho chủ đề, bộ tiêu chí chấm CV |
| Computer Vision | Đang dựng | 43 bộ quiz, nguồn tài liệu, bộ tiêu chí chấm CV |
Ba nghề đầu đã mở cho người dùng chọn. Ba nghề còn lại đã có phần lớn nội dung; việc mở thêm là hoàn tất dữ liệu chứ không phải xây lại hệ thống — đây chính là điểm chứng minh kiến trúc tách được cơ chế khỏi nội dung.
Bộ tiêu chí chấm CV đã viết cho 7 nghề, phủ hết cả 6 nghề trên.
Phần đo lường chất lượng cũng đã dựng sẵn: trước khi cho phép hệ thống tự quyết định thật, phải có ít nhất 200 kết luận "đã biết" được chuyên gia chấm lại, và tỉ lệ đánh dấu nhầm phải dưới 5%. Đây là điều kiện bắt buộc, không phải mục tiêu phấn đấu.
Hướng phát triển của Orbitra dựa trên một điều: càng nhiều người dùng thì lộ trình càng chính xác, vì mỗi người dùng để lại hai loại tín hiệu mà hệ thống học được.
Hiện lộ trình chuẩn của mỗi nghề do dữ liệu tuyển dụng quyết định. Bước tiếp theo là cho người dùng tự sửa lộ trình của mình: thêm bài họ thấy thiếu, bỏ bài họ thấy không cần, đổi thứ tự học.
Từng chỉnh sửa lẻ chỉ ảnh hưởng người đó. Nhưng khi gom lại trên nhiều người, chúng thành tín hiệu để sửa lộ trình chuẩn:
Cách này lấy kinh nghiệm thật của người trong nghề để bổ khuyết cho dữ liệu tuyển dụng — tin tuyển dụng nói nhà tuyển dụng muốn gì, còn người học nói thực tế cần gì để làm được việc.
Hiện độ khó của câu hỏi do người soạn tự đánh giá. Khi đã có đủ lượt trả lời, hệ thống đo được độ khó thật từ dữ liệu:
Đo được điều này thì bài kiểm tra ngắn lại mà vẫn chính xác như cũ: hỏi câu phân biệt tốt trước, và dừng sớm khi đã đủ căn cứ kết luận. Toàn bộ dữ liệu thô cần cho việc này — câu nào đã phát cho ai, họ chọn ô nào, mất bao lâu — đã được ghi lại từ bây giờ, nên khi đủ số lượng là dùng được ngay, không phải làm lại từ đầu.
Hai cơ chế trên cộng lại làm việc mở nghề mới rẻ dần. Nghề đầu tiên phải soạn nội dung kiểm tra từ đầu. Nhưng nhiều kỹ năng dùng chung giữa các nghề — Python, Docker, SQL, FastAPI — nên câu hỏi đã kiểm định cho nghề này dùng lại được cho nghề khác. Điều này đã thấy được trong dữ liệu hiện có: kho quiz của Computer Vision và của AI Agent Engineer đều có bài Docker và FastAPI.
Đích cuối: phủ hết các nghề AI đang tuyển ở Việt Nam, và lộ trình mỗi nghề tự cập nhật theo cả hai nguồn — tin tuyển dụng mới và hành vi của người đang học.