Databricks Genie vs. WrenAI: Code đúng hay hiểu đúng dữ liệu?

Text-to-SQL đang bước sang kỷ nguyên hiểu đúng dữ liệu thay vì chỉ viết đúng SQL. Hãy xem cách Databricks Genie và WrenAI giải cùng một bài toán ngữ nghĩa để đạt hiệu quả truy vấn chính xác.

Upload image

Đọc thêm: Trò chuyện với dữ liệu bằng WrenAI

Các giải pháp Text-to-SQL đang bùng nổ mạnh mẽ, nhất là trong thời đại GenAI hiện nay. Với sự hỗ trợ từ các mô hình ngôn ngữ lớn của OpenAI, Google, kết hợp cùng các RAG framework như WrenAI, việc chuyển đổi ngôn ngữ tự nhiên thành những câu truy vấn phức tạp đã trở nên dễ dàng hơn.

Tuy nhiên, thách thức lớn nhất của Text-to-SQL trong doanh nghiệp hiện nay không còn nằm ở việc tạo ra đúng code từ ngôn ngữ tự nhiên, mà là hiểu đúng dữ liệu (data understanding).

Một câu lệnh SQL chạy thành công nhưng trả về kết quả NULL hoặc 0 rows đôi khi còn nguy hiểm hơn một câu lệnh báo lỗi. Nó khiến người dùng lầm tưởng rằng hệ thống không có dữ liệu và không biết phải sửa như thế nào, trong khi thực tế vấn đề nằm ở sự sai lệch ngữ nghĩa.

Bài viết sẽ phân tích hai triết lý tiếp cận khác nhau để giải quyết bài toán này, bao gồm cơ chế suy luận của WrenAIcơ chế tích hợp Catalog của Databricks Genie.

Databricks Genie là gì?

Databricks Genie là giao diện phân tích dữ liệu bằng ngôn ngữ tự nhiên, được tích hợp sâu vào nền tảng Databricks. Không đơn thuần là một chatbot, Genie được xây dựng trên kiến trúc Compound AI System (hệ thống AI hợp nhất), nơi các AI agent phối hợp để suy luận, viết code, kiểm tra lỗi và trực quan hóa dữ liệu.

Sức mạnh của Genie nằm ở khả năng biến Unity Catalog thành một bộ não ngữ nghĩa để người dùng non-tech khai thác dữ liệu bằng các câu truy vấn phức tạp mà không cần viết một dòng code nào.

Cách xử lý thực tế giữa WrenAI và Databricks Genie

Hãy xem xét một ví dụ thực tế về lỗi chính tả - kẻ thù của mọi hệ thống tìm kiếm. Tình huống: User muốn xem mức độ sử dụng của model AI tên là "Prozi". Do nhớ nhầm, họ gõ sai:

User prompt: "Show usage of prozy model"

Trong database, giá trị chính xác là "Prozi".

WrenAI (Standard RAG)

WrenAI nhận keyword "prozy". Vì không biết dữ liệu thực tế chứa gì, agent chọn giải pháp an toàn nhất theo logic lập trình: dùng phép tìm kiếm tương đối.

Logic của WrenAI: "User hỏi 'prozy', tôi sẽ tìm cái gì giống 'prozy' nhất."

Upload image

Kết quả thực tế: 0 rows

Tại sao WrenAI trả về 0 rows?

WrenAI tuân thủ logic an toàn của một hệ thống bên ngoài. Vì không nắm giữ thông tin vật lý của dữ liệu, nó thực hiện tìm kiếm tương đối dựa trên prompt. Kết quả là câu lệnh SQL tìm chính xác từ khóa "prozy" (theo prompt) thay vì dữ liệu thực tế, dẫn đến kết quả rỗng. Đây không phải lỗi của WrenAI, mà là giới hạn của kiến trúc khi thiếu quyền truy cập sâu vào thống kê dữ liệu.

Databricks Genie (Value Grounding)

Genie không vội vàng viết SQL ngay. Nó thực hiện một quy trình gọi là Value Grounding.

  • Entity recognition: Nhận diện "prozy" không phải là từ khóa SQL (như SELECT, WHERE), mà là một Filter Value (giá trị lọc).
  • Lookup statistics: Agent của Genie âm thầm tra cứu metadata trong Unity Catalog và file thống kê của bảng Delta.
  • Fuzzy matching: Hệ thống so sánh "prozy" (input) với danh sách giá trị thực tế. Nó phát hiện: Khoảng cách chỉnh sửa giữa 'prozy' và 'Prozi' rất nhỏ. Ý người dùng chắc chắn là 'Prozi'.
  • Correction & optimization: Genie tự động sửa lại điều kiện lọc.

Upload image

Kết quả thực tế: 216 lượt sử dụng

Về hiệu năng, vì dùng toán tử =, Databricks Engine tận dụng được Data Skipping và Z-Order Index, truy vấn trả về kết quả gần như tức thì.

Tại sao Genie tự động sửa thành "Prozi"?

Genie thực hiện quy trình Value Grounding dựa trên lợi thế của Catalog:

  • Truy cập statistics: Genie đọc trực tiếp metadata và file thống kê của Delta Lake. Nó biết chính xác cột model_group chứa những giá trị nào và độ phân tán ra sao.
  • Khẳng định thay vì phỏng đoán: Hệ thống tự tin xác định rằng "prozy" là lỗi chính tả của "Prozi" (dữ liệu thực có trong bảng) và tự động sửa câu truy vấn.

Khi có Catalog, AI không cần phải đoán mò. Việc nắm giữ metadatastatistics giúp chuyển đổi bài toán từ xử lý ngôn ngữ tự nhiên sang đối chiếu dữ liệu thực tế.

Sự khác biệt giữa WrenAI và Databricks Genie

Tính năng cốt lõi

Nhìn vào bảng so sánh các tính năng bên dưới, chúng ta sẽ nhìn thấy là mặc dù cả hai đều sở hữu giao diện Chat-based và Agentic Workflow, sự khác biệt nằm ở cách chúng xây dựng lớp ngữ nghĩa (semantic layer) để hiểu dữ liệu.

Tính năngDatabricks GenieWrenAI
Giao diệnChat-based UIChat-based UI
Cơ chếAgentic WorkflowAgentic Workflow
Semantic LayerUnity CatalogWrenML
Data ContextStatistics & MetadataSchema & Relationships
LearningInstructions , Trusted Answers, Example SQL QueriesInstructions , Feedback, Learned SQL

WrenAI với triết lý Decoupled & Probabilistic (tách rời & xác suất): tiếp cận theo hướng linh hoạt, coi database là đích đến và AI là người dẫn đường.

  • Cơ chế: Vì hoạt động độc lập với cơ sở dữ liệu dữ liệu (Postgres, MySQL, ...) , WrenAI cần xây dựng một lớp ngữ nghĩa riêng (WrenML).
  • Cách hiểu dữ liệu: Hệ thống sẽ cải thiện độ chính xác thông qua việc định nghĩa business logic thủ công và học từ phản hồi của người dùng theo thời gian.

Databricks Genie với cách tiếp cận Native & Deterministic (tích hợp & xác định) sẽ coi database là 'sân nhà'.

  • Cơ chế: Genie biến Unity Catalog thành bộ não trung tâm.
  • Cách hiểu dữ liệu: Thay vì suy đoán, Databricks Genie thừa hưởng toàn bộ logic nghiệp vụ, mô tả và dòng chảy dữ liệu đã được chuẩn hóa sẵn trong Catalog. Đây là cách tiếp cận dựa trên Single Source of Truth.

Kiến trúc dữ liệu

Quay lại với ví dụ ở đầu bài, tuy WrenAI vẫn có thể được cấu hình để xử lý, nhưng Genie làm được điều này hoàn toàn tự nhiên. Sự khác biệt này bắt nguồn từ kiến trúc khác nhau.

Cách tiếp cận của WrenAI (Schema-First): Với kiến trúc theo hướng decoupled, xem database là một chiếc 'hộp đen', chỉ nhìn thấy các thông tin metadata như Table Name, Column Name, Description.

Hệ quả: Khi gặp câu hỏi mơ hồ (như lỗi chính tả "prozy"), WrenAI tuân thủ nguyên tắc an toàn: chỉ dựa vào Prompt và Schema. Nó không được thiết kế để tự ý đào sâu vào thống kê dữ liệu vật lý để sửa lỗi cho người dùng. Đây là sự đánh đổi cần thiết để kết nối đa nguồn.

Cách tiếp cận của Databricks Genie (Data-Aware): Xem database là 'sân nhà'. Sự khác biệt đến từ quyền truy cập Unity Catalog và Statistics của Delta Lake để nhìn xuyên vào bên trong dữ liệu.

  • Unity Catalog: Databricks Genie thừa hưởng toàn bộ business logic, comment, và lineage có sẵn từ Unity Catalog mà không cần phải setup một Semantic Layer riêng.
  • Delta Lake Statistics: Genie truy cập trực tiếp vào các statistics file của Delta Lake để biết trong bảng dữ liệu giá trị nào tồn tại, độ phân tán ra sao mà không cần chạy query nặng. Đó là lý do nó có thể hiểu dữ liệu và tự tin sửa lỗi cho người dùng, đây là khả năng tự tin mà chỉ giải pháp Native Integration mới có được.

Khác biệt lớn: Genie được fine-tune để hiểu dữ liệu

Model của Genie đã được huấn luyện trên hàng tỷ logs truy vấn thực tế của Databricks, nó học được các lỗi sai phổ biến của con người và cách sửa chúng. Thực tế việc tạo câu query trên Genie hầu như chưa bao giờ gặp vấn đề về lỗi cú pháp, biết được khi nào dùng try_cast để tránh lỗi dữ liệu, khi nào dùng approx_distinct để tối ưu tốc độ. Đó là những điều mà một General Purpose LLM bên ngoài sẽ khó làm được.

Genie cũng có được log query của chính database hiện tại, nó hiểu các pattern JOIN bảng đặc thù của công ty bạn. Thực tế là Genie hiểu dữ liệu của bạn hơn cả bản thân bạn, bạn có thể quên document lại dữ liệu của mình, nhưng Databricks thì không quên ghi log.

Chọn Databricks Genie hay WrenAI?

Cuộc chiến Text-to-SQL thực chất là lựa chọn về sự đánh đổi giữa linh hoạt và tích hợp sâu, chuyển dịch từ việc code đúng sang hiểu dữ liệu sâu hơn.

Dưới đây là các tiêu chí để 'chọn mặt gửi vàng' dựa trên kiến trúc dữ liệu:

Tiêu chíChọn WrenAI khi...Chọn Databricks Genie khi...
Nguồn dữ liệuHỗ trợ nhiều nguồn dữ liệu (Postgres, MySQL, Snowflake...)Dữ liệu tập trung trên Databricks (Delta Lake)
Triết lý quản trịBạn muốn kiểm soát từng thành phần của LLM và sẵn sàng xây dựng Semantic Layer riêng.Bạn muốn giải pháp Zero-setup cho Business User, tận dụng lại logic đã có trong Unity Catalog và tin tưởng vào Managed Model của Databricks
Mục tiêu chínhSự linh hoạt, tự do chọn model, kết nối nhiều nguồn.Sự chính xác ngữ cảnh, tận dụng 'sân nhà' để hiểu sâu dữ liệu.

Tóm lại, WrenAI vẫn là một đại diện xuất sắc cho sự linh hoạt và tinh thần mã nguồn mở, là lựa chọn phù hợp cho các kiến trúc dữ liệu có nhiều nguồn dữ liệu hoặc khi bạn cần quyền kiểm soát chi tiết từng thành phần của LLM.

Tuy nhiên, nếu kiến trúc dữ liệu của bạn xoay quanh Databricks, Genie có khả năng tự động nhận diện ngữ cảnh và truy cập vào trạng thái dữ liệu (như cách Genie xử lý metadata và query logs). Đây chính là chìa khóa khác biệt của một bản demo và giải pháp thực thụ cho doanh nghiệp, xóa bỏ khoảng cách giữa ngôn ngữ tự nhiên và thực tế dữ liệu.

Atekco - Home for Authentic Technical Consultants
Atekco on Apple Podcast