🚀 جرب Zilliz Cloud، الـ Milvus المدارة بالكامل، مجاناً — تجربة أداء أسرع بـ 10 أضعاف! جرب الآن>>

milvus-logo
LFAI
  • Home
  • Blog
  • لماذا ومتى تحتاج إلى قاعدة بيانات متجهات مصممة لغرض معين؟

لماذا ومتى تحتاج إلى قاعدة بيانات متجهات مصممة لغرض معين؟

  • Engineering
August 29, 2023
James Luan

نُشرت هذه المقالة في الأصل على موقع AIAI ويعاد نشرها هنا بإذن.

أدى تزايد شعبية ChatGPT وغيرها من النماذج اللغوية الكبيرة (LLMs) إلى زيادة شعبية تقنيات البحث المتجه، بما في ذلك قواعد بيانات المتجهات المصممة لهذا الغرض مثل Milvus و Zilliz Cloud، ومكتبات البحث المتجه مثل FAISS، ومكونات البحث المتجه المدمجة مع قواعد البيانات التقليدية. ومع ذلك، قد يكون اختيار الحل الأفضل لاحتياجاتك أمراً صعباً. مثل الاختيار بين مطعم راقٍ وسلسلة مطاعم للوجبات السريعة، يعتمد اختيار تقنية البحث المتجه المناسبة على احتياجاتك وتوقعاتك.

في هذا المنشور، سأقدم لمحة عامة عن البحث المتجه ووظائفه، وأقارن بين تقنيات البحث المتجه المختلفة، وأشرح سبب أهمية اختيار قاعدة بيانات متجهة مصممة لهذا الغرض.

ما هو البحث المتجه، وكيف يعمل؟

البحث عن المتجهات، والمعروف أيضًا باسم البحث عن تشابه المتجهات، هو تقنية لاسترجاع أفضل-ك من النتائج الأكثر تشابهًا أو ارتباطًا دلاليًا بمتجه استعلام معين من بين مجموعة واسعة من بيانات المتجهات الكثيفة.

قبل إجراء عمليات البحث عن التشابه، نستفيد من الشبكات العصبية لتحويل البيانات غير المهيكلة، مثل النصوص والصور ومقاطع الفيديو والصوت، إلى متجهات رقمية عالية الأبعاد تسمى متجهات التضمين. على سبيل المثال، يمكننا استخدام الشبكة العصبية التلافيفية ResNet-50 المدربة مسبقًا لتحويل صورة طائر إلى مجموعة من التضمينات ذات 2048 بُعدًا. ندرج هنا العناصر المتجهة الثلاثة الأولى والأخيرة: [0.1392, 0.3572, 0.1988, ..., 0.2888, 0.6611, 0.2909].

A bird image by Patrice Bouchard صورة طائر بواسطة باتريس بوشارد

بعد توليد متجهات التضمين، تقارن محركات البحث عن المتجهات المسافة المكانية بين متجه الاستعلام المدخلات والمتجهات في مخازن المتجهات. كلما اقتربوا في الفضاء، كلما كانوا أكثر تشابهاً.

Embedding arithmetic حساب التضمين

تتوفر العديد من تقنيات البحث عن المتجهات في السوق، بما في ذلك مكتبات التعلم الآلي مثل NumPy من Python، ومكتبات البحث عن المتجهات مثل FAISS، ومكونات البحث عن المتجهات المبنية على قواعد البيانات التقليدية، وقواعد البيانات المتجهة المتخصصة مثل Milvus و Zilliz Cloud.

مكتبات التعلم الآلي

يعد استخدام مكتبات التعلم الآلي أسهل طريقة لتنفيذ عمليات البحث المتجهية. على سبيل المثال، يمكننا استخدام NumPy من Python لتنفيذ خوارزمية الجار الأقرب في أقل من 20 سطرًا من التعليمات البرمجية.

import numpy as np

# Function to calculate euclidean distance
def euclidean_distance(a, b):
return np.linalg.norm(a - b)

# Function to perform knn
def knn(data, target, k):
# Calculate distances between target and all points in the data
distances = [euclidean_distance(d, target) for d in data]
# Combine distances with data indices
distances = np.array(list(zip(distances, np.arange(len(data)))))

# Sort by distance
sorted_distances = distances[distances[:, 0].argsort()]

# Get the top k closest indices
closest_k_indices = sorted_distances[:k, 1].astype(int)

# Return the top k closest vectors
return data[closest_k_indices]

يمكننا توليد 100 متجه ثنائي الأبعاد وإيجاد أقرب جار للمتجه [0.5، 0.5].

# Define some 2D vectors
data = np.random.rand(100, 2)

# Define a target vector
target = np.array([0.5, 0.5])

# Define k
k = 3

# Perform knn
closest_vectors = knn(data, target, k)

# Print the result
print("The closest vectors are:")
print(closest_vectors)

توفر مكتبات التعلم الآلي، مثل NumPy من Python، مرونة كبيرة بتكلفة منخفضة. ومع ذلك، فإن لها بعض القيود. على سبيل المثال، يمكنها فقط التعامل مع كمية صغيرة من البيانات ولا تضمن ثبات البيانات.

أوصي فقط باستخدام NumPy أو مكتبات التعلم الآلي الأخرى للبحث المتجه عندما:

  • تحتاج إلى نماذج أولية سريعة.
  • لا تهتم باستمرار البيانات.
  • حجم بياناتك أقل من مليون، ولا تحتاج إلى تصفية عددية.
  • لا تحتاج إلى أداء عالٍ.

مكتبات البحث المتجهية

يمكن أن تساعدك مكتبات البحث المتجهية في بناء نظام بحث متجهي نموذجي عالي الأداء بسرعة. FAISS هو مثال نموذجي. وهي مفتوحة المصدر وتم تطويرها بواسطة Meta للبحث الفعال عن التشابه وتجميع المتجهات الكثيفة. يمكن ل FAISS التعامل مع مجموعات المتجهات من أي حجم، حتى تلك التي لا يمكن تحميلها بالكامل في الذاكرة. بالإضافة إلى ذلك، يوفر FAISS أدوات للتقييم وضبط المعلمات. على الرغم من كتابته بلغة C++، إلا أن FAISS يوفر واجهة Python/NumPy.

فيما يلي رمز لمثال بحث متجه يعتمد على FAISS:

import numpy as np
import faiss

# Generate some example data
dimension = 64 # dimension of the vector space
database_size = 10000 # size of the database
query_size = 100 # number of queries to perform
np.random.seed(123) # make the random numbers predictable

# Generating vectors to index in the database (db_vectors)
db_vectors = np.random.random((database_size, dimension)).astype('float32')

# Generating vectors for query (query_vectors)
query_vectors = np.random.random((query_size, dimension)).astype('float32')

# Building the index
index = faiss.IndexFlatL2(dimension) # using the L2 distance metric
print(index.is_trained) # should return True

# Adding vectors to the index
index.add(db_vectors)
print(index.ntotal) # should return database_size (10000)

# Perform a search
k = 4 # we want to see 4 nearest neighbors
distances, indices = index.search(query_vectors, k)

# Print the results
print("Indices of nearest neighbors: \n", indices)
print("\nL2 distances to the nearest neighbors: \n", distances)

تعد مكتبات البحث عن المتجهات مثل FAISS سهلة الاستخدام وسريعة بما يكفي للتعامل مع بيئات الإنتاج على نطاق صغير مع ملايين المتجهات. يمكنك تحسين أداء استعلاماتها من خلال استخدام التكميم ووحدات معالجة الرسومات وتقليل أبعاد البيانات.

ومع ذلك، فإن هذه المكتبات لديها بعض القيود عند استخدامها في الإنتاج. على سبيل المثال، لا تدعم FAISS إضافة البيانات وحذفها في الوقت الحقيقي، أو المكالمات عن بُعد، أو اللغات المتعددة، أو التصفية القياسية، أو قابلية التوسع، أو التعافي من الكوارث.

أنواع مختلفة من قواعد البيانات المتجهة

ظهرت قواعد البيانات المتجهة لمعالجة قيود المكتبات المذكورة أعلاه، مما يوفر حلاً أكثر شمولاً وعملياً لتطبيقات الإنتاج.

تتوفر أربعة أنواع من قواعد البيانات المتجهة في ساحة المعركة:

  • قواعد البيانات العلائقية أو العمودية الحالية التي تتضمن مكونًا إضافيًا للبحث عن المتجهات. مثال على ذلك PG Vector.
  • محركات البحث التقليدية ذات الفهرس المقلوب مع دعم فهرسة المتجهات الكثيفة. ElasticSearch مثال على ذلك.
  • قواعد البيانات المتجهة خفيفة الوزن المبنية على مكتبات البحث المتجهية. كروما مثال على ذلك.
  • قواعد البيانات المتجهة المصممة لغرض معين. هذا النوع من قواعد البيانات مصمم خصيصًا ومحسّن للبحث عن المتجهات من الأسفل إلى الأعلى. عادةً ما تقدم قواعد البيانات المتجهة المصممة لغرض معين ميزات أكثر تقدمًا، بما في ذلك الحوسبة الموزعة واستعادة البيانات بعد الكوارث واستمرار البيانات. ميلفوس هو مثال أساسي على ذلك.

لا يتم إنشاء جميع قواعد البيانات المتجهة على قدم المساواة. فكل حزمة لها مزايا وقيود فريدة من نوعها، مما يجعلها أكثر أو أقل ملاءمة للتطبيقات المختلفة.

أفضّل قواعد البيانات المتجهة المتخصصة على الحلول الأخرى لأنها الخيار الأكثر كفاءة وملاءمة، وتقدم العديد من المزايا الفريدة. في الأقسام التالية، سأستخدم ميلفوس كمثال لشرح أسباب تفضيلي لها.

الفوائد الرئيسية لقواعد البيانات المتجهة المصممة لهذا الغرض

ميلفوس هي قاعدة بيانات متجهات مفتوحة المصدر وموزعة ومصممة لهذا الغرض، ويمكنها تخزين وفهرسة وإدارة واسترجاع مليارات من متجهات التضمين. وهي أيضًا واحدة من أشهر قواعد البيانات المتجهة الأكثر شيوعًا للجيل المعزز لاسترجاع LLM. كمثال نموذجي لقواعد البيانات المتجهة المصممة لهذا الغرض، تشترك ميلفوس في العديد من المزايا الفريدة مع نظيراتها.

ثبات البيانات والتخزين الفعال من حيث التكلفة

في حين أن منع فقدان البيانات هو الحد الأدنى من متطلبات قاعدة البيانات، فإن العديد من قواعد البيانات المتجهة أحادية الجهاز وخفيفة الوزن لا تعطي الأولوية لموثوقية البيانات. على النقيض من ذلك، فإن قواعد البيانات المتجهة الموزعة المصممة لهذا الغرض مثل ميلفوس تعطي الأولوية لمرونة النظام وقابلية التوسع واستمرار البيانات من خلال فصل التخزين عن الحوسبة.

علاوةً على ذلك، تحتاج معظم قواعد البيانات المتجهة التي تستخدم فهارس أقرب جار تقريبي (ANN) إلى الكثير من الذاكرة لإجراء البحث عن المتجهات، حيث إنها تقوم بتحميل فهارس ANN في الذاكرة فقط. ومع ذلك، تدعم Milvus فهارس الأقراص، مما يجعل التخزين أكثر فعالية من حيث التكلفة بأكثر من عشرة أضعاف الفهارس داخل الذاكرة.

الأداء الأمثل للاستعلام

توفر قاعدة البيانات المتجهة المتخصصة الأداء الأمثل للاستعلام مقارنةً بخيارات البحث المتجهة الأخرى. على سبيل المثال، تعدّ Milvus أسرع بعشر مرات في معالجة الاستعلامات من ملحقات البحث المتجه. يستخدم Milvus خوارزمية ANN بدلاً من خوارزمية البحث الوحشي KNN للبحث المتجه بشكل أسرع. بالإضافة إلى ذلك، فإنه يقوم بتجزئة فهارسه، مما يقلل من الوقت الذي يستغرقه إنشاء فهرس مع زيادة حجم البيانات. يُمكّن هذا النهج ميلفوس من التعامل بسهولة مع مليارات المتجهات مع إضافات البيانات وحذفها في الوقت الفعلي. وعلى النقيض من ذلك، فإن الوظائف الإضافية الأخرى للبحث عن المتجهات مناسبة فقط للسيناريوهات التي تحتوي على أقل من عشرات الملايين من البيانات والإضافات والحذف غير المتكرر.

يدعم Milvus أيضًا تسريع وحدة معالجة الرسومات. تُظهر الاختبارات الداخلية أن فهرسة المتجهات المسرَّعة بوحدة معالجة الرسومات يمكن أن تحقق أكثر من 10,000+ QPS عند البحث في عشرات الملايين من البيانات، وهو أسرع بعشر مرات على الأقل من فهرسة وحدة المعالجة المركزية التقليدية لأداء الاستعلام في جهاز واحد.

موثوقية النظام

تستخدم العديد من التطبيقات قواعد البيانات المتجهة للاستعلامات عبر الإنترنت التي تتطلب زمن استعلام منخفض وإنتاجية عالية. وتتطلب هذه التطبيقات تجاوز الفشل في جهاز واحد على مستوى الدقائق، وبعضها يتطلب التعافي من الكوارث عبر المناطق في السيناريوهات الحرجة. وتعاني استراتيجيات النسخ المتماثل التقليدية القائمة على رافت/باكسوس من إهدار خطير للموارد وتحتاج إلى مساعدة لتجزئة البيانات مسبقًا، مما يؤدي إلى ضعف الموثوقية. في المقابل، تمتلك Milvus بنية موزعة تستفيد من قوائم انتظار رسائل K8s من أجل التوافر العالي، مما يقلل من وقت الاسترداد ويوفر الموارد.

قابلية التشغيل والمراقبة

لخدمة المستخدمين من المؤسسات بشكل أفضل، يجب أن تقدم قواعد البيانات المتجهة مجموعة من الميزات على مستوى المؤسسات لتحسين قابلية التشغيل والمراقبة. تدعم Milvus طرق نشر متعددة، بما في ذلك مخطط K8s Operator و Helm، و docker-compose، وPip install، مما يجعلها في متناول المستخدمين ذوي الاحتياجات المختلفة. كما يوفر Milvus أيضًا نظام مراقبة وإنذار يعتمد على Grafana و Prometheus و Loki، مما يحسّن من إمكانية مراقبته. وبفضل البنية السحابية الموزعة الأصلية، تُعد Milvus أول قاعدة بيانات متجهة في المجال تدعم العزل متعدد المستأجرين، ونظام RBAC، وتحديد الحصص، والترقيات المتجددة. كل هذه الأساليب تجعل إدارة Milvus ومراقبتها أبسط بكثير.

بدء العمل مع Milvus في 3 خطوات بسيطة في غضون 10 دقائق

يعد إنشاء قاعدة بيانات متجهة مهمة معقدة، ولكن استخدام واحدة منها بسيط مثل استخدام Numpy و FAISS. حتى الطلاب الذين ليسوا على دراية بالذكاء الاصطناعي يمكنهم تنفيذ البحث المتجه استنادًا إلى Milvus في عشر دقائق فقط. لتجربة خدمات بحث متجهية عالية الأداء وقابلة للتطوير، اتبع هذه الخطوات الثلاث:

Like the article? Spread the word

استمر في القراءة