Hành trình cấu trúc hóa dữ liệu của Shopify: từ One-Shot LLM đến kiến trúc agentic dựa trên DSPy
(youtube.com)Shopify đã chuyển từ phương pháp One-Shot LLM sang kiến trúc đa tác tử (Multi-Agent) chuyên biệt dựa trên DSPy để biến hàng triệu dữ liệu thương mại phi cấu trúc (trang cửa hàng, chính sách, v.v.) thành dữ liệu có cấu trúc. Trong quá trình này, thay vì dùng các mô hình lớn cỡ GPT-4/5, họ tận dụng các mô hình Qwen tự lưu trữ (cỡ 32B/72B) cùng bộ tối ưu Japa của DSPy, qua đó đạt được kết quả giảm chi phí 75 lần trong khi chất lượng trích xuất dữ liệu tăng gấp 2 lần. Đặc biệt, trường hợp này cho thấy cấu trúc gồm các tác tử con chuyên cho từng mục tiêu cụ thể (phát hiện gian lận, lập hồ sơ cửa hàng, v.v.) mang tính quyết định trong việc cải thiện hiệu năng, hơn hẳn một tác tử đơn lẻ.
Phân tích chuyên sâu (Deep Dive)
1. Bối cảnh vấn đề: làn sóng dữ liệu phi cấu trúc
Shopify mang đến cho merchant mức độ linh hoạt cực cao. Điều đó cũng có nghĩa là mỗi cửa hàng có cấu trúc HTML, ngôn ngữ và cách thể hiện chính sách hoàn toàn khác nhau. Ngay cả những câu hỏi đơn giản như “Cửa hàng này có bán điện thoại di động không?” hay “Chính sách đổi trả là gì?” cũng rất khó để có được câu trả lời đã được chuẩn hóa trên toàn hệ thống.
2. Quá trình tiến hóa của giải pháp
- Giai đoạn 1: One-Shot LLM (cách tiếp cận ban đầu)
- Trích xuất văn bản từ các trang chính của cửa hàng rồi đưa vào GPT-4 (sau đó là 5) để yêu cầu trích xuất schema.
- Giới hạn: do giới hạn context window nên không thể gửi toàn bộ các trang (nếu thiếu trang chính sách đổi trả thì không thể trả lời). Càng thêm nhiều trường, prompt càng trở nên mong manh (Fragile) và chi phí tăng theo cấp số nhân.
- Giai đoạn 2: cách tiếp cận agentic và đưa DSPy vào
- Thay vì đưa toàn bộ dữ liệu cho LLM, Shopify chuyển sang cấu trúc tác tử ReAct được trang bị các “công cụ” (Browsing, Investigation) để tự khám phá cửa hàng và tìm thông tin cần thiết.
- Trong quá trình này, họ đưa DSPy vào để thử tối ưu theo hướng lập trình thay vì tinh chỉnh prompt thủ công.
- Giai đoạn 3: các tác tử con chuyên biệt (Specialized Sub-Agents)
- Thay vì để một tác tử đơn đảm nhiệm mọi mục tiêu (gian lận, thuế, lập hồ sơ), hệ thống được tách thành ba tác tử chuyên biệt.
- Fraud Agent: sử dụng công cụ tìm kiếm trên các website đánh giá bên ngoài.
- Profile Agent: tập trung vào việc phân tích các chính sách nội bộ.
- Mỗi tác tử được tối ưu độc lập bằng DSPy, nhờ đó có thể cải thiện hiệu năng mà không bị can nhiễu lẫn nhau.
3. Giải pháp kỹ thuật: độ tin cậy của đánh giá & snapshotting
Khi tác tử crawl website theo thời gian thực, nếu nội dung trang thay đổi thì độ tin cậy của bộ dữ liệu đánh giá (Golden Dataset) sẽ bị phá vỡ. Để giải quyết vấn đề này, Shopify đã xây dựng một dịch vụ snapshot mang tên 'ShopNap'.
- Cố định tĩnh trạng thái của cửa hàng tại thời điểm gán nhãn (Frozen context).
- Bộ tối ưu DSPy chạy trên các snapshot đã cố định này để đảm bảo việc đánh giá và huấn luyện có thể tái lập.
4. Kiến trúc hạ tầng
Để xử lý hiệu quả, hệ thống được vận hành theo 3 lớp tách biệt.
- Batch Layer (Flink): quản lý hơn 150.000 yêu cầu xử lý cửa hàng mỗi ngày.
- Agent Layer (Kubernetes): thực thi logic tác tử, phân tích HTML và gọi công cụ trên cụm máy chủ chạy CPU.
- LLM Layer (GPU Cluster): cung cấp các mô hình Qwen tự lưu trữ thông qua vLLM, v.v.
Dữ liệu chính và benchmark
Dưới đây là các con số so sánh về hiệu năng và chi phí trước và sau khi Shopify chuyển đổi kiến trúc.
| Hạng mục | One-Shot (ước tính GPT-5) | Agentic + DSPy + Qwen |
|---|---|---|
| Chi phí (Cost) | Mốc tham chiếu (cao) | giảm xuống còn mức 1/75 |
| Chất lượng (Quality) | Mốc tham chiếu | xấp xỉ gấp 2 lần (cải thiện 100%) |
| Độ bao phủ cửa hàng | Một phần (bị giới hạn do chi phí) | toàn bộ cửa hàng (Full Coverage) |
| Khả năng mở rộng | Cần xác minh lại toàn bộ khi thêm trường mới | Mở rộng đơn giản bằng cách thêm tác tử con |
Bài học cốt lõi
- Monolithic vs specialized: tác vụ càng phức tạp thì các tác tử con có phân tách mối quan tâm (Separation of Concerns) sẽ có lợi thế hơn một tác tử đơn [21:59].
- Architecture over Tuning: thay vì sửa câu chữ trong từng prompt, việc xây dựng đúng kiến trúc hệ thống và áp dụng tối ưu hóa tự động (DSPy) sẽ đảm bảo hiệu năng bền vững hơn [23:24].
- Small Models Win: trong các tác vụ theo miền cụ thể, những mô hình cỡ vừa và nhỏ đã được tối ưu (tự lưu trữ) có thể vượt mô hình lớn đa dụng cả về hiệu năng lẫn hiệu quả chi phí [23:54].
1 bình luận
Thỉnh thoảng tôi có nghe nhắc đến DSPy, có ai đã dùng thử chưa? Tôi tò mò muốn biết cảm nhận thực tế.