LocalTabula: Truy Vấn Dữ Liệu Bảng Bằng Ngôn Ngữ Tự Nhiên

Khám phá sức mạnh phân tích dữ liệu AI bảo mật với LocalTabula—ứng dụng Streamlit chạy offline, biến file Excel và CSV Google Sheet thành cơ sở dữ liệu trò chuyện. Tận dụng LLM cục bộ để sinh SQL bằng ngôn ngữ tự nhiên, tìm kiếm ngữ nghĩa và tùy chỉnh prompt engineering trên phần cứng giá rẻ. Hoàn hảo cho quản trị dữ liệu, triển khai tiết kiệm chi phí và hỗ trợ truy vấn đa ngôn ngữ.

Trong kỷ nguyên AI, việc “chat” trực tiếp với spreadsheet đang ngày càng trở nên phổ biến. Nhưng hầu hết giải pháp hiện nay đều dựa vào đám mây, khiến dữ liệu nhạy cảm dễ bị lộ. LocalTabula ra đời để giải quyết bài toán đó: một ứng dụng Streamlit cho phép bạn tải file Excel hoặc Google Sheet CSV lên, đặt câu hỏi bằng tiếng Anh hoặc tiếng Việt—và mọi thứ diễn ra hoàn toàn offline.

Từ việc tự động chuyển đổi sang SQLite, lập chỉ mục văn bản bằng Qdrant, đến động cơ routing thông minh giữa SQL và semantic search, LocalTabula mang lại trải nghiệm chat-to-data nhanh gọn mà vẫn đảm bảo chủ quyền dữ liệu.

Điểm Nhấn

  • Local-First & Bảo mật: Dữ liệu không bao giờ rời khỏi máy bạn, phù hợp với yêu cầu GDPR, HIPAA hoặc chính sách nội bộ.
  • Chạy trên máy cấu hình thấp: Chỉ cần 4 GB VRAM GPU + CPU là đã đủ: Gemma3-4B 4-bit cho GPU, model SQL 1.3B trên CPU.
  • Tối ưu tài nguyên: CPU xử lý model nhỏ để tạo SQL, GPU tập trung cho model lớn điều phối và tinh chỉnh câu hỏi.
  • Prompt Engineering: Pipeline đa giai đoạn, với template, few-shot, retry loop và feedback prompt giúp nâng độ chính xác từ ~30% lên ~90% trên các tác vụ NL→SQL.
  • Truy Cập SOTA SQL Models: Thử nghiệm cho thấy các model chuyên SQL như XiYanSQL–QwenCoder-3B đôi khi còn vượt trội GPT-4o hay Sonnet 3.7 về độ chính xác truy vấn.

Kết quả thử nghiệm

Độ chính xác benchmark:
– Dùng pip-sql-1.3b (GGUF) đạt ~80% trên các câu hỏi cơ bản (Spider).

  • Test 1: Single database
  • Test 2: Sử dụng nhiều database (model phải chọn đúng db); query được biến đổi cho khác query gốc trong test dataset
  • Test 3: Tương tự test 2 nhưng điều chỉnh số sample và prompt
TestProcessedDB SkippedPipeline SuccessExecutedMatchedExec AccuracyMatched / Processed
1500N/A483996.00%78.00%
21001186533861.63%38.00%
330002461056342.68%21.00%

Processed: số lượng câu hỏi đã thử (giới hạn hoặc mẫu).

DB Skipped: câu hỏi bỏ qua do lỗi thiết lập DB.

Pipeline Success: (Test 2 & 3) số trường hợp chọn đúng DB, route & sinh SQL thành công.

Executed: SQL sinh ra được chạy thành công.

Matched: SQL sinh ra cho kết quả khớp với kết quả chuẩn.

Exec Accuracy: Tỷ lệ chạy thành công trên tổng (Processed – Skipped).

Matched / Processed: tỷ lệ trả đúng đáp án trên tổng câu hỏi thử nghiệm

  • Q: What are the top 10 job titles?

Nhưng với khả năng tinh chỉnh prompt và retry, LocalTabula cho phép người dùng điều chỉnh các thông số để model nhỏ cũng đạt hiệu suất gần tương đương SOTA.

Một số tính năng kỹ thuật

  • Pipeline 5 Giai Đoạn:
    1. Tiền xử lý & chuẩn hoá ngôn ngữ
    2. Chọn luồng (SQL vs. semantic) & đóng gói schema
    3. Prompt refinement (tùy chọn)
    4. Thực thi SQL & fallback
    5. Tổng hợp kết quả bằng ngôn ngữ tự nhiên
  • Tùy Chỉnh :
    Mọi cấu hình nằm trong .env, config/prompts.yamlutils.py. Bạn có thể điều chỉnh model, template, số lần retry, metric Qdrant, và nhiều tham số khác trong code.
  • Hỗ trợ đa ngôn ngữ:
    Dùng model front-end mạnh hơn để dịch và làm sạch câu hỏi trước khi đưa vào SQL model, đảm bảo hiệu quả với cả tiếng Anh lẫn tiếng Việt.
  • Dual-Model Architecture:
    Một model lớn (GPU) lo điều phối, refine, một model nhỏ (CPU) sinh SQL. Tối ưu tải, phù hợp máy cấu hình thấp.

Kết Luận & Lộ Trình Phát Triển

LocalTabula mang lại cách tiếp cận an toàn, tiết kiệm và linh hoạt để “trò chuyện” với dữ liệu bảng. Phiên bản hiện tại đã vận hành ổn định pipeline lõi, UI đơn giản, và roadmap sẽ bổ sung: giao diện cấu hình trực quan, console SQL tương tác, và hỗ trợ Google Colab.

Github: https://github.com/phuocnguyen90/LocalTabula

Leave a Reply

Your email address will not be published. Required fields are marked *