Giaosucan's blog - Chia sẻ kiến thức theo cách bá đạo

Ticker

20/recent/ticker-posts

Kiến Trúc RAG Nội Bộ Tại Uber

Anh em dev chắc ai cũng từng trải qua cảm giác kinh hoàng này: 2 giờ sáng, đang ôm vợ shooting, chưa kịp lên đỉnh, bỗng điện thoại réo ầm ầm như đòi nợ. Một đồng nghiệp ở chỗ éo nào đó nhắn tin cực kỳ hồn nhiên:

“Ê ông ơi, cái hàm xử lý thanh toán này chạy kiểu gì vậy? Đọc doc của ông tao lú quá.”

Trong khi cái tài liệu hướng dẫn chi tiết được viết từ thời Napoleon cời truồng, step by step đầy đủ, delivery đến tận giường”.

Thực tế có hàng ngàn câu hỏi lặp lại, hoặc kiểu hỏi ngu, trên wiki ghi rõ rồi, nhưng lười tìm kiếm, cứ hỏi thẳng cho nhanh

Thế là một kỹ sư trực (on-call engineer) phải lồm cồm bò dậy, mắt nhắm mắt mở đi gõ lại một câu trả lời mà tuần này họ đã phải gõ đúng… 800 lần. Trầm cảm! Thật sự là trầm cảm ngang ngửa việc bắt một senior đi fix lỗi cú pháp chấm phẩy cho intern.

Và câu chuyện Uber giải cứu đống trầm cảm này cho hàng nghìn lập trình viên bằng một “ông thần đèn” tên là Genie thực sự là một kiệt tác của sự lười biếng đỉnh cao – theo nghĩa tích cực nhất

1. Nỗi Đau 45.Nghìn Tin Nhắn Và Hội Chứng “Não Cá Vàng”

Tại Uber, nơi hàng ngàn kỹ sư cùng cày cuốc trên hệ thống Michelangelo khổng lồ (nền tảng Machine Learning), khối lượng công việc sản sinh ra sự bất ổn tâm lý là cực kỳ lớn.

Các đội ngũ hỗ trợ (ví dụ như team MLOps quản lý Michelangelo) phải chịu đựng một cơn ác mộng mang tên “hỗ trợ nội bộ”. Trung bình, họ nhận được tới 45.000 câu hỏi mỗi tháng trên các kênh Slack.

45K là con số rất lớn, tức là cứ chưa đầy một phút lại có một tiếng “ting ting” với những câu hỏi mang tính chất kinh điển như:

  • “Ai vừa làm sập staging thế này?”

  • “Cái microservice X giờ gọi qua endpoint nào?”

  • “Sao code của tao chạy local thì mượt mà lên production thì lăn ra giãy đành đạch?”

Các kỹ sư on-call lúc này không khác gì mấy vị tổng đài viên bất đắc dĩ, suốt ngày đi copy-paste link tài liệu cho những con người lười đọc chữ, chả mấy mà sẽ thành thần kinh

2. Sự Xuất Hiện Của Genie: Thần Đèn Không Cần Bình Trà, Chỉ Cần Slack

Thay vì tuyển thêm người, các kỹ sư Uber quyết định chơi lớn: Bắt AI làm thay. Và thế là Genie (Trợ lý AI On-Call) ra đời.

Khác với thần đèn trong truyện cổ tích phải chui ra từ bình trà để ban điều ước giàu sang, Genie chui thẳng vào Slack để làm một việc phàm trù hơn nhiều: Bịt miệng những câu hỏi lặp lại.

Để bạn dễ hình dung về quy mô và cách ông thần đèn này lục tung dữ liệu công ty như thế nào, đây là sơ đồ kiến trúc tổng thể:

Plaintext

[ 🧑‍💻 Dev bực dọc lúc 2h sáng 🤯 ]
│
│ (Quăng câu hỏi "ngây thơ" lên Slack)
▼
┌──────────────────────┐
│ 💬 Slack Channel │
└──────────┬───────────┘
│
▼
┌────────────────────────────────────────────────────────────────────────┐
│ MICHELANGELO GATEWAY │
│ (Cổng soát vé, kiểm toán & bóp còi bảo mật) │
└──────────┬───────────┬──────────────┬──────────────────────────────────┘
▼ (Giao việc)│ │ (Báo cáo chi phí)
┌──────────────────────┴──────────────┴──────────────────────────────────┐
│ GENIE "THẦN ĐÈN" CORE │
│ (Hệ thống RAG thông minh của Uber) │
│ │
│ ┌─────────────────────┐ Tra cứu ┌──────────────────────┐ │
│ │ 🔍 Sia (Vector DB) │ ◄─────────────────┤ 🧠 LLM Engine │ │
│ └──────────┬──────────┘ (Tìm ý tưởng) └──────────┬───────────┘ │
│ │ │ │
│ │ (Bới tìm bãi rác dữ liệu cổ) ▼ │
│ ┌──────────┴──────────────────────────────┐┌─────────────────────────┐
│ │ 🗄️ TERRABLOB ││ ⚖️ LLM-as-a-Judge │
│ │ (Kho S3 nội bộ: Chứa từ file log, ││ (Đứa soi mói xem AI │
│ │ bản backup cho đến doc 3 năm tuổi) ││ có nói láo ko) │
│ └─────────────────────────────────────────┘└──────────┬──────────────┘
└─────────────────────────────────────────────────────────┼──────────────┘
│
▼ (Nhả câu trả lời cực mượt)
[ 💬 Trả lời trực tiếp lên Slack ]
(Kèm nút bấm: 👍 Hữu ích / 👎 Xàm ghê)
│
▼ (Bắn feedback thời gian thực)
[ 🔄 Cải thiện & Ép AI thông minh hơn 🤖 ]

3. Giải Mã Sơ Đồ “Hại Não” Này (Và bí mật về chiếc kho lạnh TerraBlob)



Bạn nhìn sơ đồ trên thấy phức tạp, nhưng thực chất nó là một dây chuyền tái chế kiến thức cực kỳ bài bản. Cụ thể từng trạm hoạt động như sau:

  • Khúc đầu (Slack + Gateway): Nơi bạn trút hết sự uất hận vào khung chat giữa đêm khuya. Trước khi đến tai Genie, câu hỏi của bạn phải đi qua Michelangelo Gateway — cánh cửa bảo vệ để kiểm tra xem bạn có lỡ tay vứt dữ liệu mật hay API Key của công ty ra cho AI “học lỏm” không.

  • Trái tim Genie (LLM Engine + Sia + TerraBlob): Khi nhận câu hỏi, Genie phải lục lọi khắp nơi, và đây là lúc TerraBlob bước lên sân khấu chính:

    • TerraBlob là gì? Nói một cách dễ hiểu, đây chính là “Amazon S3 phiên bản tự chế” của riêng Uber. Nó là kho chứa dạng đối tượng (Blob Storage) khổng lồ dùng để cất giữ toàn bộ dữ liệu thô, file log hệ thống nặng trịch, các bản backup dữ liệu, cho đến hàng triệu trang tài liệu kỹ thuật cũ rích nằm rải rác từ thuở hồng hoang của công ty.

    • Khi các tác vụ Apache Spark chạy ngầm để quét tài liệu, toàn bộ đống văn bản thô này được hút lên, xử lý và đẩy về TerraBlob lưu trữ dài hạn.

    • Từ đây, cơ sở dữ liệu vector Sia sẽ lập chỉ mục (index) lại chúng để biến hàng terabyte tài liệu trong TerraBlob thành các tọa độ vector có thể tìm kiếm trong vòng vài mili giây. Sia (được nhắc đến trong hệ thống Genie và các nền tảng AI của Uber) chính là Unified Vector Search & Embedding Platform do Uber tự tay phát triển. 

      Thay vì sử dụng các cơ sở dữ liệu vector thương mại bên ngoài như Qrand, Uber xây dựng Sia để giải quyết bài toán tìm kiếm ngữ nghĩa (Semantic Search) và gợi ý thời gian thực ở quy mô khổng lồ (hàng tỷ bản ghi) cho toàn bộ hệ sinh thái của hãng như Uber Eats, Groceries, Maps và các trợ lý nội bộ như Genie.

    • Khi bạn hỏi trên Slack, Genie mượn sức mạnh của Sia để tra cứu trúng phóc đoạn tài liệu nằm đâu đó trong kho lạnh TerraBlob, sau đó nhét vào LLM Engine để tổng hợp thành câu trả lời.

    • Khâu kiểm duyệt (LLM-as-a-Judge): Sợ AI bịa đặt (hallucination) nói linh tinh từ mấy cái doc lỗi thời trong TerraBlob, Uber còn lập ra một bầy AI khác làm giám khảo đứng soi mói, chấm điểm câu trả lời trước khi nhả ra màn hình cho bạn.

  • Khúc cuối (Feedback Loop): Nếu câu trả lời của Genie xàm xí, bạn chỉ cần bấm nút chê trên Slack. Dữ liệu này sẽ ngay lập tức phi qua Apache Kafka để đánh thức đội ngũ MLOps, ép họ chỉnh đốn lại cái nết của ông thần đèn vào hôm sau.

4. Kết Quả: Cứu Sống Cả Một Tiểu Đội Lập Trình Viên

Kể từ khi đưa Genie (cùng với hậu phương vững chắc là kho lạnh TerraBlob) vào biên chế, các kỹ sư Uber cuối cùng cũng được chợp mắt yên bình vào ban đêm. Những con số thống kê nghe rất mát lòng mát dạ:

  • Genie đã phủ sóng trên hơn 150 kênh Slack hỗ trợ kỹ thuật.

  • Tỷ lệ giải quyết thắc mắc thành công xấp xỉ 49% — đủ để chặn đứng một nửa lượng “spam” vô nghĩa, giúp kỹ sư không bị trầm cảm vì mấy câu hỏi kiểu “Hello World”.

  • Tiết kiệm ước tính hơn 13.000 giờ công kỹ thuật mỗi năm — khoảng thời gian quý giá đó thay vì đi trả lời câu hỏi ngớ ngẩn, các dev có thể dành để viết thêm vài con bug mới hoặc đi pha cà phê uống cho tỉnh táo.

Bài học rút ra: Nếu bạn thấy team mình cứ lặp đi lặp lại một câu hỏi quá 3 lần, đừng la mắng họ. Hãy quăng hết tài liệu vào một cái kho như TerraBlob, bắt một con AI làm thay, vì máy móc thì không biết giận dỗi, còn lập trình viên thì có giới hạn chịu đựng.

Đăng nhận xét

0 Nhận xét