Vanna.ai - إطار عمل ذكي لإنشاء SQL: شرح تفصيلي
نظرة عامة على المشروع
Vanna هو إطار عمل Python RAG (جيل معزز بالاسترجاع) مفتوح المصدر بموجب ترخيص MIT، متخصص في إنشاء SQL والوظائف ذات الصلة. يسمح هذا المشروع للمستخدمين بالتفاعل مع قواعد بيانات SQL بلغة طبيعية، مما يحقق إنشاء استعلامات SQL دقيقة من النصوص.
عنوان GitHub: https://github.com/vanna-ai/vanna
الميزات الأساسية
🤖 محادثة ذكية
- تفاعل باللغة الطبيعية: يمكن للمستخدمين طرح الأسئلة بلغة عادية، ويقوم النظام تلقائيًا بإنشاء استعلامات SQL المقابلة.
- ملاحظات في الوقت الفعلي: يدعم النظام تلقي ملاحظات المستخدمين حول نتائج الإنشاء، مما يحسن الدقة باستمرار.
- التعلم الذاتي: يمكنه التعلم تلقائيًا من الاستعلامات التي تم تنفيذها بنجاح، مما يحسن دقة النتائج المستقبلية.
📊 بنية تقنية RAG
يعتمد Vanna على تقنية الجيل المعزز بالاسترجاع (RAG)، وينقسم سير العمل إلى خطوتين بسيطتين:
- مرحلة التدريب: تدريب "نموذج" RAG على بياناتك.
- مرحلة الاستعلام: طرح سؤال، وإرجاع استعلام SQL يمكن تشغيله تلقائيًا على قاعدة البيانات.
🔄 دعم واسع لقواعد البيانات
يدعم العديد من قواعد البيانات الرئيسية:
- PostgreSQL
- MySQL
- Microsoft SQL Server
- Oracle
- Snowflake
- BigQuery
- ClickHouse
- Apache Hive
- PrestoDB
- SQLite
- DuckDB
المزايا التقنية
مزايا مقارنة بطرق الضبط الدقيق التقليدية
- قابلية نقل قوية: يمكن استخدامه عبر نماذج لغوية كبيرة مختلفة (LLM).
- إدارة بيانات مرنة: سهولة إزالة بيانات التدريب القديمة.
- فعالية من حيث التكلفة: تكلفة التشغيل أقل من الضبط الدقيق.
- توجه نحو المستقبل: سهولة استبدال نماذج لغوية كبيرة أفضل (LLM).
ضمانات الأمان
- خصوصية البيانات: لا يتم إرسال محتوى قاعدة البيانات أبدًا إلى نماذج لغوية كبيرة (LLM) أو قواعد بيانات المتجهات.
- تنفيذ محلي: يتم تنفيذ SQL في بيئة محلية.
- نشر خاص: يدعم النشر الخاص بالكامل.
طريقة الاستخدام
التثبيت
pip install vanna
التكوين الأساسي
from vanna.openai.openai_chat import OpenAI_Chat
from vanna.chromadb.chromadb_vector import ChromaDB_VectorStore
class MyVanna(ChromaDB_VectorStore, OpenAI_Chat):
def __init__(self, config=None):
ChromaDB_VectorStore.__init__(self, config=config)
OpenAI_Chat.__init__(self, config=config)
vn = MyVanna(config={'api_key': 'sk-...', 'model': 'gpt-4-...'})
تدريب النموذج
يمكن تدريب النموذج بعدة طرق:
تدريب باستخدام عبارات DDL:
vn.train(ddl="""
CREATE TABLE IF NOT EXISTS my-table (
id INT PRIMARY KEY,
name VARCHAR(100),
age INT
)
""")
تدريب باستخدام وثائق الأعمال:
vn.train(documentation="Our business defines XYZ as ...")
تدريب باستخدام استعلامات SQL:
vn.train(sql="SELECT name, age FROM my-table WHERE name = 'John Doe'")
استخدام الاستعلام
vn.ask("What are the top 10 customers by sales?")
سيعيد النظام:
- عبارة استعلام SQL التي تم إنشاؤها.
- جدول نتائج التنفيذ.
- مخطط Plotly تم إنشاؤه تلقائيًا.
خيارات واجهة المستخدم
يوفر Vanna العديد من واجهات المستخدم:
- Jupyter Notebook: مناسب لمحللي البيانات والمطورين.
- تطبيق ويب: مناسب للمستخدمين النهائيين.
- تطبيق Streamlit: تطوير سريع للنماذج الأولية.
- Slackbot: للتعاون الجماعي.
- واجهة أمامية مخصصة: حلول مخصصة بالكامل.
تصميم معماري
يعتمد Vanna على تصميم معياري، استنادًا إلى الفئة الأساسية المجردة VannaBase، ويمكن توسيعه بسهولة لاستخدام:
- نماذج لغوية كبيرة (LLM): OpenAI، Claude، نماذج محلية، إلخ.
- قواعد بيانات المتجهات: ChromaDB، Pinecone، Weaviate، إلخ.
- موصلات قواعد البيانات: يدعم أي قاعدة بيانات SQL يمكن توصيلها بـ Python.
سيناريوهات التطبيق
تحليل الأعمال
- يمكن لغير التقنيين الاستعلام عن البيانات مباشرة باللغة الطبيعية.
- إنشاء تقارير وتحليلات الأعمال بسرعة.
- أتمتة مهام استعلام البيانات الشائعة.
كفاءة التطوير
- تسريع عملية تطوير SQL.
- تقليل وقت كتابة الاستعلامات المعقدة.
- تقديم اقتراحات لتحسين الاستعلام.
التعليم والتدريب
- المساعدة في تعلم بناء جملة SQL.
- فهم هياكل الاستعلام المعقدة.
- تعلم أفضل الممارسات لقواعد البيانات.
ملخص
Vanna.ai هو إطار عمل قوي وسهل الاستخدام لتحويل النصوص إلى SQL، فهو يتيح لأي شخص التفاعل مع قواعد البيانات بلغة طبيعية من خلال الجمع بين تقنية RAG والنماذج اللغوية الكبيرة. سواء كانوا محللي بيانات أو مطورين أو مستخدمي أعمال، يمكنهم الاستفادة من هذه الأداة، مما يزيد بشكل كبير من كفاءة استعلام البيانات وتحليلها.