اتبع الخطوات التالية لإعداد المشروع وتشغيله:
قم بتثبيت PostgreSQL
admin
.تكوين المشروع
config
في دليل المشروع.db.js
وقم بتحديث السطر 3:mayanksharma
إلى اسم مستخدم النظام الخاص بك.قم بإعداد قاعدة البيانات
CREATE EXTENSION vector;
قم بتثبيت أولاما
ollama pull snowflake-arctic-embed
تثبيت تبعيات المشروع
npm install
node server.js
قم بتثبيت ملحق عميل REST
اختبر واجهة برمجة التطبيقات
api.http
لاختبار نقاط نهاية API. {
"query" : " your_search_query "
}
{
"title" : " magazine_title " ,
"author" : " author_name " ,
"category" : " magazine_category " ,
"content" : " magazine_content "
}
لقد استخدمت PostgreSQL مع pgvector (لتخزين ناقلات التضمين) وtsvector (لتخزين نص المحتوى).
المتطلبات: البحث من بين مليون سجل
تمت إضافة فهارس هرمية للعوالم الصغيرة القابلة للملاحة (HNSW) للبحث المتجه في تضمينات المحتوى السبب: يتطلب البحث استدعاءً عاليًا، مما يجعل hnsw أفضل من مرجع ivfflat
تمت إضافة فهارس للعنوان والمؤلف والمحتوى
تمت إضافة ترقيم الصفحات لتقليل أوقات التحميل
الملف الشخصي: الذروة
المستخدمون الافتراضيون: 20
مدة الاختبار: 5 دقائق
نتيجة نقطة النهاية: POST /api/v1/magazine/hybridsearch/1 ("glasgow"، و"game"، و"business"، و"shubham"، و"food"، و"modern")
إجمالي الطلبات المرسلة: 10,915
الطلب في الثانية: 35.62
متوسط وقت الاستجابة: 116 مللي ثانية
يتم استخدام خدمتين فرديتين للبحث عن النص والبحث عن المتجهات
يتم إنشاء التضمينات بواسطة نموذج Meta llama "snowflake-arctic-embed"، كونه خفيف الوزن.
الخطوة 1: يتم عرض الكائنات الشائعة من نتائج بحث المتجهات والنص الكامل أولاً،
الخطوة 2: متبوعة بالكائنات من البحث عن النص فقط،
الخطوة 3: باقي الكائنات من بحث المتجهات.
استعلام: المتجه "glasgow"، إرجاع "Celtic Feast Journal" التي تحتوي على "اسكتلندا مكتوبة في المحتوى"
استعلام: المتجه "shortbread"، يُرجع "Celtic Feast Journal" لأن "shortbread" مرتبط بـ "Scotland"
استعلام: الكلمة الأساسية/النص الكامل "shubham"، يُرجع "Physics Refresher" الذي يحمل اسم المؤلف "Shubham Thorve"
استعلام: الكلمة الأساسية/النص الكامل "mayank"، يُرجع "Digit Gaming" الذي يحمل اسم المؤلف "Mayank Khurana"
استعلام: الكلمة الأساسية/النص الكامل "الشهر"، يُرجع "Dalal Street Journal" الذي يحتوي على محتوى "كل شيء عن ألعاب الفيديو هذا الشهر"
/model