Đưa GenAI vào dbt bằng SQL: chấm sentiment và tóm tắt review
BigQuery cho phép gọi các hàm AI trong SQL và đưa kết quả vào pipeline dbt. Trọng tâm để vận hành là model incremental, đầu ra có schema rõ ràng, ước tính token và dbt test trước khi dữ liệu vào mart.
Một bảng review có thể chứa hàng nghìn dòng, trong khi người quản lý sản phẩm cần biết nhanh khách hàng đang phàn nàn điều gì. Cách quen thuộc là xuất dữ liệu sang notebook, gọi API mô hình rồi đưa kết quả trở lại kho dữ liệu.
Tại dbt Summit 2026, Google Cloud trình bày một hướng khác: gọi AI ngay trong câu lệnh SQL của BigQuery và đưa kết quả vào dự án dbt như một phần của pipeline dữ liệu thông thường.
Điểm đáng chú ý không chỉ là “dùng LLM trong SQL”. Đó là đưa các thử nghiệm AI vào cùng model, test và logic incremental mà đội ngũ analytics vốn đã vận hành.
Gọi AI trực tiếp trong SQL BigQuery
Hàm AI.GENERATE của BigQuery nhận prompt cùng dữ liệu đầu vào từ cột và trả về phản hồi cho từng dòng được xử lý. Ví dụ được nêu trong phiên trình bày là trích xuất từ khóa từ các review phim phi cấu trúc.
Với pipeline phân tích, tính năng quan trọng là tham số outputschema. Tham số này yêu cầu mô hình trả về JSON có cấu trúc và kiểu dữ liệu xác định, thay vì văn bản tự do.
Điều đó giúp đầu ra AI có thể đi tiếp qua các model dữ liệu thay vì trở thành một cột text khó kiểm soát.
Bên cạnh AI.GENERATE, BigQuery còn có các hàm được quản lý sẵn cho một số tác vụ phân tích:
| Hàm | Mục đích được nêu trong bài |
|---|---|
| AI.IF | Lọc theo ngữ nghĩa |
| AI.CLASSIFY | Phân loại |
| AI.SCORE | Chấm điểm hoặc xếp hạng |
| AI.AGG | Tóm tắt nhiều dòng cùng lúc |
Theo phần trình bày, các hàm này được tinh chỉnh cho các tác vụ phổ biến và nhìn chung có chi phí thấp hơn so với việc tự viết prompt qua AI.GENERATE.
Demo: từ review đến bản tóm tắt theo sản phẩm
Demo sử dụng một bộ dữ liệu thương mại điện tử về sản phẩm thú cưng, với pipeline dbt gồm ba bước:
Kết hợp văn bản review với dữ liệu đơn hàng.
Dùng AI.SCORE để đánh giá sentiment theo ba khía cạnh: sản phẩm, giao hàng và dịch vụ khách hàng.
Dùng AI.AGG để tổng hợp review theo sản phẩm thành phần tóm tắt ngôn ngữ tự nhiên.
Mục tiêu là giúp người quản lý sản phẩm nhận ra các vấn đề lặp lại mà không cần đọc từng review. Trong demo, một ví dụ là phản ánh về vòi chai nước cho chinchilla bị rò.
Đây là điểm phù hợp với đội ngũ BI: thay vì để phần diễn giải bằng AI nằm tách biệt trong notebook, kết quả có thể được tạo trong luồng chuyển đổi dữ liệu đang dùng.
Incremental là điều kiện vận hành quan trọng
Theo phần trình bày, không nên để hàm AI chạy trong một lần full refresh.
Khi bảng được xây dựng lại từ đầu, mọi dòng có thể bị gửi lại tới mô hình. Với dữ liệu lớn, chi phí và độ trễ sẽ tăng nhanh.
Cách tiếp cận được khuyến nghị là materialize model theo kiểu incremental và đặt logic AI trong điều kiện isincremental(). Khi đó, chỉ các dòng mới được gửi tới mô hình thay vì chạy lại toàn bộ lịch sử.
Bài nguồn không quy định cách nhận diện “dòng mới”. Vì vậy, đội ngũ triển khai cần tự xác định logic incremental phù hợp với dữ liệu của mình.
Đừng để đầu ra AI đi thẳng vào mart
LLM có thể trả về kết quả không như kỳ vọng. Vì vậy, phần trình bày khuyến nghị kết hợp outputschema với các dbt test chuẩn, chẳng hạn:
notnull
acceptedvalues
Mục tiêu là phát hiện kết quả không hợp lệ ở lớp staging hoặc intermediate, trước khi chúng đi vào mart cuối.
Một quy trình kiểm tra nên tập trung vào các câu hỏi cốt lõi:
Đầu ra AI có đúng cấu trúc đã quy định hay không?
Các trường bắt buộc có bị rỗng không?
Nếu đã định nghĩa tập nhãn, kết quả có nằm trong tập đó không?
Logic incremental có chỉ xử lý dữ liệu mới như dự kiến không?
Kiểm soát chi phí và lỗi theo từng dòng
Bài trình bày cũng nêu một số cơ chế vận hành để kiểm soát việc gọi AI trong SQL:
AI.COUNTTOKENS để ước tính token trước khi thực thi.
Giới hạn token hằng ngày ở cấp project và người dùng.
Tham số maxerrorratio để hủy truy vấn khi tỷ lệ dòng lỗi vượt ngưỡng được thiết lập.
Với dữ liệu lớn, AI.IF và AI.CLASSIFY có thêm optimized mode. Cơ chế này gán nhãn một mẫu nhỏ bằng mô hình đầy đủ, huấn luyện một mô hình distilled nhẹ trong hạ tầng BigQuery, rồi chạy phần dữ liệu còn lại bằng mô hình đó.
Theo Google Cloud, cách làm này giúp cải thiện chi phí và độ trễ khi số lượng dòng tăng lên. Bài nguồn không công bố mức cải thiện cụ thể.
Điều đáng rút ra cho đội ngũ analytics
GenAI trong dbt không biến AI thành một phép biến đổi SQL thông thường: mỗi lần gọi vẫn có chi phí, có thể lỗi theo dòng và cần kiểm tra đầu ra.
Nhưng cách tiếp cận này đưa AI vào kỷ luật vận hành dữ liệu quen thuộc hơn:
Chỉ xử lý dòng mới bằng incremental model.
Ép đầu ra về cấu trúc xác định bằng outputschema.
Dùng dbt test để chặn kết quả bất thường trước mart.
Ước tính token và đặt giới hạn sử dụng.
Tổng hợp kết quả AI ở tầng phù hợp, thay vì gọi mô hình lại cho toàn bộ dữ liệu ở mỗi lần chạy.
Giá trị của hướng này nằm ở việc đưa các tác vụ như chấm sentiment và tóm tắt review vào cùng pipeline phân tích đã có, thay vì để chúng tồn tại như một thử nghiệm tách rời.