THELOITYSEARCH.JL هي مكتبة لأقرب بحث الجار. على وجه الخصوص ، يحتوي على تنفيذ SearchGraph, وهو مؤشر بحث سريع ومرن باستخدام أي وظيفة متري. وهي مصممة لدعم Multihreading في معظم وظائفها وهياكلها.
توفر الحزمة الفهارس التالية:
ParallelExhaustiveSearch : فهرس البحث في القوة الغاشمة حيث يتم حل كل استعلام باستخدام جميع مؤشرات الترابط المتاحة.ExhaustiveSearch : فهرس بحث القوة الغاشمة ، يتم حل كل استعلام باستخدام مؤشر ترابط واحد.SearchGraph : مؤشر بحث تقريبي مع بناء متوازي.المجموعة الرئيسية من الوظائف هي:
search : يحل استعلام واحد.searchbatch : يحل مجموعة من الاستعلامات.allknn : يحسب neardup : يزيل duplicates شبه من مجموعة بيانات متري.closestpair : يحسب أقرب زوج في مجموعة بيانات متري.يمكن العثور على التعريفات الدقيقة لهذه الوظائف والمجموعة الكاملة من الوظائف والهياكل في الوثائق.
حاليًا ، توجد عدة حزم مخصصة لأقرب بحث جار ، على سبيل المثال ، لدينا NearestNeighbors.jl jl ، RegionTrees.jl ، و JuliaNeighbors تنفذ هياكل بحث مثل أشجار KD ، وأشجار الكرة ، و Quadtrees ، و Octrees ، و BK Trees ، و VP-Tree وغيرها من الأبعاد المتعددة. تعمل هذه الهياكل بشكل جيد للغاية بالنسبة للبيانات ذات الأبعاد المنخفضة نظرًا لأنها مصممة لحل استعلامات التشابه الدقيقة.
توجد عدة حزم تؤدي بحثًا تقريبيًا للتشابه ، مثل Rayuela.jl باستخدام مخططات تقدير كمية المنتج ، Wrapper لـ FAISS Library Faiss.jl . توفر مكتبة FAISS تطبيقات عالية الأداء لمخططات تقدير المنتج ومخططات التجزئة الحساسة للمنطقة ، إلى جانب تنفيذ القوة الصناعية لمؤشر HNSW . NearestNeighborDescent.jl تنفذ خوارزمية البحث وراء pynndescent .
تحاول حزمة SimilaritySearch.jl jl إثراء النظام الإيكولوجي مع هياكل البحث والخوارزميات المصممة للاستفادة من أنظمة الرئاسة المتعددة وميزة الفريدة التلقائية التي تبسط استخدامها للممارسين. يتم تنفيذ هذه الميزات بإيجاز وكفاءة بسبب ديناميكية لغة برمجة جوليا. فيما يتعلق بخصائص الأداء ، يتم تقليل أوقات البناء بشكل كبير مقارنةً بالمناهج المماثلة دون تقليل أداء البحث أو جودة النتيجة.
يمكنك تثبيت الحزمة على النحو التالي
] add SimilaritySearch . jlأيضًا ، يمكنك تشغيل مجموعة الاختبارات على النحو التالي
] test SimilaritySearchيرجى الاطلاع على الأمثلة. ستجد قائمة من أجهزة الكمبيوتر المحمولة Jupyter و Pluto ، وبعض البرامج النصية التي تجسد استخدامها.
المساهمات موضع ترحيب. يرجى ملء طلب سحب لتوثيق مساهمات التنفيذ. للحصول على المشكلات ، يرجى ملء مشكلة بالمعلومات اللازمة (انظر أدناه). إذا كان لديك بالفعل حل ، فيرجى تقديم طلب سحب أيضًا.
الإبلاغ عن مشكلات في الحزمة مما يوفر مثالًا قابلاً للتكرار. إذا كانت المشكلة تعتمد على البيانات ، فالرجاء عدم نسيان تقديم البيانات اللازمة لإعادة إنتاجها.
SearchGraph هيكل البحث الرئيسي ، SearchGraph, هو رسم بياني له عدة خصائص ، وكثير منها يسببها مجموعة البيانات التي يتم فهرستها. ترتبط بعض القيود المعروفة بهذه الخصائص. على سبيل المثال:
تصف المخطوطة التالية ويمعنى عن مؤشر SearchGraph (إصدار الحزمة 0.6 ):
@article{tellezscalable,
title={A scalable solution to the nearest neighbor search problem through local-search methods on neighbor graphs},
author={Tellez, Eric S and Ruiz, Guillermo and Chavez, Edgar and Graff, Mario},
journal={Pattern Analysis and Applications},
pages={1--15},
publisher={Springer}
}
يتم وصف الخوارزمية الحالية (الإصدار 0.8 و 0.9 ) وترويجي في المخطوطة التالية:
@misc{tellez2022similarity,
title={Similarity search on neighbor's graphs with automatic Pareto optimal performance and minimum expected quality setups based on hyperparameter optimization},
author={Eric S. Tellez and Guillermo Ruiz},
year={2022},
eprint={2201.07917},
archivePrefix={arXiv},
primaryClass={cs.IR}
}
تم وصف هذه الحزمة أيضًا في ورقة جوس:
إريك س. تيليز وغيليرمو رويز.
SimilaritySearch.jl: أقرب فهارس جار مجاورة تلقائيًا لجوليا . Journal of Open Source Software https://doi.org/10.21105/joss.04442.
خوارزميات هذا الإصدار هي نفسها V0.8 ولكن كسر توافق API:
Polyester للتعامل مع multithreading بدلاً من المواضيع.@Threadsallknn الآن على المراجع الذاتية لتبسيط الخوارزميات وتحسين الكفاءة ( allknn في V0.8 يزيل المراجع الذاتية تلقائيًا)آحرون:
SearchGraphtimedsearchbatch يجعل من السهل ضبط بنية SearchGraph على أعباء وتطبيقات العمل المختلفة. على سبيل المثال،
يرجى الرجوع إلى https://github.com/sadit/similaritysearchdemos و https://github.com/sadit/similaritysearch.jl/blob/main/test/testsearchgraph.jl لأمثلة العمل.
يقدم إعادة إنشاء كبيرة. على وجه الخصوص ، فإنه يجعل استخدام كائنات السياق الصريحة لمعظم الوظائف. كما يقدم إجراءات تسجيل بسيطة. ومع ذلك ، فإننا نحافظ على التوافق في العديد من الوظائف العامة باستخدام الاستخدام الضمني لكائنات السياق الافتراضية.