رمز للدراسة القياسية الموضحة في منشور المدونة هذا.
LOCEDB هي قاعدة بيانات متجه مفتوح المصدر ومدمج وصديقة للمطور. فيما يلي بعض الميزات الرئيسية حول LocentialB والتي تجعلها ذات قيمة كبيرة ، من بين أمور أخرى كثيرة مدرجة في Github Repo.
الهدف من هذا الريبو هو إظهار ميزات البحث عن النص الكامل والمتجهات لـ locatedB عبر معيار شامل ، حيث ندرس نتائج الاستعلام والإنتاجية بعناية.
مجموعة البيانات المستخدمة لهذا العرض التوضيحي هي مجموعة بيانات مراجعة النبيذ من Kaggle ، والتي تحتوي على حوالي 130 ألف مراجعات على النبيذ مع البيانات الوصفية الأخرى. يتم تحويل مجموعة البيانات إلى أرشيف مضغوط ، ويتم توفير رمز ذلك وكذلك بيانات ZIP هنا للرجوع إليها.
تعد دراسة أداء أي أداة في عزلة تحديًا ، لذلك من أجل المقارنة ، يتم توفير سير عمل Elasticsearch في هذا الريبو. Elasticsearch هو محرك البحث الكامل والمتجه القائم على Lucene شهير والذي يبرر استخدامه بانتظام للنص الكامل (وفي هذه الأيام ، البحث في المتجهات) ، مما يجعله أداة ذات معنى لمقارنة BancedB ضد.
تثبيت التبعيات في البيئة الافتراضية عبر requirements.txt . txt.
# Setup the environment for the first time
python -m venv .venv # python -> python 3.11+
# Activate the environment (for subsequent runs)
source .venv/bin/activate
python -m pip install -r requirements.txtملحوظة
BAAI/bge-small-en-v1.5 )| قضية | Elasticsearch (QPS) | locentb (QPS) |
|---|---|---|
| FTS: المسلسل | 399.8 | 468.9 |
| FTS: متزامن | 1539.0 | 528.9 |
| البحث المتجه: المسلسل | 11.9 | 54.0 |
| البحث المتجه: متزامن | 50.7 | 71.6 |
يتضمن المعيار التسلسلي الموضح أدناه استعلامات تشغيل متسلسلة في مزامنة للحلقة في بيثون. هذا لا يمثل حالة استخدام واقعية في الإنتاج ، ولكنه مفيد لفهم أداء محركات البحث الأساسية في كل حالة (Lucene for Elasticsearch و Tantivy لـ locentb).
ستتم مناقشة مزيد من التفاصيل حول هذا في منشور مدونة.
| استفسارات | Elasticsearch (SEC) | Elasticsearch (QPS) | locentb (ثانية) | locentb (QPS) |
|---|---|---|---|---|
| 10 | 0.0516 | 193.8 | 0.0518 | 193.0 |
| 100 | 0.2589 | 386.3 | 0.2383 | 419.7 |
| 1000 | 2.5748 | 388.6 | 2.1759 | 459.3 |
| 10000 | 25.0318 | 399.8 | 21.3196 | 468.9 |
| استفسارات | Elasticsearch (SEC) | Elasticsearch (QPS) | locentb (ثانية) | locentb (QPS) |
|---|---|---|---|---|
| 10 | 0.8087 | 12.4 | 0.2158 | 46.3 |
| 100 | 7.6020 | 13.1 | 1.6803 | 59.5 |
| 1000 | 84.0086 | 11.9 | 16.7948 | 59.5 |
| 10000 | 842.9494 | 11.9 | 185.0582 | 54.0 |
تم تصميم المعيار المتزامن لتكرار حالة استخدام واقعية لـ LocentB أو Elasticsearch - حيث تصل استعلامات متعددة في نفس الوقت ، ويجب على واجهة برمجة تطبيقات REST أعلى DB التعامل مع الطلبات غير المتزامنة.
ملحوظة
multiprocessing في بيثون على 4 مؤشرات ترابط العمال (عدد أكبر من المواضيع أدى إلى أداء أبطأ). | استفسارات | Elasticsearch (SEC) | Elasticsearch (QPS) | locentb (ثانية) | locentb (QPS) |
|---|---|---|---|---|
| 10 | 0.0350 | 285.7 | 0.0284 | 351.4 |
| 100 | 0.1243 | 804.1 | 0.2049 | 487.8 |
| 1000 | 0.6972 | 1434.5 | 1.8980 | 526.8 |
| 10000 | 6.4948 | 1539.0 | 18.9136 | 528.9 |
| استفسارات | Elasticsearch (SEC) | Elasticsearch (QPS) | locentb ، 4 مؤشرات ترابط (ثانية) | locentb ، 4 مؤشرات ترابط (QPs) |
|---|---|---|---|---|
| 10 | 0.2896 | 34.5 | 0.1409 | 71.0 |
| 100 | 2.5275 | 39.6 | 1.3367 | 74.8 |
| 1000 | 20.4268 | 48.9 | 13.3158 | 75.1 |
| 10000 | 197.2314 | 50.7 | 139.6330 | 71.6 |