تكامل Milvus مع MindsDB
MindsDB هو أداة قوية لدمج تطبيقات الذكاء الاصطناعي مع مصادر بيانات المؤسسة المتنوعة. وهو يعمل كمحرك استعلام موحد يضفي النظام على البيانات المبعثرة بينما يجيب بدقة على الاستعلامات عبر البيانات المهيكلة وغير المهيكلة. سواءً كانت بياناتك مبعثرة عبر تطبيقات SaaS أو قواعد البيانات أو مستودعات البيانات، يمكن لـ MindsDB ربطها والاستعلام عنها جميعًا باستخدام SQL القياسية. وهو يتميز بأحدث أنظمة RAG المستقلة من خلال قواعد المعرفة، ويدعم المئات من مصادر البيانات، ويوفر خيارات نشر مرنة من التطوير المحلي إلى البيئات السحابية.
يوضح هذا البرنامج التعليمي كيفية دمج Milvus مع MindsDB، مما يتيح لك الاستفادة من إمكانيات الذكاء الاصطناعي في MindsDB مع وظيفة قاعدة بيانات المتجهات في Milvus من خلال عمليات شبيهة بـ SQL لإدارة واستعلام التضمينات المتجهة.
يشير هذا البرنامج التعليمي بشكل أساسي إلى الوثائق الرسمية لمعالج MindsDB Milvus Milvus Handler. إذا وجدت أي أجزاء قديمة في هذا البرنامج التعليمي، يمكنك إعطاء الأولوية لاتباع الوثائق الرسمية وإنشاء مشكلة لنا.
تثبيت MindsDB
قبل أن نبدأ، قم بتثبيت MindsDB محليًا عبر Docker أو Docker Desktop.
قبل المتابعة، تأكد من أن لديك فهمًا راسخًا للمفاهيم والعمليات الأساسية لكل من MindsDB و Milvus.
مقدمة الوسيطات
الوسيطات المطلوبة لإنشاء اتصال هي
uri: uri لقاعدة بيانات milvus، يمكن تعيينها على ملف ".db" المحلي أو خدمة docker أو السحابةtoken: الرمز المميز لدعم docker أو الخدمة السحابية وفقًا لخيار uri
الوسيطات الاختيارية لإنشاء اتصال هي:
يتم استخدامها في SELECT الاستعلامات:
search_default_limit: الحد الافتراضي الذي سيتم تمريره في عبارات التحديد (افتراضي = 100)search_metric_type: نوع المقياس المستخدم في عمليات البحث (افتراضي="L2")search_ignore_growing: ما إذا كان سيتم تجاهل المقاطع المتزايدة أثناء عمليات البحث عن التشابه (افتراضي="خطأ")search_params: خاص بـsearch_metric_type(افتراضي={"nprobe": 10})
تُستخدم هذه لـ CREATE الاستعلامات
create_auto_id: ما إذا كان سيتم إنشاء المعرف تلقائيًا عند إدراج سجلات بدون معرف (افتراضي = خطأ)create_id_max_len: الحد الأقصى لطول حقل المعرف عند إنشاء جدول (افتراضي=64)create_embedding_dim: تضمين البعد لإنشاء جدول (افتراضي=8)create_dynamic_field: ما إذا كانت الجداول المنشأة تحتوي على حقول ديناميكية أم لا (افتراضي=صحيح)create_content_max_len: الحد الأقصى لطول عمود المحتوى (افتراضي=200)create_content_default_value: القيمة الافتراضية لعمود المحتوى (افتراضي='')create_schema_description: وصف المخططات المنشأة (افتراضي=''')create_alias: الاسم المستعار للمخططات التي تم إنشاؤها (افتراضي=''' افتراضي'')create_index_params: معلمات الفهرس الذي تم إنشاؤه على عمود التضمينات (افتراضي='''''')create_index_metric_type: المقياس المستخدم لإنشاء الفهرس (افتراضي='''L2'')create_index_type: نوع الفهرس (افتراضي='AUTOINDEX')
الاستخدام
قبل المتابعة، تأكد من أن الإصدار pymilvus هو نفس الإصدار المثبت هذا. إذا وجدت أي مشاكل في توافق الإصدار، يمكنك التراجع عن إصدار pymilvus، أو تخصيصه في ملف المتطلبات هذا.
إنشاء اتصال
من أجل الاستفادة من هذا المعالج والاتصال بخادم ميلفوس في MindsDB، يمكن استخدام الصيغة التالية:
CREATE DATABASE milvus_datasource
WITH
ENGINE = 'milvus',
PARAMETERS = {
"uri": "./milvus_local.db",
"token": "",
"create_embedding_dim": 3,
"create_auto_id": true
};
- إذا كنت تحتاج فقط إلى قاعدة بيانات متجهية محلية للبيانات صغيرة الحجم أو النماذج الأولية، فإن تعيين uri كملف محلي، على سبيل المثال
./milvus.db، هو الطريقة الأكثر ملاءمة، حيث يستخدم تلقائيًا Milvus Lite لتخزين جميع البيانات في هذا الملف.- بالنسبة للبيانات الأكبر حجمًا وحركة المرور في الإنتاج، يمكنك إعداد خادم Milvus على Docker أو Kubernetes. في هذا الإعداد، يُرجى استخدام عنوان الخادم والمنفذ كعنوان الخادم الخاص بك
uri، على سبيل المثالhttp://localhost:19530. إذا قمت بتمكين ميزة المصادقة على Milvus، قم بتعيينtokenعلى أنه"<your_username>:<your_password>"، وإلا فلا حاجة لتعيين الرمز المميز.- يمكنك أيضًا استخدام Milvus المُدار بالكامل على Zilliz Cloud. ما عليك سوى تعيين
uriوtokenعلى نقطة النهاية العامة ومفتاح واجهة برمجة التطبيقات لمثيل Zilliz Cloud الخاص بك.
إسقاط الاتصال
لإسقاط الاتصال، استخدم هذا الأمر
DROP DATABASE milvus_datasource;
إنشاء الجداول
لإدراج بيانات من جدول موجود مسبقًا، استخدم الأمر CREATE
CREATE TABLE milvus_datasource.test
(SELECT * FROM sqlitedb.test);
إسقاط المجموعات
إسقاط مجموعة غير مدعوم
الاستعلام والاختيار
للاستعلام عن قاعدة البيانات باستخدام متجه بحث، يمكنك استخدام search_vector في البند WHERE
تحذيرات:
- إذا قمت بحذف
LIMIT، يتم استخدامsearch_default_limitنظرًا لأن ميلفوس يتطلب ذلك - عمود البيانات الوصفية غير مدعوم، ولكن إذا كانت المجموعة تحتوي على مخطط ديناميكي ممكّن، يمكنك الاستعلام كالمعتاد، انظر المثال أدناه
- لا يمكن عرض الحقول الديناميكية ولكن يمكن الاستعلام عنها
SELECT * from milvus_datasource.test
WHERE search_vector = '[3.0, 1.0, 2.0, 4.5]'
LIMIT 10;
إذا قمت بحذف search_vector ، يصبح هذا بحثًا أساسيًا ويتم إرجاع LIMIT أو search_default_limit من الإدخالات في المجموعة
SELECT * from milvus_datasource.test
يمكنك استخدام بند WHERE على الحقول الديناميكية مثل SQL العادية
SELECT * FROM milvus_datasource.createtest
WHERE category = "science";
حذف السجلات
يمكنك حذف الإدخالات باستخدام DELETE تمامًا كما هو الحال في SQL.
تنبيهات:
- يدعم ميلفوس فقط حذف الكيانات ذات المفاتيح الأساسية المحددة بوضوح
- يمكنك فقط استخدام المشغل
IN
DELETE FROM milvus_datasource.test
WHERE id IN (1, 2, 3);
إدراج السجلات
يمكنك أيضًا إدراج صفوف فردية مثل ذلك:
INSERT INTO milvus_test.testable (id,content,metadata,embeddings)
VALUES ("id3", 'this is a test', '{"test": "test"}', '[1.0, 8.0, 9.0]');
تحديث
لا تدعم واجهة برمجة تطبيقات Milvus تحديث السجلات. يمكنك محاولة استخدام مزيج من DELETE و INSERT
لمزيد من التفاصيل والأمثلة، يرجى الرجوع إلى الوثائق الرسمية لـ MindsDB.