مكونات قاعدة بيانات Vector للمحرك Unreal Engine 5
يضيف هذا البرنامج المساعد نوع قاعدة بيانات متجه مبسط إلى محرك غير حقيقي ، مصمم مع وضع مخططات في الاعتبار.
تحذير: العمل قيد التقدم
لا يزال هذا في حالة مبكرة ، لذلك لا تفاجأ إذا واجهت حوادث. أقوم بعمل هذا البرنامج المساعد لنفسي لبعض المشاريع المعينة ، لكنني اعتقدت أنه سيكون من الجيد مشاركته. إذا جربتها وتجربة المشكلات ، فلا تتردد في فتح مشكلة جديدة مع أي معلومات سجل قد تكون مفيدة.
تثبيت
يتضمن هذا الريبو المشروع بأكمله (UE 5.4) أنا أستخدمه لاختبار وتطوير هذا البرنامج المساعد. لا تحتاج إلى استنساخ هذا المشروع بأكمله. لتثبيت البرنامج المساعد ، اتبع هذه الخطوات:
- قم بتنزيل مجلد Plugins/VectorSearch ووضعه في مجلد الإضافات في مشروعك (قم بإنشاء هذا إذا لم يكن موجودًا)
- في هذه المرحلة الزمنية ، يمكنك محاولة فتح المشروع. هناك فرصة ستعمل بالفعل.
- انقر بزر الماوس الأيمن على ملف .uproject الخاص بك وانقر فوق "إنشاء ملفات مشروع Visual Studio"
- افتح حل المشروع (ملف .sln) وقم بإنشاء المشروع ، تأكد من عدم وجود أخطاء في التجميع
- إذا واجهت أي مشكلات في التجميع ، فيرجى نشر سجل البناء في علامة التبويب "المشكلات"
- افتح مشروعك وابحث عن "قاعدة بيانات المتجهات" في رسم بياني مخطط لمشاهدة الوظائف المتاحة
يفترض دليل التثبيت هذا أن لديك مشروع C ++ ، حيث لم أتمكن من اختبار تجميع هذا البرنامج المساعد في مشروع مخطط. إذا كان لديك مشروع مخطط ، فيمكنك إنشاء مشروع C ++ الفارغ والسرعة والقيام بالتجميع هناك ، أعتقد أن النسخ/لصق من هذا المشروع سيعمل.
كيف تعمل؟
- باستخدام عقدة "إنشاء قاعدة بيانات متجه جديدة" ، يمكنك تهيئة قاعدة بيانات متجه جديدة ثم حفظ مرجع إليها كمتغير.
- باستخدام هذا الكائن كهدف ، يمكنك استخدام العقد "إضافة إدخال إلى قاعدة بيانات المتجه" لإضافة إدخال (ومجموعة المتجه المقابلة له من العوامات) لأي نوع من أنواع البيانات (المكون الإضافي يدعم حاليًا السلسلة والكائن ، وإنشاءات الهياكل- يمكن أن تحتوي على أكثر أنواع المتغيرات ، ومع ذلك ، فإن إدخالات السلسلة والكائنات موجودة حقًا في بعض حالات الاستخدام فقط)
- لاسترداد الإدخالات من قاعدة البيانات ، يمكنك استخدام العقد "الحصول على Top N Matches". هذه تأخذ في كائن قاعدة بيانات المتجه ، ومتجه (صفيف من العوامات) ، وقيمة 'n' (مقدار المطابقات للعودة). ثم تحسب هذه العقد إدخالات أعلى N في قاعدة البيانات ، استنادًا إلى مسافة متجه كل إدخال من متجه الإدخال.
- يحتوي "Get Top N structs" على إخراج بطاقة البرية ، لإرجاع البنية منه ، قم بتوصيل مجموعة متغيرة أو خاسرة للهيكل لكل حلقة ، ثم قم بتوصيل كل إدخال صفيف حلقة بـ "الحصول على Top N Struct Matches" الإخراج البري-يجب تحديث نوع الدبوس تلقائيًا.
- هناك أيضًا "Get Top N Matches Dondale Nats" والذي سيعود إلى البنية التي تحتوي على متجه كل إدخال تم العثور عليه ، والمسافة ، وبعد ذلك كائن غلاف حيث يمكن أن تحصل على قيمته من وظائف نقية مزود (باستثناء الهياكل ، التي لها وظيفة نجسة تأخذ في بنية الإخراج بأكملها كمدخلات)
- ستنظر جميع وظائف "Get Top N Matches" فقط في إدخالات قاعدة بيانات المتجهات مع متجه يطابق أبعاد متجه الإدخال ، ومع وجود أنواع الإدخال التي تتطابق مع نوع العقدة. وذلك لأن قواعد بيانات المتجهات هي نوع البيانات غير الملحوظ- يمكنك وضع أي رقم أو مجموعة من الأوتار أو الكائنات أو الهياكل في قاعدة بيانات (مع ناقلات ذات أبعاد مختلفة أيضًا ، إذا كنت ترغب في ذلك) ، وسوف تعمل- لأن وظائف الحصول على مراعاة فقط ذات صلة (بمعنى إذا كنت تمر في مسافة 700 درجة ، فإن أي مدخلات مع مرتبة مختلفة. هناك عقوبة طفيفة على القيام بذلك ، حيث لا تزال وظائف Getter بحاجة إلى التكرار على كل إدخال في الصفيف ، بغض النظر عما إذا كنت تريد التفكير فيها أم لا.
- لإزالة الإدخالات من قاعدة بيانات ، يمكنك استخدام عقدة "إزالة الإدخال من قاعدة بيانات Vector" التي تأخذ في متجه الإدخال وتزيل أي تطابقات. إذا تم تعيين Bremoveallocurences على صحيح. ثم ستتم إزالة أي إدخال مع متجه مطابق. هناك أيضًا إدخال "RemovalRange" ، والذي إذا تم تعيينه على أي شيء أعلى من 0 ، سيقوم بإزالة أي مطابقات داخل (أو AT) التي تُعطى المسافة من متجه الإدخال.
- بالإضافة إلى ذلك ، توجد عقد نقية للحصول على عدد الإدخال في قاعدة البيانات (بالإضافة إلى العقد المنفصلة للحصول على عدد إدخال السلسلة ، وعدد إدخال الكائن ، وعدد الإدخال الهيكلي).
توليد المتجهات
حاليًا ، يحتوي هذا المكون الإضافي على وظيفة مخطط "إنشاء OpenaIne" ، بالإضافة إلى هيكل يحتوي على نقطة نهاية API ، ونموذج ، ومفتاح API ، ويقوم بطلب API إلى نقطة النهاية المحددة (باتباع تنسيق API Openai) وإرجاع النتيجة كصفة من العوامات الجاهزة للاستخدام في قاعدة بيانات ناقل.