3 điểm bởi GN⁺ 2024-01-15 | 1 bình luận | Chia sẻ qua WhatsApp
  • Mã nguồn mở tạo Text-To-SQL chính xác bằng LLM áp dụng RAG (Retrieval-Augmented Generation)

Cách Vanna hoạt động

  • Huấn luyện "mô hình" RAG: Huấn luyện mô hình RAG trên dữ liệu của người dùng.
  • Đặt câu hỏi: Khi đặt câu hỏi bằng mô hình đã huấn luyện, hệ thống sẽ trả về truy vấn SQL có thể được tự động thực thi trên cơ sở dữ liệu.

Giao diện người dùng

  • Một số giao diện người dùng được xây dựng bằng Vanna gồm có Jupyter Notebook, vanna-ai/vanna-streamlit, vanna-ai/vanna-flask, vanna-ai/vanna-slack, v.v.

Bắt đầu

  • Cài đặt: Có thể cài Vanna bằng lệnh pip install vanna.
  • Import: Có thể sử dụng Vanna thông qua đoạn mã import vanna as vn.

Huấn luyện

  • Huấn luyện bằng câu lệnh DDL: Có thể huấn luyện mô hình bằng các câu lệnh DDL chứa thông tin về tên bảng, cột, kiểu dữ liệu, quan hệ, v.v. của cơ sở dữ liệu.
  • Huấn luyện bằng tài liệu: Có thể huấn luyện mô hình bằng cách bổ sung tài liệu về thuật ngữ hoặc định nghĩa nghiệp vụ.
  • Huấn luyện bằng SQL: Có thể thêm các truy vấn SQL hiện có làm dữ liệu huấn luyện để tạo ra SQL mới.

Đặt câu hỏi

  • Có thể dùng phương thức vn.ask("질문") để đặt câu hỏi và nhận truy vấn SQL liên quan.

RAG so với fine-tuning

  • RAG có thể di chuyển giữa các LLM, dễ loại bỏ dữ liệu huấn luyện, chi phí thấp và có khả năng thích ứng tốt với tương lai.
  • Fine-tuning hữu ích khi cần tối thiểu hóa số token trong prompt, nhưng khởi đầu chậm và chi phí huấn luyện cũng như vận hành cao.

Vì sao chọn Vanna

  1. Độ chính xác cao với tập dữ liệu phức tạp: Năng lực của Vanna được quyết định dựa trên dữ liệu huấn luyện.
  2. Bảo mật và quyền riêng tư: Nội dung cơ sở dữ liệu không được gửi tới LLM hay cơ sở dữ liệu vector.
  3. Tự học: Khi dùng qua Jupyter, hệ thống có thể tự động học từ các truy vấn đã được thực thi thành công.
  4. Hỗ trợ mọi cơ sở dữ liệu SQL: Có thể kết nối với mọi cơ sở dữ liệu SQL có thể kết nối bằng Python.
  5. Lựa chọn front-end: Có thể bắt đầu từ Jupyter Notebook rồi cung cấp cho người dùng qua Slackbot, ứng dụng web, ứng dụng Streamlit hoặc front-end tùy chỉnh.

Mở rộng Vanna

  • Vanna được thiết kế để kết nối với mọi cơ sở dữ liệu, LLM và cơ sở dữ liệu vector.
  • Lớp cơ sở trừu tượng VannaBase định nghĩa các chức năng nền tảng và cung cấp triển khai sử dụng OpenAI cùng ChromaDB.

Tài liệu bổ sung

  • Có cung cấp tài liệu đầy đủ, website và nhóm Discord để hỗ trợ.

Ý kiến của GN⁺:

  • Vanna là một công cụ mạnh mẽ giúp tự động hóa quản lý cơ sở dữ liệu và tạo truy vấn SQL, cho phép người dùng dễ dàng tạo các truy vấn SQL có độ chính xác cao trên những tập dữ liệu phức tạp.
  • Thông qua giao diện thân thiện với người dùng và tính năng tự học, ngay cả người không chuyên cũng có thể khai thác cơ sở dữ liệu hiệu quả hơn, từ đó đẩy nhanh hơn nữa việc ra quyết định dựa trên dữ liệu.
  • Khả năng mở rộng và thích ứng tương lai của Vanna mang lại cho doanh nghiệp cơ hội phản ứng linh hoạt với thay đổi công nghệ và liên tục cải thiện quy trình quản lý dữ liệu.

1 bình luận

 
GN⁺ 2024-01-15
Ý kiến trên Hacker News
  • Trải nghiệm người dùng đang phát triển dự án ChatDB.ai

    • Đang phát triển một dự án tương tự tên là ChatDB.ai.
    • Trải nghiệm thành công nhất khi kết hợp AI và SQL là phản hồi lại cho LLM các lỗi từ nhà cung cấp SQL sau mỗi vòng lặp.
    • Việc dùng trình bao bọc thông báo lỗi được định dạng để gợi ý mạnh mẽ truy vấn bảng hệ thống rất hiệu quả trong việc khám phá thông tin schema.
    • Với những điều chỉnh nhỏ này, hệ thống trở nên giỏi đáng ngạc nhiên trong việc tìm các truy vấn cần join từ 4 bảng trở lên.
  • Trải nghiệm cá nhân khi dùng GPT-4

    • Đã thực hiện công việc tương tự bằng GPT-4.
    • Dùng lệnh SHOW TABLE của MySQL CLI để kiểm tra cấu trúc bảng, rồi tạo truy vấn dựa trên các bảng đó nhằm hiển thị các chỉ số kinh doanh như tỷ lệ bỏ giỏ hàng.
    • Đã thấy cách này hoạt động khá tốt.
  • Góc nhìn hoài nghi về hệ thống dịch ngôn ngữ tự nhiên sang SQL

    • Dù ghi nhận nỗ lực phát triển các hệ thống chuyển ngôn ngữ tự nhiên sang SQL, vẫn hoài nghi vì bản chất cốt lõi của ngôn ngữ tự nhiên và mô hình là mang tính ước đoán và thiếu độ chính xác.
    • Cơ sở dữ liệu SQL trong đa số trường hợp được thiết kế để xử lý thông tin chính xác và chuẩn xác, nên việc thêm một lớp mang tính suy đoán có thể khiến vấn đề tệ hơn.
    • Đặt câu hỏi liệu những nỗ lực này có thực sự giải quyết hiệu quả nhu cầu của thế giới thực hay không.
  • Sự quan tâm đến các sản phẩm tương tự, bao gồm startup được YC hỗ trợ

    • Đang theo dõi một vài sản phẩm tương tự như Minds DB (YC W20), Buster (YC W24), DB Pilot và rất quan tâm đến lĩnh vực này.
    • Bản thân cũng đang tìm kiếm các giải pháp như vậy.
  • Kinh nghiệm với dịch vụ báo cáo dựa trên duckdb

    • Nhìn chung hoạt động tốt, nhưng gặp một số vấn đề:
      • GPT-4 đôi khi vẫn lệch khỏi ví dụ hoặc schema dù đã đặt nhiệt độ thấp.
      • Dịch vụ lưu trữ dữ liệu tổng quát, nhưng khách hàng lại yêu cầu tạo báo cáo bằng ngôn ngữ chuyên ngành của riêng họ.
      • Việc debug prompt cho LLM khá khó. Khách hàng có thể dễ dàng làm mô hình bị rối.
      • Cung cấp phần "giải thích" về truy vấn được tạo cho khách hàng để minh bạch những gì đã được dùng để viết báo cáo.
  • Lo ngại và giải thích về cách RAG hoạt động

    • Bày tỏ lo ngại về việc dùng thuật ngữ "train".
    • Dành nhiều thời gian để giải thích rằng RAG không cần huấn luyện hay fine-tuning, mà chỉ cần chuẩn bị dữ liệu, chia chunk và vector hóa.
  • Thắc mắc về vấn đề hallucination của LLM

    • Thắc mắc LLM diễn giải các khái niệm thời gian như "hôm qua" như thế nào, và về vấn đề SQL được tạo ra dù hợp lệ về cú pháp nhưng có thể khác với ý định.
    • Đặc biệt trong các truy vấn tổng hợp như MAX, COUNT, có rủi ro đưa ra con số sai; để xác minh thì lại phải tự đọc SQL, điều này đi ngược mục đích ban đầu.
  • Chia sẻ kinh nghiệm dùng dataset và công nghệ riêng

    • Đã dùng công nghệ tương tự để phát triển một bot cho phép nhân viên nội bộ trò chuyện với các dataset có cấu trúc.
    • Trên thực tế nó có hoạt động ở mức nào đó, nhưng có vài thách thức:
      • Có nhiều enum và kiểu dữ liệu đặc thù công việc mà các mô hình sẵn có không có, nên phải định nghĩa thủ công và thêm vào prompt dưới dạng ngữ cảnh.
      • Việc xử lý các câu hỏi liên quan đến thời gian khá khó.
      • Vì người dùng có thể hỏi bất cứ điều gì, nên cần rất nhiều truy vấn SQL mẫu ngay cả với một bảng đơn lẻ.
      • Khó mở rộng sang nhiều bảng khác nhau, và đang tự hỏi liệu có cách hiệu quả hơn không.
      • Đã dùng mô hình Llama2 70B Gen, nhưng muốn biết liệu có mô hình nào khác cho hiệu năng tốt hơn trong việc tạo truy vấn SQL hay không.
  • Kinh nghiệm tại bit.io và phản ứng của khách hàng

    • Đã làm việc tương tự tại bit.io và mọi người rất thích nó.
    • Có nhiều bài viết về những gì đã phát hiện trong quá trình đó; hiện công ty đã được Databricks mua lại và dịch vụ đã ngừng hoạt động.
    • Sẵn sàng trả lời câu hỏi trong khả năng có thể.