Home
Login

مكتبة فعالة للبحث عن التشابه وتجميع المتجهات الكثيفة

MITC++ 35.6kfacebookresearch Last Updated: 2025-06-20

Faiss - مكتبة بحث التشابه للذكاء الاصطناعي من فيسبوك

نظرة عامة على المشروع

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

عنوان المشروع: https://github.com/facebookresearch/faiss

فريق التطوير: Facebook AI Research (Meta AI)

لغة التطوير: C++، مع توفير أغلفة كاملة لـ Python و C

الميزات الأساسية

1. قدرات بحث عالية الأداء

تمت كتابة Faiss بلغة C++، وتوفر أغلفة كاملة لـ Python و C. يتم تنفيذ بعض الخوارزميات الأكثر فائدة على وحدات معالجة الرسومات باستخدام CUDA.

2. طرق فهرسة متعددة

تجعل Faiss البحث عن أقرب جار سريعًا من خلال فهرسة المتجهات باستخدام خوارزميات معقدة (مثل تجميع k-means والكمية المنتجة).

3. قابلية التوسع

  • دعم بيانات المتجهات واسعة النطاق التي لا يمكن احتواؤها في الذاكرة
  • توفير تسريع حساب وحدة معالجة الرسومات
  • دعم المعالجة المتوازية متعددة الخيوط

4. تصميم صندوق أدوات مرن

تم تنظيم Faiss كصندوق أدوات يحتوي على طرق فهرسة متنوعة، والتي تتضمن عادةً سلسلة من المكونات (المعالجة المسبقة والضغط والبحث غير الشامل).

البنية التقنية

تحسين وحدة المعالجة المركزية (CPU)

في جانب وحدة المعالجة المركزية، تستخدم Faiss على نطاق واسع:

  • تعدد مؤشرات الترابط للاستفادة من النوى المتعددة وتنفيذ عمليات بحث متوازية على وحدات معالجة الرسومات المتعددة
  • مكتبة BLAS لإجراء حسابات المسافة الدقيقة الفعالة من خلال ضرب المصفوفة / المصفوفة

تسريع وحدة معالجة الرسومات (GPU)

  • استخدام CUDA لتنفيذ الخوارزميات الأساسية
  • دعم الحساب المتوازي متعدد وحدات معالجة الرسومات
  • مُحسَّن لبيانات المتجهات واسعة النطاق

الخوارزميات الرئيسية

1. خوارزميات البحث الدقيقة

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

2. خوارزميات البحث التقريبية

  • Product Quantization (الكمية المنتجة)
  • Locality-Sensitive Hashing (التجزئة الحساسة للموقع)
  • IVF (فهرس الملفات المعكوسة)
  • HNSW (رسم بياني صغير عالمي قابل للتصفح الهرمي)

3. خوارزميات التجميع

  • K-means Clustering (تجميع K-means)
  • Hierarchical Clustering (التجميع الهرمي)
  • Density Clustering (تجميع الكثافة)

سيناريوهات التطبيق

1. أنظمة التوصية

  • توصية المنتج
  • توصية المحتوى
  • تحليل تشابه المستخدم

2. استرجاع الصور

  • البحث عن صور متشابهة
  • التعرف على الوجه
  • إزالة تكرار الصور

3. معالجة اللغة الطبيعية

  • استرجاع تشابه المستندات
  • البحث الدلالي
  • تجميع النصوص

4. التعلم الآلي

  • البحث عن متجه الميزات
  • مقارنة تشابه النموذج
  • الكشف عن الحالات الشاذة

مزايا الأداء

1. كفاءة الذاكرة

  • دعم تعيين الذاكرة
  • هياكل فهرس مضغوطة
  • معالجة البيانات الكبيرة على شكل أجزاء

2. كفاءة الحساب

  • تحسين تعليمات SIMD
  • التوازي متعدد الخيوط
  • تسريع حساب وحدة معالجة الرسومات

3. سرعة الاستعلام

  • تعقيد زمني شبه خطي
  • هياكل فهرس فعالة
  • تخطيط بيانات مناسب لذاكرة التخزين المؤقت

التثبيت والاستخدام

طرق التثبيت

conda install -c pytorch faiss-gpu

pip install faiss-cpu

pip install faiss-gpu

مثال على الاستخدام الأساسي

import faiss
import numpy as np

dimension = 64
database_size = 10000
query_size = 100

database_vectors = np.random.random((database_size, dimension)).astype('float32')
query_vectors = np.random.random((query_size, dimension)).astype('float32')

index = faiss.IndexFlatL2(dimension)

index.add(database_vectors)

k = 5 
distances, indices = index.search(query_vectors, k)

print(f"indices: {indices.shape}")
print(f"distances: {distances.shape}")

النظام البيئي المتكامل

1. أطر التعلم العميق

  • تكامل PyTorch
  • توافق TensorFlow
  • واجهة Scikit-learn

2. قواعد بيانات المتجهات

  • تكامل LangChain
  • بديل Pinecone
  • توافق Weaviate

3. محركات البحث

  • ملحق Elasticsearch
  • تكامل Solr
  • الواجهة الخلفية للبحث المخصصة

تاريخ التطوير

بدأ فريق Facebook AI Research في تطوير Faiss في عام 2015، بناءً على نتائج الأبحاث والكثير من الجهد الهندسي. أصبح المشروع الآن أحد الأدوات القياسية في مجال البحث عن تشابه المتجهات.

المجتمع والدعم

  • GitHub: مجتمع مفتوح المصدر نشط
  • الوثائق: وثائق ودروس API كاملة
  • الأوراق البحثية: مدعومة بالعديد من الأوراق البحثية في المؤتمرات الكبرى
  • التطبيقات الصناعية: تستخدمها العديد من الشركات والمؤسسات البحثية

ملخص

Faiss هي مكتبة قوية وعالية الأداء للبحث عن تشابه المتجهات، وهي مناسبة بشكل خاص للتعامل مع بيانات المتجهات عالية الأبعاد واسعة النطاق. إن اختيارها الغني من الخوارزميات وأدائها الممتاز وسيناريوهات التطبيق الواسعة تجعلها أداة مهمة في مجالات التعلم الآلي واسترجاع المعلومات وأنظمة التوصية. سواء كان البحث الأكاديمي أو التطبيقات الصناعية، يمكن لـ Faiss توفير حلول موثوقة وفعالة.