FAISS هي مكتبة للبحث الفعال في التشابه وتجميع المتجهات الكثيفة. أنه يحتوي على خوارزميات تبحث في مجموعات من المتجهات من أي حجم ، حتى تلك التي ربما لا تتناسب مع ذاكرة الوصول العشوائي. كما أنه يحتوي على رمز دعم للتقييم وضبط المعلمات. تتم كتابة FAISS في C ++ مع أغلفة كاملة للبيثون/numpy. يتم تنفيذ بعض الخوارزميات الأكثر فائدة على وحدة معالجة الرسومات. تم تطويره في المقام الأول في مجموعة أبحاث Meta الأساسية.
انظر changelog.md للحصول على معلومات مفصلة حول أحدث الميزات.
يحتوي FAISS على عدة طرق للبحث عن التشابه. يفترض أن الحالات يتم تمثيلها كمتجهات ويتم تحديدها بواسطة عدد صحيح ، وأنه يمكن مقارنة المتجهات بمسافات L2 (إقليدية) أو منتجات DOT. المتجهات التي تشبه متجه الاستعلام هي تلك التي لديها أدنى مسافة L2 أو أعلى منتج DOT مع متجه الاستعلام. كما أنه يدعم تشابه جيب التمام ، لأن هذا منتج DOT على المتجهات الطبيعية.
بعض الطرق ، مثل تلك التي تعتمد على المتجهات الثنائية ورموز القياس الكمي المدمجة ، تستخدم فقط تمثيل مضغوط للناقلات ولا تتطلب الاحتفاظ بالمتجهات الأصلية. يأتي هذا عمومًا على حساب البحث الأقل دقة ، لكن هذه الطرق يمكن أن تتوسع إلى مليارات المتجهات في الذاكرة الرئيسية على خادم واحد. طرق أخرى ، مثل HNSW و NSG تضيف بنية فهرسة أعلى المتجهات الخام لجعل البحث أكثر كفاءة.
يمكن أن يقبل تطبيق GPU المدخلات من وحدة المعالجة المركزية أو ذاكرة GPU. على خادم مع وحدات معالجة الرسومات ، يمكن استخدام فهارس GPU بديلاً إسقاطًا لمؤشرات وحدة المعالجة المركزية (على سبيل المثال ، استبدال IndexFlatL2
بـ GpuIndexFlatL2
) ويتم معالجة نسخ من/من ذاكرة GPU تلقائيًا. ستكون النتائج أسرع ولكن إذا بقي كل من المدخلات والمخرجات مقيمين في وحدة معالجة الرسومات. يتم دعم كل من الاستخدام الفردي والمتعدد GPU.
يأتي Faiss مع مكتبات مسبقة لـ Anaconda في Python ، انظر Faiss-CPU و Faiss-GPU. يتم تنفيذ المكتبة في الغالب في C ++ ، التبعية الوحيدة هي تطبيق Blas. يتم توفير دعم GPU الاختياري عبر CUDA أو AMD ROCM ، وواجهة بيثون اختيارية أيضًا. يجمع مع cmake. انظر install.md للحصول على التفاصيل.
تم بناء FAISS حول نوع فهرس يخزن مجموعة من المتجهات ، ويوفر وظيفة للبحث فيها بمقارنة متجه المنتج L2 و/أو DOT. بعض أنواع الفهرس هي خطوط أساسية بسيطة ، مثل البحث الدقيق. تتوافق معظم هياكل الفهرسة المتاحة مع مختلف المقايضات فيما يتعلق
يوفر تطبيق GPU الاختياري ما هو محتمل (اعتبارًا من مارس 2017) أسرع تطبيق بحث جار (اعتبارًا من مارس 2017) ، وأسرع أسرع من خوارزمية K-Means الصغيرة المعروفة. يتم تفصيل التنفيذ هنا.
فيما يلي نقاط دخول للوثائق:
المؤلفون الرئيسيون لفايس هم:
الإشارات إلى الاستشهاد عند استخدام FAISS في ورقة بحثية:
@article{douze2024faiss,
title={The Faiss library},
author={Matthijs Douze and Alexandr Guzhva and Chengqi Deng and Jeff Johnson and Gergely Szilvasy and Pierre-Emmanuel Mazaré and Maria Lomeli and Lucas Hosseini and Hervé Jégou},
year={2024},
eprint={2401.08281},
archivePrefix={arXiv},
primaryClass={cs.LG}
}
للحصول على إصدار GPU من Faiss ، يرجى الاستشهاد:
@article{johnson2019billion,
title={Billion-scale similarity search with {GPUs}},
author={Johnson, Jeff and Douze, Matthijs and J{'e}gou, Herv{'e}},
journal={IEEE Transactions on Big Data},
volume={7},
number={3},
pages={535--547},
year={2019},
publisher={IEEE}
}
للمناقشة العامة حول Faiss أو للأسئلة ، هناك مجموعة Facebook على https://www.facebook.com/groups/faissusers/
نراقب صفحة المشكلات في المستودع. يمكنك الإبلاغ عن الأخطاء ، وطرح الأسئلة ، إلخ.
FAISS مرخص له معهد ماساتشوستس للتكنولوجيا ، راجع ملف الترخيص في الدليل الأعلى.
حقوق الطبع والنشر © Meta Platforms ، Inc.