vectordb
هي قاعدة بيانات ناقلة بايثونية توفر مجموعة شاملة من عمليات CRUD (الإنشاء والقراءة والتحديث والحذف) وخيارات قوية لقابلية التوسع، بما في ذلك التجزئة والنسخ المتماثل. يمكن نشره بسهولة في مجموعة متنوعة من البيئات، بدءًا من البيئات المحلية وحتى المحلية والسحابية. يقدم vectordb
ما تحتاجه بالضبط - لا أكثر ولا أقل. إنها شهادة على التصميم البايثوني الفعال دون الإفراط في الهندسة، مما يجعله حلاً بسيطًا وقويًا لجميع احتياجاتك.
تستفيد vectordb
من براعة الاسترجاع القوية لـ DocArray وقابلية التوسع والموثوقية وقدرات الخدمة لـ Jina. وإليك السحر: يعمل DocArray كمحرك لمنطق البحث المتجه، بينما تضمن Jina خدمة فهرس فعالة وقابلة للتطوير. يتوج هذا التآزر بتجربة قاعدة بيانات متجهة قوية وسهلة الاستخدام - وهذا هو vectordb
المناسب لك.
نقطة تثبيت Vectordb
vectordb
محلياابدأ الأمور عن طريق تحديد مخطط المستند باستخدام صيغة فئة بيانات DocArray:
من docarray استيراد BaseDocfrom docarray.typing استيراد NdArrayclass ToyDoc(BaseDoc): النص: str = '' التضمين: NdArray[128]
اختر قاعدة بيانات معدة مسبقًا (مثل InMemoryExactNNVectorDB
أو HNSWVectorDB
)، وقم بتطبيق المخطط:
من docarray import DocListimport numpy as npfrom Vectordb import InMemoryExactNNVectorDB, HNSWVectorDB# حدد مساحة العمل الخاصة بك pathdb = InMemoryExactNNVectorDB[ToyDoc](workspace='./workspace_path')# فهرسة قائمة المستندات ذات التضمينات العشوائيةdoc_list = [ToyDoc(text=f'toy doc) {أنا}'، embedding=np.random.rand(128)) for i in range(1000)]db.index(inputs=DocList[ToyDoc](doc_list))# إجراء استعلام بحث = ToyDoc(text='query', embedding=np .random.rand(128))results = db.search(inputs=DocList[ToyDoc]([استعلام])، Limit=10)# اطبع المطابقات لـ m في النتائج[0].matches: print(m)
وبما أننا أصدرنا استعلامًا واحدًا، results
تحتوي على عنصر واحد فقط. يتم تخزين نتائج البحث عن الجيران بشكل ملائم في السمة .matches
.
vectordb
كخدمة تم تصميم vectordb
ليتم تقديمه بسهولة كخدمة، ويدعم بروتوكولات الاتصال gRPC
و HTTP
و Websocket
.
من جانب الخادم، ستبدأ الخدمة كما يلي:
مع db.serve(protocol='grpc'، port=12345، النسخ المتماثلة=1، shards=1) كخدمة: Service.block()
يبدأ هذا الأمر vectordb
كخدمة على المنفذ 12345
، باستخدام بروتوكول gRPC
مع نسخة متماثلة 1
وجزء 1
.
من جانب العميل، يمكنك الوصول إلى الخدمة باستخدام الأوامر التالية:
من Vectordb import Client# قم بإنشاء مثيل للعميل المتصل بالخادم. عمليًا، استبدل 0.0.0.0 بالخادم IP عنوان.client = Client[ToyDoc](address='grpc://0.0.0.0:12345')# إجراء استعلام بحثresults = client.search(inputs=DocList[ToyDoc] ([استعلام])، الحد=10)
يتيح لك ذلك إجراء استعلام بحث، وتلقي النتائج مباشرة من خدمة vectordb
عن بعد.
vectordb
على Jina AI Cloud يمكنك نشر مثيل vectordb
الخاص بك بسلاسة إلى Jina AI Cloud، مما يضمن الوصول إلى قاعدة البيانات الخاصة بك من أي مكان.
ابدأ بتضمين مثيل قاعدة البيانات أو الفئة في ملف Python:
# example.pyfrom docarray import BaseDocfrom Vectordb import InMemoryExactNNVectorDBdb = InMemoryExactNNVectorDB[ToyDoc](workspace='./vectordb') # لاحظ كيف أن `db` هو المثيل الذي نريد خدمتهif __name__ == '__main__':# هام: تأكد لحماية هذا الجزء من الكود باستخدام __main__guardwith db.serve() كخدمة:service.block()
بعد ذلك، اتبع الخطوات التالية لنشر المثيل الخاص بك:
إذا لم تكن قد قمت بذلك بالفعل، قم بالتسجيل للحصول على حساب Jina AI Cloud.
استخدم سطر أوامر jc
لتسجيل الدخول إلى حساب Jina AI Cloud الخاص بك:
تسجيل الدخول جي سي
نشر المثيل الخاص بك:
نشر Vectordb - مثال db:db
بعد النشر، استخدم عميل vectordb
للوصول إلى نقطة النهاية المخصصة:
من Vectordb import Client# استبدل المعرف بمعرف قاعدة البيانات المنشورة الخاصة بك كما هو موضح في لقطة الشاشة أعلاهc = Client(address='grpcs://ID.wolf.jina.ai')
يمكنك بعد ذلك إدراج قواعد البيانات المنشورة أو إيقافها مؤقتًا أو استئنافها أو حذفها باستخدام أمر jc
:
jcloud list ID
jcloud pause ID
أو jcloud resume ID
jcloud remove ID
تعمل قواعد بيانات المتجهات كمستودعات متطورة للتضمين، حيث تلتقط جوهر التشابه الدلالي بين الكائنات المتباينة. تسهل قواعد البيانات هذه عمليات البحث عن التشابه عبر عدد لا يحصى من أنواع البيانات متعددة الوسائط، مما يمهد الطريق لعصر جديد من استرجاع المعلومات. من خلال توفير الفهم السياقي وإثراء نتائج التوليد، تعمل قواعد البيانات المتجهة على تحسين أداء وفائدة نماذج تعلم اللغة (LLM) بشكل كبير. وهذا يؤكد دورهم المحوري في تطور علوم البيانات وتطبيقات التعلم الآلي.
يشترك كل من استخدام المكتبة المحلية وتفاعلات خادم العميل في vectordb
في نفس واجهة برمجة التطبيقات. يوفر هذا وظائف index
search
update
delete
:
index
: يقبل DocList
للفهرسة.
search
: يأخذ DocList
من الاستعلامات المجمعة أو BaseDoc
واحد كاستعلام واحد. تقوم بإرجاع نتائج فردية أو متعددة، تحتوي كل منها على سمات matches
scores
مرتبة حسب relevance
.
delete
: يقبل DocList
المستندات المراد إزالتها من الفهرس. تعتبر سمة id
فقط ضرورية، لذا تأكد من تتبع IDs
indexed
إذا كنت بحاجة إلى حذف المستندات.
update
: يقبل DocList
المستندات للتحديث في الفهرس. ستستبدل عملية update
المستند indexed
بنفس الفهرس بالسمات والحمولة من مستندات الإدخال.
يمكنك تقديم خدمة vectordb
والوصول إليها من العميل باستخدام المعلمات التالية:
البروتوكول: بروتوكول التقديم. يمكن أن يكون gRPC
أو HTTP
أو websocket
أو مزيجًا منها، ويتم توفيره كقائمة. الافتراضي هو gRPC
.
المنفذ: منفذ الوصول إلى الخدمة. يمكن أن تكون قائمة بالمنافذ لكل بروتوكول مقدم. الافتراضي هو 8081.
مساحة العمل: المسار الذي يحتفظ فيه VectorDB بالبيانات المطلوبة. الافتراضي هو "." (الدليل الحالي).
يمكنك تعيين معلمتين للقياس عند تقديم أو نشر قواعد بيانات المتجهات الخاصة بك باستخدام vectordb
:
الشظايا: عدد شظايا البيانات. يؤدي ذلك إلى تحسين زمن الوصول، حيث يضمن vectordb
فهرسة المستندات في جزء واحد فقط من الأجزاء. يتم إرسال طلبات البحث إلى جميع الأجزاء ويتم دمج النتائج.
النسخ المتماثلة: عدد النسخ المتماثلة لقاعدة البيانات. يستخدم vectordb
خوارزمية RAFT لمزامنة الفهرس بين النسخ المتماثلة لكل جزء. يؤدي هذا إلى زيادة توفر الخدمة وإنتاجية البحث، حيث يمكن للنسخ المتماثلة المتعددة الاستجابة بالتوازي لمزيد من طلبات البحث مع السماح بعمليات CRUD. ملاحظة: في عمليات نشر JCloud، يتم تعيين عدد النسخ المتماثلة على 1. نحن نعمل على تمكين النسخ المتماثل في السحابة.
فيما يلي المعلمات لكل نوع VectorDB
:
تقوم قاعدة البيانات هذه بإجراء بحث شامل عن عمليات التضمين ولها إعدادات تكوين محدودة:
workspace
: المجلد الذي يتم الاحتفاظ بالبيانات المطلوبة فيه.
InMemoryExactNNVectorDB[MyDoc](workspace='./vectordb')InMemoryExactNNVectorDB[MyDoc].serve(workspace='./vectordb')
تستخدم قاعدة البيانات هذه خوارزمية HNSW (العالم الصغير الهرمي القابل للملاحة) من HNSWLib للبحث التقريبي عن أقرب جار. يوفر العديد من خيارات التكوين:
workspace
: يحدد الدليل حيث يتم تخزين البيانات المطلوبة واستمرارها.
بالإضافة إلى ذلك، يقدم HNSWVectorDB مجموعة من التكوينات التي تسمح بضبط أداء ودقة خوارزمية بحث الجوار الأقرب. يمكن العثور على الأوصاف التفصيلية لهذه التكوينات في ملف HNSWLib التمهيدي:
space
: يحدد مقياس التشابه المستخدم للمسافة (الخيارات هي "l2" أو "ip" أو "cosine"). الافتراضي هو "l2".
max_elements
: يضبط السعة الأولية للمؤشر، والتي يمكن زيادتها ديناميكيًا. الافتراضي هو 1024.
ef_construction
: تتحكم هذه المعلمة في المفاضلة بين السرعة/الدقة أثناء إنشاء الفهرس. الافتراضي هو 200.
ef
: تتحكم هذه المعلمة في المفاضلة بين وقت الاستعلام/الدقة. الافتراضي هو 10.
M
: تحدد هذه المعلمة الحد الأقصى لعدد الاتصالات الصادرة في الرسم البياني. الافتراضي هو 16.
allow_replace_deleted
: إذا تم ضبطه على True
، فسيسمح هذا باستبدال العناصر المحذوفة بأخرى تمت إضافتها حديثًا. الافتراضي هو False
.
num_threads
: يقوم هذا بتعيين العدد الافتراضي لسلاسل الرسائل التي سيتم استخدامها أثناء عمليات index
search
. الافتراضي هو 1.
يتضمن vectordb
واجهة سطر أوامر (CLI) بسيطة لخدمة قاعدة البيانات الخاصة بك ونشرها:
وصف | يأمر |
---|---|
خدمة قاعدة البيانات الخاصة بك محليا | vectordb serve --db example:db |
انشر قاعدة البيانات الخاصة بك على Jina AI Cloud | vectordb deploy --db example:db |
واجهة سهلة الاستخدام: مع vectordb
، البساطة هي المفتاح. تم تصميم واجهته البديهية لاستيعاب المستخدمين عبر مستويات مختلفة من الخبرة.
تصميم بسيط: يحتوي vectordb
على جميع الأساسيات، دون أي تعقيد غير ضروري. فهو يضمن الانتقال السلس من النشر المحلي إلى الخادم والنشر السحابي.
دعم CRUD الكامل: بدءًا من الفهرسة والبحث وحتى التحديث والحذف، يغطي vectordb
النطاق الكامل لعمليات CRUD.
قاعدة البيانات كخدمة: استفد من قوة بروتوكولات gRPC وHTTP وWebsocket باستخدام vectordb
. أنها تمكنك من خدمة قواعد البيانات الخاصة بك وإجراء عمليات الإدراج أو البحث بكفاءة.
قابلية التوسع: استمتع بالقوة الخام لإمكانيات النشر الخاصة بـ vectordb
، بما في ذلك ميزات قابلية التوسع القوية مثل التجزئة والنسخ المتماثل. قم بتحسين زمن استجابة الخدمة لديك من خلال التقسيم، بينما يعمل النسخ المتماثل على تحسين التوفر والإنتاجية.
النشر السحابي: أصبح نشر خدمتك في السحابة أمرًا سهلاً مع Jina AI Cloud. المزيد من خيارات النشر ستتوفر قريبًا!
القدرة بدون خادم: يمكن نشر vectordb
في وضع بدون خادم في السحابة، مما يضمن الاستخدام الأمثل للموارد وتوافر البيانات وفقًا لاحتياجاتك.
خوارزميات ANN المتعددة: يقدم vectordb
تطبيقات متنوعة لخوارزميات الجيران التقريبيين (ANN). فيما يلي العروض الحالية، مع المزيد من عمليات التكامل في الأفق:
InMemoryExactNNVectorDB (بحث NN الدقيق): يطبق خوارزمية بسيطة لأقرب جار.
HNSWVectorDB (استنادًا إلى HNSW): يستخدم HNSWLib
يبدو مستقبل قاعدة بيانات Vector مشرقًا، ولدينا خطط طموحة! إليك نظرة سريعة على الميزات التي نعمل على تطويرها حاليًا:
المزيد من خوارزميات بحث ANN: هدفنا هو دعم نطاق أوسع من خوارزميات بحث ANN.
قدرات التصفية المحسنة: نحن نعمل على تحسين حلول بحث ANN لدعم التصفية المتقدمة.
قابلية التخصيص: نهدف إلى جعل vectordb
قابلاً للتخصيص بدرجة كبيرة، مما يسمح لمطوري Python بتخصيص سلوكه ليناسب احتياجاتهم الخاصة بسهولة.
توسيع السعة بدون خادم: نحن نسعى جاهدين لتعزيز السعة بدون خادم لـ vectordb
في السحابة. بينما ندعم حاليًا القياس بين 0 و1 نسخة متماثلة، فإن هدفنا هو توسيع هذا إلى 0 إلى N نسخة متماثلة.
خيارات النشر الموسعة: نحن نعمل بنشاط على تسهيل نشر vectordb
عبر مختلف الأنظمة الأساسية السحابية، مع مجموعة واسعة من الخيارات.
بحاجة الى مساعدة مع vectordb
؟ هل أنت مهتم باستخدامه ولكنك تحتاج إلى ميزات معينة لتلبية احتياجاتك الفريدة؟ لا تتردد في التواصل معنا. انضم إلى مجتمع Discord الخاص بنا للدردشة معنا ومع أعضاء المجتمع الآخرين.
مشروع VectorDB مدعوم من Jina AI ومرخص بموجب Apache-2.0. المساهمات من المجتمع هي محل تقدير كبير! إذا كانت لديك فكرة عن ميزة جديدة أو تحسين، فنحن نحب أن نسمع منك. نحن نبحث دائمًا عن طرق لجعل vectordb
أكثر سهولة في الاستخدام وفعالية.