messenger

Chat Mess

zalo

Chat Zalo

phone

Phone

Gọi ngay: 097.5151.777
messenger

Facebook

messenger

TikTok

Hỗ trợ tư vấn: 097.5151.777
ACB

HO - AI Engineer Expert

Hội sở (Hồ Chí Minh) Phân tích Dữ liệu
Thương lượng Hạn: 2026-07-31

Mô tả công việc

🚀Key Responsibilities Architecture & Technical Design - Own end-to-end architecture for the team‘s RAG, Agentic and Multi-Agent systems - retrieval strategy, agent orchestration patterns (Planner–Executor, Router, Verifier, Reviewer), tool-calling layer and state management. - Make and defend technology choices (vector DB, embedding model, orchestration framework, observability stack) with explicit trade-off analysis on capability, cost, latency and compliance. - Set engineering standards (coding conventions, inter-agent contracts, MCP tool schemas, minimum observability bar) and write ADRs for high-impact decisions. - Design reusable components (retrieval templates, MCP server skeletons, guardrail middleware, evaluation harnesses) so engineers don‘t rebuild foundations for each product. Hands-on Engineering - Personally write code for the hardest components: agent orchestration core, tool-calling middleware, complex retrieval, guardrail engine and tricky integrations with bank legacy systems. - Prototype new architectural ideas and own the hard production incidents the team can‘t crack — hallucination edge cases, retrieval regressions, vLLM latency spikes, schema-breaking tool-call failures. - Stay hands-on: expect 40–50% of your time on direct coding. This is not a technical PM seat. Mentorship & Code Review - Run high-quality code reviews that teach failure modes, cost awareness, observability and maintainability — not just check logic. - Mentor engineers 1-on-1 on technical growth and design decisions. Stakeholder Representation, R&D and Reliability - Be the team‘s technical face with Risk, Compliance, IT Infrastructure and Business - translating regulatory and business constraints into design decisions, and technical trade-offs back to stakeholders. - Drive technical R&D: evaluate emerging techniques, run benchmarks, separate hype from value, and contribute to the division‘s technical roadmap. - Own production quality KPIs (hallucination rate, retrieval recall@k, tool success rate, latency, uptime); maintain evaluation frameworks that gate deployments; lead incident response and post-mortems. - Enforce banking-grade non-functional requirements: auditability, explainability and end-to-end traceability for internal audit and legal. 💼 Core Requirements Must-Have - Bachelor‘s degree or higher in Computer Science, AI, Data Science or a related field. - At least 10 years of professional software engineering, with at least 3 years hands-on production work on LLM systems / RAG / Agentic AI. Shipped at least 2 AI systems to production with real users - not POCs or demos. - Production-grade Python: async-first (asyncio, aiohttp), Pydantic data modeling, clean modular design. - Real RAG / Agentic experience: debugged retrieval quality issues for real, understands cosine vs. dot product. - LangChain / LangGraph: fluent with the state-machine model, custom nodes and practical edge cases. - Vector databases & LLM serving: non-trivial production pipelines on Qdrant, Milvus or Pinecone (index schema, namespaces, metadata filtering); hands-on deployment of open-source LLMs via vLLM with concurrency, batching and quantization (AWQ/GPTQ) tuned to cost-vs-latency targets. - MCP & containerization: designed or implemented MCP servers / tool schemas for agent consumption in production; comfortable with Docker, Compose and Kubernetes basics - can package and ship a service end-to-end. - LLM observability: designed observability for new systems with Langfuse, W&B or LangSmith - not just used existing setups. - Systems thinking & technical leadership: thinks in failure modes, blast radius and tail latency; writes clear design docs/ADRs; defends decisions with data; has mentored engineers with concrete impact; works effectively with non-technical stakeholders. Nice-to-Have - Experience in banking, financial services or other regulated industries. - Hands-on fine-tuning (LoRA, QLoRA) for domain-specific tasks, especially Vietnamese or financial terminology. - Experience with the Qwen series in on-premise or air-gapped environments; or production work with Voicebot, OCR/VLM or other multimodal AI. - Open-source contributions to AI tooling (LangChain, LangGraph, vLLM, Qdrant or similar). Nộp đơn ứng tuyển công việc này Họ & tên bạn * Địa chỉ email * Số điện thoại * Ngày tháng năm sinh * Trình độ học vấn (Education)  * -- Trình độ học vấn (Education) --Chưa tốt nghiệp (No degree)Phổ thông (High school)Trung cấpCao đẳng (College)Đại học (University/Academy)Thạc sỹ (Master)Tiến sỹ (PhD)Sau đại học (Postgraduate)Khác (Others) Bạn biết đến cơ hội ứng tuyển này qua kênh nào?  * -- Bạn biết đến cơ hội ứng tuyển này qua kênh nào? --Website tuyển dụng ACBFacebook ACBLinkedIn ACBWebsite việc làmQuảng cáo onlineNgười giới thiệuKhác + Thông tin thêm CV của bạn * Click để chọn & tải lên CV của bạn Nộp đơn ứng tuyển Bỏ qua --> { "@context": "http://schema.org", "@type": "JobPosting", "jobLocation" : { "@type": "Place", "address": { "@type": "PostalAddress", "addressLocality": "No address locality", "addressRegion": "No address region", "streetAddress": "No street address", "postalCode": "0" } }, "datePosted":"2026-05-28", "description":"🚀Key Responsibilities Architecture & Technical Design - Own end-to-end architecture for the team's RAG, Agentic and Multi-Agent systems - retrieval strategy, agent orchestration patterns (Planner–Executor, Router, Verifier, Reviewer), tool-calling layer and state management. - Make and defend technology choices (vector DB, embedding model, orchestration framework, observability stack) with explicit trade-off analysis on capability, cost, latency and compliance. - Set engineering standards (coding conventions, inter-agent contracts, MCP tool schemas, minimum observability bar) and write ADRs for high-impact decisions. - Design reusable components (retrieval templates, MCP server skeletons, guardrail middleware, evaluation harnesses) so engineers don't rebuild foundations for each product. Hands-on Engineering - Personally write code for the hardest components: agent orchestration core, tool-calling middleware, complex retrieval, guardrail engine and tricky integrations with bank legacy systems. - Prototype new architectural ideas and own the hard production incidents the team can't crack — hallucination edge cases, retrieval regressions, vLLM latency spikes, schema-breaking tool-call failures. - Stay hands-on: expect 40–50% of your time on direct coding. This is not a technical PM seat. Mentorship & Code Review - Run high-quality code reviews that teach failure modes, cost awareness, observability and maintainability — not just check logic. - Mentor engineers 1-on-1 on technical growth and design decisions. Stakeholder Representation, R&D and Reliability - Be the team's technical face with Risk, Compliance, IT Infrastructure and Business - translating regulatory and business constraints into design decisions, and technical trade-offs back to stakeholders. - Drive technical R&D: evaluate emerging techniques, run benchmarks, separate hype from value, and contribute to the division's technical roadmap. - Own production quality KPIs (hallucination rate, retrieval recall@k, tool success rate, latency, uptime); maintain evaluation frameworks that gate deployments; lead incident response and post-mortems. - Enforce banking-grade non-functional requirements: auditability, explainability and end-to-end traceability for internal audit and legal. 💼 Core Requirements Must-Have - Bachelor's degree or higher in Computer Science, AI, Data Science or a related field. - At least 10 years of professional software engineering, with at least 3 years hands-on production work on LLM systems / RAG / Agentic AI. Shipped at least 2 AI systems to production with real users - not POCs or demos. - Production-grade Python: async-first (asyncio, aiohttp), Pydantic data modeling, clean modular design. - Real RAG / Agentic experience: debugged retrieval quality issues for real, understands cosine vs. dot product. - LangChain / LangGraph: fluent with the state-machine model, custom nodes and practical edge cases. - Vector databases & LLM serving: non-trivial production pipelines on Qdrant, Milvus or Pinecone (index schema, namespaces, metadata filtering); hands-on deployment of open-source LLMs via vLLM with concurrency, batching and quantization (AWQ/GPTQ) tuned to cost-vs-latency targets. - MCP & containerization: designed or implemented MCP servers / tool schemas for agent consumption in production; comfortable with Docker, Compose and Kubernetes basics - can package and ship a service end-to-end. - LLM observability: designed observability for new systems with Langfuse, W&B or LangSmith - not just used existing setups. - Systems thinking & technical leadership: thinks in failure modes, blast radius and tail latency; writes clear design docs/ADRs; defends decisions with data; has mentored engineers with concrete impact; works effectively with non-technical stakeholders. Nice-to-Have - Experience in banking, financial services or other regulated industries. - Hands-on fine-tuning (LoRA, QLoRA) for domain-specific tasks, especially Vietnamese or financial terminology. - Experience with the Qwen series in on-premise or air-gapped environments; or production work with Voicebot, OCR/VLM or other multimodal AI. - Open-source contributions to AI tooling (LangChain, LangGraph, vLLM, Qdrant or similar). ", "employmentType":"Toàn thời gian", "hiringOrganization": { "@type": "Organization", "name": "Ngân hàng Á Châu - ACB", "sameAs" : "http://www.acbjobs.com.vn" }, "identifier": { "@type": "PropertyValue", "name": "HO - AI Engineer Expert", "value": "54962" }, "title": "HO - AI Engineer Expert", "validThrough":"2026-07-31" }

Phân tích kỹ năng cần có

## Phân tích Kỹ năng cho vị trí AI Engineer Expert tại ACB ### 📊 Bức tranh tổng quan Đây là vị trí **cấp cao chuyên môn (Expert/Staff level)** trong lĩnh vực AI Engineering tại ngân hàng, không phải manager hay tech lead truyền thống. Với yêu cầu **10+ năm kinh nghiệm software engineering** và **3+ năm production LLM/RAG**, đây là một trong những JD AI kỹ thuật nhất mà mình từng thấy ở thị trường Việt Nam. --- ### 🔧 Hard Skills - Phân tích chi tiết #### 1. **LLM Systems & RAG Architecture** (BẮT BUỘC - Cấp độ Expert) | Kỹ năng | Yêu cầu thực tế | Trọng số | |---------|-----------------|----------| | RAG Pipeline | Hiểu sâu retrieval strategy, chunking, re-ranking, hybrid search | ⭐⭐⭐⭐⭐ | | Vector DB | Qdrant/Milvus/Pinecone - index schema, namespace, metadata filtering | ⭐⭐⭐⭐⭐ | | Embedding | Cosine vs dot product, dimension tradeoff, batch inference | ⭐⭐⭐⭐ | | Agentic Patterns | Planner-Executor, Router, Verifier, Reviewer, Multi-Agent | ⭐⭐⭐⭐⭐ | **Điểm mấu chốt**: JD nhấn mạnh "debugged retrieval quality issues for real" - tức là không phải setup demo, mà phải đã thực sự debug production issues như: - Retrieval recall thấp → phải phân tích chunking strategy - Hallucination → phải thiết kế guardrail engine - Latency spike → phải optimize batching, quantization #### 2. **LangChain / LangGraph** (BẮT BUỘC) ```python # Phải hiểu sâu state-machine model như thế này: from langgraph.graph import StateGraph class AgentState(TypedDict): messages: Annotated[list, operator.add] current_step: str context: dict # Custom node với edge cases thực tế def planner_node(state: AgentState) -> AgentState: # Xử lý planning với edge cases pass def executor_node(state: AgentState) -> AgentState: # Tool calling với error handling pass ``` **Benchmark thực tế**: Có thể implement từ scratch một LangGraph workflow với 5+ nodes, handle retry logic, và define conditional edges. #### 3. **LLM Serving & Deployment** (BẮT BUỘC) ```python # vLLM deployment - phải hiểu production config from vllm import LLM, SamplingParams llm = LLM( model="Qwen/Qwen2-72B-Instruct", tensor_parallel_size=2, gpu_memory_utilization=0.9, max_model_len=8192, quantization="AWQ", # hoặc GPTQ enforce_eager=False # CUDA graph optimization ) # Concurrency & batching tuning sampling_params = SamplingParams( temperature=0.7, top_p=0.9, max_tokens=512, stop_token_ids=[151643] ) ``` **Must-have knowledge**: - AWQ vs GPTQ quantization tradeoff - Tensor parallelism vs pipeline parallelism - Prefix caching để optimize cost - Batching strategy cho latency requirement #### 4. **MCP (Model Context Protocol) & Containerization** (BẬT BUỘC) MCP là protocol mới cho phép agent gọi external tools. Cần hiểu: ```json // MCP tool schema example { "name": "get_account_balance", "description": "Retrieve current balance for a customer account", "inputSchema": { "type": "object", "properties": { "account_id": { "type": "string", "pattern": "^ACC[0-9]{8}$" } }, "required": ["account_id"] } } ``` **Container deployment**: Docker → Compose → Kubernetes basics. Không cần K8s expert, nhưng phải ship được service end-to-end. #### 5. **LLM Observability** (BẮT BUỘC) Đây là điểm khác biệt giữa "dùng thử" và "design observability": ```python # Langfuse example - phải design từ đầu from langfuse import Langfuse langfuse = Langfuse() def trace_llm_call(prompt, model, response): langfuse.trace( name="agent_step", metadata={ "model": model, "latency": measure_latency(), "cost": calculate_cost(prompt, response), "hallucination_score": eval_hallucination(response) } ) ``` **KPIs phải track được**: hallucination rate, retrieval recall@k, tool success rate, latency p50/p95/p99, uptime. --- ### 🎯 Soft Skills - Không kém phần quan trọng | Kỹ năng | Giải thích | Ví dụ hỏi phỏng vấn | |---------|------------|---------------------| | Systems Thinking | Nghĩ về failure modes, blast radius, tail latency | "What happens when vLLM pod crashes mid-request?" | | Technical Writing | Viết ADR, design docs rõ ràng | Review portfolio về architecture decisions | | Stakeholder Management | Translate tech → business, compliance | "How would you explain RAG to a compliance officer?" | | Mentorship | 1-on-1 coaching với impact đo lường được | "Tell me about an engineer you mentored" | | Cross-functional Communication | Làm việc với Risk, IT, Legal | "What banking regulations affect AI systems?" | --- ### 📜 Chứng chỉ & Định hướng học tập **Khuyến nghị** (theo thứ tự ưu tiên): 1. **LangChain / LangGraph Official Courses** - có certification 2. **AWS/GCP ML Specialty** - đặc biệt nếu deploy trên cloud 3. **Coursera: DeepLearning.AI LLMOps** - mới ra, phù hợp production focus 4. **Kubernetes CKA** - nếu chưa có kinh nghiệm K8s 5. **CUDA Programming** - để optimize vLLM performance --- ### 📊 Self-Assessment Checklist | Level | Kỹ năng | Đánh giá | |-------|---------|----------| | ⬛⬛⬛⬛⬜ | RAG Pipeline từ A-Z | Có tự deploy được không? | | ⬛⬛⬛⬛⬜ | LangGraph State Machine | Có implement được multi-agent workflow? | | ⬛⬛⬛⬜⬜ | vLLM Deployment | Đã từng tune quantization chưa? | | ⬛⬛⬛⬜⬜ | MCP Protocol | Hiểu tool schema design chưa? | | ⬛⬛⬛⬜⬜ | Observability Design | Từng design metrics từ đầu chưa? | | ⬛⬛⬜⬜⬜ | Banking/Finance Domain | Biết compliance requirements chưa? | **Công thức đánh giá**: Nếu có < 4/6 kỹ năng ở mức ⬛⬛⬛⬛, cần bổ sung kinh nghiệm production trước khi apply.

Chuẩn bị phỏng vấn

## Hướng dẫn Phỏng vấn cho AI Engineer Expert tại ACB ### 🏦 Về ACB và Phòng ban Data Analysis **ACB (Ngân hàng Á Châu)** là một trong những ngân hàng TMCP lớn tại Việt Nam, đang đẩy mạnh chuyển đổi số. Phòng Phân tích Dữ liệu (Data Analysis) là team core cho các initiative AI/ML của ngân hàng - bao gồm: - Chatbot/Virtual Assistant cho customer service - Document processing (OCR, NER cho KYC, loan processing) - Internal tools (RAG-based knowledge retrieval) - Risk scoring models Vị trí này sẽ là **technical anchor** cho team AI, trực tiếp code và mentor 2-4 engineers. --- ### 📋 Quy trình phỏng vấn dự kiến **Lưu ý**: Đây là vị trí cấp cao nên thường có 3-4 vòng: ``` Vòng 1: HR Screening (30-45 phút) ↓ Kiểm tra basic qualifications, salary expectation, visa status nếu cần Vòng 2: Technical Deep Dive (60-90 phút) ↓ Coding + System Design + AI Architecture Vòng 3: Take-home Assignment hoặc Architecture Review (1-2 tuần) ↓ Present solution trước panel Vòng 4: Final Round với VP/Head (30-45 phút) ↓ Culture fit, career alignment, offer discussion ``` --- ### 🎯 Vòng 1: HR Screening **Câu hỏi thường gặp**: 1. **"Tại sao bạn quan tâm đến vị trí này tại ACB?"** - Tips: Nghiên cứu trước về AI initiatives của ACB (ACB digi app, AI chatbot). Thể hiện interest trong fintech/banking domain. 2. **"Bạn đang ở đâu trong career path và mức lương mong đợi?"** - Tips: Với level này, thường senior engineers có expectation 60-120 triệu/tháng tại HCM. Có thể đàm phán cao hơn nếu có offer competitors. 3. **"Mô tả ngắn một project AI production gần đây nhất của bạn"** - Tips: Chuẩn bị 2-3 projects, mỗi project 2-3 phút. Focus vào: - Problem: Bài toán gì? - Solution: Đã giải quyết thế nào? - Impact: Kết quả đo lường được? 4. **"Bạn có kinh nghiệm làm việc trong môi trường regulated industry chưa?"** - Tips: Nếu chưa có, thể hiện willingness và quick learner. Compliance requirements trong banking khác retail/tech. --- ### 💻 Vòng 2: Technical Deep Dive #### A. Coding Round (45-60 phút) **Định dạng**: Có thể là LeetCode medium hoặc practical Python **Ví dụ đề thi thực tế**: ```python # Problem: Implement a simple RAG retrieval with vector similarity # Không cần import thư viện vector DB - chỉ cần numpy import numpy as np def cosine_similarity(a: list[float], b: list[float]) -> float: """Calculate cosine similarity between two vectors""" # YOUR CODE HERE pass def retrieve_top_k(query_embedding: list[float], doc_embeddings: list[list[float]], k: int = 3) -> list[int]: """Return indices of top-k most similar documents""" # YOUR CODE HERE pass # Test case query = [0.1, 0.9, 0.3] docs = [[0.2, 0.8, 0.3], [0.9, 0.1, 0.2], [0.5, 0.5, 0.5]] assert retrieve_top_k(query, docs, 2) == [0, 2] # or [0, 1] - depends on implementation ``` **Thêm vài bài type hay gặp**: - Async Python patterns (asyncio, aiohttp) - Pydantic model validation - LRU cache implementation cho memoization - BFS/DFS cho graph traversal (LangGraph state machine) #### B. System Design Round (45-60 phút) **Cấu trúc câu hỏi**: "Thiết kế một RAG system cho internal banking knowledge base" **Framework trả lời**: ``` 1. REQUIREMENTS CLARIFICATION (5 phút) - User base: internal staff (1,000) vs customers (100,000)? - Query type: Q&A, summarization, data retrieval? - Latency requirement: < 1s, < 3s? - Compliance: audit trail cần thiết không? 2. HIGH-LEVEL ARCHITECTURE (15 phút) [User Query] ↓ [Embedding Service] → [Vector DB] ↓ ↑ [LLM API / vLLM] ←─── [Retrieval] ↓ [Guardrail Layer] ↓ [Response + Audit Log] 3. COMPONENT DEEP DIVE (20 phút) - Chunking strategy: how to split documents? - Embedding model: which one and why? - Vector DB choice: Qdrant vs Pinecone tradeoff - LLM serving: cloud API vs self-hosted - Observability: what metrics to track? 4. RELIABILITY & COMPLIANCE (10 phút) - How to handle hallucinations? - Audit trail for compliance - Fallback when system fails - Cost estimation ``` **Điểm đánh giá quan trọng**: - Trade-off analysis (cost vs quality vs latency) - Failure mode thinking - Compliance awareness (banking context) - Practical implementation details #### C. AI Architecture Deep Dive (30-45 phút) **Câu hỏi kỹ thuật AI hay gặp**: 1. **"Explain the difference between cosine similarity and dot product in vector search. When would you use which?"** - Answer: Cosine normalized → angle-based similarity. Dot product → magnitude matters. Use dot product when all embeddings are unit-normalized (faster). Use cosine when magnitude variation matters. 2. **"How would you handle a hallucination issue in production RAG?"** - Multi-layered approach: retrieval quality (re-ranking, hybrid search), prompt engineering, guardrails, response validation, human-in-the-loop for high-stakes outputs. 3. **"Design an evaluation framework for your RAG system. What metrics would you track?"** - Answer: - Retrieval: Recall@K, MRR, NDCG - Generation: ROUGE, BLEU (proxy), G-eval (LLM-based) - End-to-end: Task completion rate, user satisfaction - Cost: per-query cost, latency percentiles 4. **"Walk me through your LangGraph workflow design for a banking agent"** - Phải draw được state machine, explain nodes và transitions 5. **"What is MCP and why does it matter for agent systems?"** - Model Context Protocol - standardized way for agents to call tools. Similar to how REST APIs standardized web services. --- ### 📝 Vòng 3: Take-home Assignment **Dạng bài có thể gặp**: **Assignment: RAG System for Banking FAQ** ``` Challenge: Build a simple RAG system that answers questions about banking products (savings, loans, cards). Requirements: 1. Data: We'll provide 20 banking FAQ documents (simulated) 2. Implement: Chunking, embedding, vector storage, retrieval, generation 3. Metrics: Implement basic evaluation (retrieval accuracy, response quality) 4. Documentation: ADR explaining your architectural decisions Deliverables (within 1 week): - Source code on GitHub - README with setup instructions - ADR document - Demo (local or deployed) Grading criteria: - Code quality (40%) - Architecture decisions (30%) - Documentation (20%) - Demo working (10%) ``` **Cách chuẩn bị**: - Dùng LangChain/LangGraph để build nhanh - Deploy lên HuggingFace Spaces hoặc localhost để demo - Viết ADR cho 2-3 key decisions --- ### 👔 Vòng 4: Final Round với Leadership **Câu hỏi thường gặp**: 1. **"Where do you see AI in banking in 3-5 years?"** - Tips: Research trends - agentic banking, automated compliance, hyper-personalization 2. **"How would you prioritize between building new features vs. improving reliability?"** - Tips: SRA framework (Safety, Reliability, Availability) for banking. New features come after stability. 3. **"Tell me about a time you had to push back on a technical decision. What happened?"** - Tips: Có sẵn 1-2 stories về tech debt, premature optimization, compliance constraints 4. **"How do you mentor engineers? Give an example of someone you helped grow"** - Tips: Prepare specific story với measurable outcome 5. **"What is your expected compensation and notice period?"** - Tips: Research market rate - position này có thể 80-150 triệu VND/tháng tùy profile --- ### 👔 Dress Code & Logistics **Dress code**: Business casual - Nam: áo sơ mi (không cần vest), quần tây, giày lịch sự - Nữ: áo blouse hoặc sơ mi, quần hoặc váy lịch sự - IT company nên smart casual cũng được chấp nhận **Địa điểm**: Hội sở ACB, Tòa nhà ACB Tower, 466 Nguyễn Thị Minh Khai, Quận 3, HCM **Tips thực tế**: - Mang theo laptop nếu technical round - Chuẩn bị portfolio link (GitHub, technical blog) - Đến sớm 15 phút - Follow up email sau mỗi vòng --- ### ⚠️ Red Flags trong phỏng vấn - Cần tránh 1. **Không biết production issues**: Nói được theory nhưng không handle được follow-up về debugging 2. **Over-engineering**: Thiết kế quá phức tạp cho simple use case 3. **Ignoring compliance**: Không đề cập audit, explainability khi làm banking 4. **No mentorship examples**: Không có story về helping others grow 5. **Salary mismatch**: Expectation không realistic với market

Lộ trình ôn thi

## Lộ trình Ôn thi & Chuẩn bị cho AI Engineer Expert ### 📅 Gợi ý Timeline: 2-4 tuần trước phỏng vấn --- ### Tuần 1: Foundations Review **Mục tiêu**: Đảm bảo fundamentals vững #### 1. Python Advanced (Ngày 1-2) ```python # Async patterns - MUST KNOW import asyncio from aiohttp import ClientSession async def batch_embed(texts: list[str]) -> list[list[float]]: """Production async embedding call""" async with ClientSession() as session: tasks = [embed_single(session, text) for text in texts] return await asyncio.gather(*tasks) async def embed_single(session: ClientSession, text: str) -> list[float]: # Implementation with retry logic, timeout pass # Pydantic models - MUST HAVE from pydantic import BaseModel, Field, field_validator from typing import Optional class RetrievalResult(BaseModel): chunk_id: str = Field(..., description="Unique chunk identifier") text: str = Field(..., min_length=10, max_length=2000) score: float = Field(..., ge=0.0, le=1.0) metadata: dict = Field(default_factory=dict) @field_validator('chunk_id') @classmethod def validate_chunk_id(cls, v: str) -> str: if not v.startswith('chunk_'): raise ValueError('chunk_id must start with "chunk_"') return v ``` **Practice**: Implement async retry decorator với exponential backoff #### 2. RAG Deep Dive (Ngày 3-4) **Đọc/B看不完 tài liệu**: - RAG tutorial của LangChain: https://python.langchain.com/docs/tutorials/rag/ - Chunking strategies article (từ Pinecone) - Hybrid search implementation **Hands-on project** (clone và chạy): ```bash git clone https://github.com/langchain-ai/rag-from-scratch cd rag-from-scratch pip install -e . ``` **Key concepts cần nắm vững**: | Concept | Depth level cần đạt | |---------|---------------------| | Chunking | Fixed size, semantic, recursive character split | | Embedding models | OpenAI, BGE, e5, nomic - so sánh trade-offs | | Vector DB ops | CRUD, metadata filtering, ANN algorithms (HNSW, IVF) | | Re-ranking | Cross-encoder vs bi-encoder approaches | | Hybrid search | Dense + sparse (BM25) combination | #### 3. LangGraph Mastery (Ngày 5-7) ```python # Full LangGraph workflow - PHẢI CODE ĐƯỢC from langgraph.graph import StateGraph, END from typing import TypedDict, Annotated import operator class AgentState(TypedDict): messages: Annotated[list, operator.add] current_node: str retrieved_docs: list hallucinations: int def create_agent_graph(): graph = StateGraph(AgentState) # Add nodes graph.add_node("planner", planner_node) graph.add_node("retriever", retriever_node) graph.add_node("generator", generator_node) graph.add_node("verifier", verifier_node) # Define edges graph.add_edge("planner", "retriever") graph.add_edge("retriever", "generator") graph.add_edge("generator", "verifier") # Conditional edge from verifier graph.add_conditional_edges( "verifier", should_continue, { "regenerate": "generator", # hallucinations detected "end": END # quality acceptable } ) return graph.compile() def should_continue(state: AgentState) -> str: if state["hallucinations"] > 2: return "end" # Max retries, return anyway elif state.get("quality_score", 0) < 0.7: return "regenerate" return "end" ``` **Must-complete tutorials**: 1. LangGraph quick-start 2. RAG with LangGraph 3. Agentic patterns (multi-agent) --- ### Tuần 2: Production Systems **Mục tiêu**: Hiểu sâu về deployment và operations #### 1. vLLM Deployment (Ngày 1-2) ```bash # Basic vLLM deployment pip install vllm # Test locally python -m vllm.entrypoints.openai.api_server \ --model Qwen/Qwen2-7B-Instruct \ --dtype half \ --port 8000 # Test API curl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "Qwen/Qwen2-7B-Instruct", "messages": [{"role": "user", "content": "Hello!"}] }' ``` **Advanced topics cần hiểu**: - Tensor parallelism (multiple GPUs) - Quantization (AWQ, GPTQ, GGUF) - Batching strategies (continuous vs static) - Prefix caching - Speculative decoding #### 2. Vector DB Deep Dive (Ngày 3-4) **Qdrant (Khuyến nghị vì self-hosted, Rust-based)**: ```python from qdrant_client import QdrantClient from qdrant_client.models import Distance, VectorParams, PointStruct # Initialize client client = QdrantClient("localhost", port=6333) # Create collection with specific config client.create_collection( collection_name="banking_kb", vectors_config=VectorParams( size=1024, # BGE-large dimension distance=Distance.COSINE ) ) # Upsert with payload points = [ PointStruct( id=idx, vector=embedding, payload={ "text": doc_text, "doc_type": "faq", "category": "loan", "created_at": "2024-01-15" } ) for idx, (doc_text, embedding) in enumerate(documents) ] client.upsert( collection_name="banking_kb", points=points ) # Metadata filtering results = client.search( collection_name="banking_kb", query_vector=query_embedding, query_filter=models.Filter( must=[ models.FieldCondition( key="doc_type", match=models.MatchValue(value="faq") ) ] ), limit=5 ) ``` **Compare Vector DBs**: | Feature | Qdrant | Milvus | Pinecone | Weaviate | |---------|--------|--------|----------|----------| | Deployment | Self-hosted | Self-hosted | Cloud/On-prem | Both | | Performance | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | | Filtering | Excellent | Good | Good | Excellent | | Ecosystem | Growing | Large | Managed | Good | | Recommendation | ✅ Best for banking | High scale | Quick setup | Flexible | #### 3. MCP & Tool Calling (Ngày 5-6) ```python # MCP Server Example from mcp.server.fastmcp import FastMCP from pydantic import BaseModel mcp = FastMCP("BankingTools") @mcp.tool() def get_account_balance(account_id: str) -> dict: """Get current balance for a customer account. Args: account_id: Account ID in format ACC######## Returns: Dictionary with balance and currency """ # Validate format import re if not re.match(r'^ACC\d{8}$', account_id): raise ValueError("Invalid account ID format") # Call banking API return {"balance": 50000000, "currency": "VND"} @mcp.tool() def transfer_funds(from_account: str, to_account: str, amount: float) -> dict: """Transfer funds between accounts. Requires: - Both accounts must exist - Sufficient balance - Within daily limit """ # Implementation with compliance checks pass ``` #### 4. Observability Setup (Ngày 7) ```python # Langfuse setup from langfuse import Langfuse from langfuse.decorators import langfuse_context, observe langfuse = Langfuse() @observe() def retrieval_step(query: str): # Langfuse tự động trace results = vector_db.search(query) langfuse_context.update_current_trace( metadata={ "retrieval_count": len(results), "top_score": results[0].score if results else 0 } ) return results @observe() def generation_step(context: str, query: str): response = llm.generate(context, query) langfuse_context.update_current_trace( metadata={ "model": model_name, "tokens_used": response.usage.total_tokens, "latency_ms": response.latency } ) return response ``` **Metrics phải track được**: | Metric | Target | Alert threshold | |--------|--------|------------------| | Retrieval Recall@5 | > 0.85 | < 0.75 | | Hallucination Rate | < 5% | > 10% | | Tool Success Rate | > 98% | < 95% | | Latency p95 | < 3s | > 5s | | Cost per Query | < $0.01 | > $0.05 | --- ### Tuần 3-4: Mock Interviews & Portfolio Building #### 1. Coding Practice **LeetCode problems recommended** (medium/hard): - 239. Sliding Window Maximum (async batching concept) - 146. LRU Cache (memoization patterns) - 200. Number of Islands (graph traversal) - 690. Employee Importance (tree/graph) **Thực hành practical coding**: ```python # Write from scratch - không dùng LangChain helper functions def simple_rag(query: str, docs: list[str], top_k: int = 3) -> str: """ Simple RAG implementation without LangChain: 1. Embed query 2. Embed documents 3. Compute similarities 4. Retrieve top-k 5. Generate response (mock) """ pass ``` #### 2. System Design Mock **Practice scenarios**: 1. **"Design a customer service chatbot for ACB mobile app"** - Multi-turn conversation - Integration với banking APIs - Compliance requirements - Fallback strategy 2. **"How would you improve an existing RAG system with 30% hallucination rate?"** - Diagnose root causes - Propose layered solution - Prioritize by impact - Timeline estimation 3. **"Design evaluation framework for agent system"** - Unit tests per component - Integration tests - End-to-end benchmarks - Monitoring production #### 3. Portfolio Preparation **GitHub profile cần có**: ``` 📁 ai-engineering/ ├── 📁 projects/ │ ├── 📁 rag-banking-kb/ # Main project │ │ ├── README.md │ │ ├── src/ │ │ ├── tests/ │ │ └── ADR.md # Architecture Decision Records │ ├── 📁 langgraph-workflow/ │ │ └── Multi-agent implementation │ └── 📁 vllm-deployment/ │ └── Production deployment configs ├── 📁 experiments/ │ └── Benchmark results └── 📁 contributions/ └── Open source contributions (if any) ``` **ADR template**: ```markdown # ADR-001: Vector Database Selection ## Status Accepted ## Context We need to select a vector database for our RAG system serving 1000+ daily internal queries. ## Decision We chose Qdrant for the following reasons: - Self-hosted (data sovereignty for banking) - Excellent filtering capabilities - Good Rust-based performance - Active community ## Consequences - Pro: Full control over data - Pro: Cost-effective at our scale - Con: Operational overhead - Con: Need DevOps expertise ``` --- ### 📚 Tài liệu tham khảo **Books (nếu có thời gian)**: 1. "Designing Data-Intensive Applications" - Martin Kleppmann 2. "Building LLM Applications" - (sắp ra) 3. "The Pragmatic Programmer" - hồi tưởng **Courses**: 1. DeepLearning.AI: LLMOps Specialization 2. LangChain: LLM Application Development 3. Weights & Biases: ML Engineering **Papers**: 1. RAG survey papers (2024) 2. Agentic AI architectures 3. Vector DB comparison studies **Blogs/Articles**: 1. Lilian Weng's blog (OpenAI) - Agentic systems 2. Pinecone blog - RAG best practices 3. Qdrant blog - Vector search advanced topics 4. Hugging Face blog - vLLM, fine-tuning **YouTube channels**: 1. AssemblyAI 2. Sentdex 3. DataEngineering Weekly --- ### ✅ Final Checklist trước ngày phỏng vấn - [ ] Có thể implement RAG từ scratch (không dùng LangChain) - [ ] Hiểu sâu về LangGraph state machine - [ ] Deploy được vLLM với basic optimization - [ ] Design được observability cho AI system - [ ] Viết được ADR cho 2-3 decisions - [ ] Có 2-3 project stories với measurable outcomes - [ ] GitHub profile clean và có content - [ ] Đã research về ACB và banking industry - [ ] Prepared cho behavioral questions về mentorship - [ ] Researched salary range cho level này

Tư vấn nghề nghiệp

## Lời khuyên Sự nghiệp cho AI Engineer Expert tại ACB --- ### 💰 Mức lương & Compensation Expectations **Lưu ý quan trọng**: Tin tuyển dụng ghi "Thương lượng", không công khai range. Dựa trên market data: | Profile | Base Salary (VND/tháng) | Notes | |---------|-------------------------|-------| | Mid-senior (5-7 năm exp, LLM focus) | 50-80 triệu | Có thể apply nhưng below JD requirement | | Senior (8-10 năm, shipped AI systems) | 70-100 triệu | Match better | | Staff/Principal (10+ năm, proven impact) | 100-150 triệu | Ideal fit | | Tech Lead / Manager track | 120-180 triệu | Nếu có people management | **Total compensation có thể bao gồm**: - Base salary - Performance bonus (1-3 tháng) - Stock/ESOP (nếu có, ít phổ biến ở ngân hàng Việt Nam) - Benefits: BHXH, BHTN, khám sức khỏe, phụ cấp **So sánh với alternatives**: | Employer | Base (VND/tháng) | Notes | |----------|-----------------|-------| | Big Tech (Google, Meta, Microsoft) | 150-300 triệu | Remote possible, high bar | | Top Vietnamese Tech (FPT, Viettel, VNG) | 60-120 triệu | Good work-life balance | | Foreign Banks (HSBC, Standard Chartered) | 80-140 triệu | Compliance focus | | Local Banks (VCB, CTG, ACB) | 50-100 triệu | Industry standard | | AI Startups (VinAI, Zalo AI, Kneron) | 70-130 triệu | More technical freedom | | Remote (US companies) | $5-15k/tháng | Timezone challenges | **Negotiation tips**: 1. Có offer letter từ competitor → leverage mạnh nhất 2. Research Glassdoor, VietnamSalary cho ACB 3. Thể hiện unique value: banking domain + AI expertise 4. Không chỉ nói về technical skills, highlight impact --- ### 📈 Lộ trình Thăng tiến từ vị trí này ``` AI Engineer Expert (Entry point) ↓ [2-3 năm] ↓ Senior AI Engineer / Staff Engineer ↓ [2-3 năm] ↓ Principal AI Engineer / AI Architect ↓ [Option 1: Individual Contributor] Principal Architect → Distinguished Engineer ↓ [Option 2: Management] Engineering Manager → Director of AI ``` **Chi tiết từng bước**: #### 1. AI Engineer Expert → Senior AI Engineer (2-3 năm) **What you need to demonstrate**: - Shipped 3+ AI products to production với real impact - Mentored 2+ junior engineers (có measurable outcomes) - Technical decisions với ADR documentation - Cross-functional collaboration với multiple teams **Skills to develop**: - Fine-tuning (LoRA, QLoRA) cho domain-specific models - MLOps practices (model versioning, A/B testing, monitoring) - Multi-modal AI (vision, speech) integration - Vietnamese language models specialization **Expected to lead**: - 1 major project end-to-end - Technical roadmap contribution - Code reviews và architecture decisions #### 2. Senior → Staff Engineer / AI Architect (3-5 năm) **What differentiates Staff from Senior**: - Systems that span multiple teams/products - Technical standards adopted organization-wide - Influence beyond direct team - Strategic thinking (2-3 years ahead) **New responsibilities**: - Define AI platform architecture - Drive innovation initiatives - Executive presentations - External visibility (talks, papers, OSS) #### 3. Alternative: Management Track **Engineering Manager path**: - Manage 4-8 engineers - Hiring và team building - Project delivery ownership - Career development for reports **Director of AI path**: - Lead multiple AI teams - Budget ownership - Business strategy alignment - Board-level presentations --- ### 🎯 Kỹ năng Cần Phát triển Thêm #### Short-term (0-12 tháng) | Kỹ năng | Tầm quan trọng | Cách học | |---------|----------------|----------| | Banking Domain | ⭐⭐⭐⭐⭐ | Đọc annual report, compliance docs | | Fine-tuning | ⭐⭐⭐⭐ | Hugging Face PEFT tutorials | | MLOps/MLflow | ⭐⭐⭐⭐ | Implement end-to-end pipeline | | Vietnamese NLP | ⭐⭐⭐ | VinBigData, PhoBERT experience | | Stakeholder communication | ⭐⭐⭐⭐ | Practice explaining AI to non-technical | #### Medium-term (1-3 năm) | Kỹ năng | Tầm quan trọng | Cách học | |---------|----------------|----------| | Multi-modal AI | ⭐⭐⭐⭐ | Vision, speech, document understanding | | Agentic AI patterns | ⭐⭐⭐⭐⭐ | LangGraph advanced tutorials | | Platform engineering | ⭐⭐⭐ | Kubernetes, service mesh | | Technical writing | ⭐⭐⭐⭐ | Write ADRs, RFCs, blog posts | | Mentorship | ⭐⭐⭐⭐ | 1-on-1s, code reviews, tech talks | #### Long-term (3-5 năm) | Kỹ năng | Tầm quan trọng | Cách học | |---------|----------------|----------| | Strategic thinking | ⭐⭐⭐⭐⭐ | Business case development | | Executive presence | ⭐⭐⭐⭐ | Board presentations | | Innovation leadership | ⭐⭐⭐⭐ | R&D programs | | Open source leadership | ⭐⭐⭐ | OSS contributions | --- ### 🏦 Pros & Cons của Career tại ACB #### Pros ✅ 1. **Banking domain exposure**: Hiểu về KYC, AML, credit scoring, regulatory compliance - valuable career asset 2. **Scale & resources**: Ngân hàng lớn có budget để experiment với AI production 3. **Job security**:稳定性 cao, ít bị layoff như startup 4. **Benefits**: BHXH, BHTN, khám sức khỏe, phụ cấp (thường tốt hơn tech startup) 5. **Career progression**: Clear ladder cho technical và management track 6. **Impact**: AI systems phục vụ millions of customers #### Cons ⚠️ 1. **Compliance overhead**: Mọi thứ phải có audit trail, explainability - có thể slow down innovation 2. **Legacy systems**: Integration với mainframe có thể painful 3. **Bureaucracy**: Decision-making process có thể chậm hơn startup 4. **Salary ceiling**: Không competitive với big tech hoặc US remote 5. **Limited learning**: Nếu chỉ làm banking AI, có thể miss trends ở consumer AI 6. **Tech stack**: Có thể conservative, không always use latest tools #### Who should consider? **Nên apply nếu**: - Muốn deep-dive vào banking AI domain - Ưu tiên stability và benefits - Muốn học về compliance và regulated AI - Đã có experience và muốn settle down **Nên cân nhắc alternatives nếu**: - Muốn maximize salary (→ Big Tech, US remote) - Thích fast-paced, experimental environment (→ AI startup) - Muốn broad AI experience beyond banking (→ Consumer tech) - Early career và muốn learn fastest possible (→ Series A/B startup) --- ### 🔄 Exit Opportunities sau khi làm 2-3 năm **Option 1: Internal promotion** - → Head of AI / VP of Engineering tại ACB - → AI Director tại ngân hàng khác (VCB, CTG, VPB) **Option 2: Other banks (lương cao hơn)** - → Tech Lead AI tại VPBank (competitive salary) - → AI Architect tại TPBank, MBBank - → Foreign banks: HSBC, Citi, Standard Chartered **Option 3: Tech companies (học công nghệ mới)** - → AI Engineer/Architect tại FPT, Viettel - → AI Research tại VinAI, Viettel - → Product AI tại Zalo, VNG, MoMo **Option 4: AI Startups (high risk, high reward)** - → Founding Engineer tại AI startup - → AI Architect tại Series B/C company - → Technical Advisor cho VC funds **Option 5: International** - → US companies (remote) - highest salary potential - → Singapore banks - regional exposure - → AI companies globally - Meta AI, Anthropic, Cohere --- ### 💡 Key Takeaways 1. **Đây là vị trí cấp cao thực sự** - cần 10+ năm exp và shipped AI systems thực tế 2. **Technical depth quan trọng hơn breadth** - phải code được 40-50% thời gian 3. **Banking domain là USP** - kiến thức này valuable cho long-term career 4. **Compensation competitive nhưng không top** - exchange stability vs salary ceiling 5. **Exit opportunities tốt** - 2-3 năm experience mở ra nhiều doors 6. **Culture fit matters** - banking environment cần patience và compliance awareness --- ### ⚠️ Red Flags - Warning signs cần lưu ý **Trong recruitment process**: - Không có technical interview (→ có thể không serious về technical quality) - HR không biết technical details (→ siloed organization) - Unclear about team size và scope (→ có thể understaffed) - Salary negotiation không transparent (→ có thể have budget issues) **Trong job description**: - Quá nhiều "also" - doing AI + data + analytics + BI (→ scope creep) - "We need someone to build everything from scratch" (→ no existing infrastructure) - Không có mention về compliance, audit (→ có thể underestimate regulatory requirements) - "Fast-paced startup within bank" (→ contradictory messaging)

Câu hỏi thường gặp

Mình có 5 năm kinh nghiệm software engineering nhưng mới chuyển sang AI được 1 năm, có nên apply vị trí này không?

Theo yêu cầu, vị trí này cần ít nhất 10 năm software engineering + 3 năm hands-on production LLM/RAG. Với profile 5 năm SE + 1 năm AI, bạn còn thiếu khoảng 4-5 năm kinh nghiệm để đáp ứng requirements. Tuy nhiên, nếu bạn có thể prove được 3+ năm production AI experience (shipped real systems), có thể thử apply. Nếu không, hãy tìm các vị trí Senior AI Engineer (thường yêu cầu 5-7 năm) trước để build up experience.

Mình đang làm AI tại một fintech startup, chưa có kinh nghiệm banking. Có khó khăn gì khi chuyển sang ngân hàng không?

Đây là câu hỏi hay. Banking có thêm layer complexity về compliance và regulation. Bạn cần hiểu: (1) KYC/AML requirements - mọi AI decision phải explain được; (2) Audit trail - hệ thống phải log everything; (3) Data sovereignty - dữ liệu có thể phải ở trong nước; (4) Model risk management - AI models phải pass validation trước khi deploy. Tuy nhiên, fintech background là advantage vì bạn đã quen với regulated environment. Nice-to-have section cũng ghi rõ banking experience là 'nice-to-have' chứ không phải 'must-have'. Hãy highlight những compliance work bạn đã làm ở fintech.

Technical interview sẽ hỏi những gì? Mình cần ôn những gì để chuẩn bị?

Dự kiến 3 phần chính: (1) Coding: Python async patterns, Pydantic models, có thể có algorithm medium level; (2) System Design: Thiết kế RAG system cho banking KB, cần cover retrieval, generation, guardrails, observability, compliance; (3) AI Architecture: Deep dive vào RAG internals, LangGraph state machine, vLLM deployment, vector DB optimization. Trọng tâm là 'production experience' - không chỉ theory. Bạn nên ôn: async Python, LangGraph workflows, vLLM config options, Qdrant/Milvus operations, và metrics như hallucination rate, recall@k.

Mức lương cho vị trí này là bao nhiêu? Có thể đàm phán lên được không?

JD ghi 'Thương lượng' nên không có con số cố định. Dựa trên market, vị trí này có thể dao động 70-150 triệu VND/tháng tùy profile. Để đàm phán hiệu quả: (1) Research market rate - Glassdoor, VietnamSalary, các recruiter contacts; (2) Có offer letter từ competitor là leverage mạnh nhất; (3) Highlight unique value: banking + AI combination; (4) Đàm phán total package, không chỉ base - bonus, benefits có thể quan trọng hơn; (5) Có thể nhận thấp hơn market nếu đây là 'stepping stone' vào banking domain.

Team AI tại ACB hiện tại có bao nhiêu người? Quy mô và văn hóa làm việc như thế nào?

Thông tin cụ thể không public, nhưng dựa trên vị trí này - 'expert' level, mentor 1-on-1, set engineering standards - có thể suy luận team có khoảng 5-15 người, đang scale up. Đây là vị trí technical anchor đầu tiên hoặc thêm người vào team đang có. Văn hóa ngân hàng thường formal hơn tech company: documentation kỹ hơn, approval process dài hơn, nhưng stability cao. Bạn nên hỏi HR về team size, reporting line, và interaction với other teams (Risk, Compliance, IT).

Work-life balance tại ngân hàng như thế nào? Có overtime nhiều không?

So với tech startup, banking thường có work-life balance tốt hơn: ít nhất làm thêm giờ hơn, weekend work hiếm gặp. Tuy nhiên, tùy vào giai đoạn: (1) Khi bắt đầu dự án mới: có thể cần tập trung cao; (2) Khi có production issues: cần on-call nhưng ít urgent; (3) Compliance deadlines: có thể có crunch time. Tech stack legacy có thể tốn effort cho maintenance. Nên hỏi HR về: on-call policy, typical work hours, recent overtime patterns.

Kỹ năng nào là 'deal-breaker' nếu thiếu? Và kỹ năng nào 'nice-to-have' nhưng có thể học nhanh?

Deal-breakers (thiếu → khó pass interview): (1) Production RAG experience - đã thực sự debug retrieval quality issues; (2) LangGraph/LangChain fluency - implement được state machine; (3) vLLM deployment - đã tune quantization, batching; (4) Observability design - không chỉ use existing tools. Nice-to-have (có là plus, không có cũng được): (1) Banking domain - có thể learn trong 3-6 tháng; (2) Fine-tuning - valuable nhưng vị trí này focus vào architecture; (3) Qwen on-premise - emerging skill, training available; (4) Open source contributions - profile boost nhưng không required.

Sau khi làm ở đây 2-3 năm, mình có thể chuyển sang đâu? Career path như thế nào?

Exit opportunities khá đa dạng: (1) Internal: Senior AI Engineer → Staff Engineer → AI Architect/Manager; (2) Other banks: Tech Lead AI tại VPBank, MBBank, foreign banks với salary bump; (3) Tech companies: AI Engineer/Architect tại FPT, Viettel, VinAI; (4) AI startups: Founding Engineer, Senior AI roles với equity; (5) International: Remote US companies (highest salary). Banking AI experience có value đặc biệt cho: compliance-heavy AI, financial AI, regtech. Đây là solid foundation cho specialized career path.