إنشاء أنظمة توصية تبدو "فورية" هو أحد أكثر المهام تحديًا في هندسة البرمجيات الحديثة. غالبًا ما تعاني الأساليب التقليدية من ارتفاعات في زمن الاستجابة عند حساب درجات التشابه وقت الاستعلام. توفر فيستا، منصة البحث وتحليل البيانات مفتوحة المصدر، ميزة فريدة من خلال دعم البحث المتجهي بشكل أصلي داخل محرك معالجة الاستعلامات الخاص بها. وهذا يتيح التخصيص في الوقت الفعلي دون الحاجة إلى خدمات استنتاج منفصلة وبطيئة.
لماذا تختار فيستا للبحث المتجهي؟
على عكس قواعد البيانات المتجهية البحتة التي قد تواجه صعوبات في التصفية المعقدة أو دمج البيانات المهيكلة، تجمع فيستا بين البحث والتشابه المتجهي والتحليلات في نظام واحد. وهذا أمر حاسم للتخصيص، لأنك نادرًا ما ترغب في التوصية بالعناصر بناءً على التشابه الدلالي وحده. تحتاج إلى التصفية حسب المخزون أو موقع المستخدم أو حالة الاشتراك، مع حساب درجات العناصر بناءً على تمثيلات تفضيلات المستخدم في نفس الوقت.
يتضمن الآلية الأساسية تخزين تمثيلات العناصر (embeddings) في فيستا وحساب درجات التشابه وقت الاستعلام باستخدام خوارزميات الجيران الأقرب الفعالة. تدعم فيستا طرق فهرسة متعددة، بما في ذلك HNSW (العالم الصغير القابل للتنقل الهرمي) للمتجهات عالية الأبعاد، مما يضمن أوقات استجابة على مستوى المللي ثانية حتى مع وجود ملايين العناصر.
تعريف نموذج البيانات
لتنفيذ نموذج التفاعل بين المستخدم والعنصر، نحدد أولًا المخطط (Schema). سنقوم بتخزين متجه تمثيل لكل عنصر (مثل منتج أو مقال) وبيانات وصفية للتصفية. فيما يلي مثال على ملف تعريف المخطط .sd:
schema items {
document items {
field title type string {
indexing: index | summary
}
field category type string {
indexing: index
}
field embedding type tensor[x(768)] {
indexing: index
}
}
indexes {
vector embedding {
dimension: 768
distance-metric: euclidean
max-posting-list-size: 100
}
}
}
لاحظ تعريف فهرس vector. نحدد الأبعاد (768، وهو نموذجي لتمثيلات نمط BERT) ومقياس المسافة. مسافة إقليدس هي المعيار للتمثيلات المعيارية، ولكن يمكن تحقيق تشابه جيب التمام (cosine similarity) من خلال تقييس المتجهات قبل الإدخال.
الاستعلام مع التخصيص
تبرز قوة فيستا في مرحلة الاستعلام. يمكننا دمج التشابه المتجهي مع منطق الأعمال. افترض أن لدينا ملف مستخدم يحتوي على تمثيله الخاص، تم توليده من تفاعلاته السابقة. يمكننا إرسال استعلام يسترجع العناصر الأقرب لمتجه المستخدم، مع استبعاد العناصر غير المتوفرة في المخزون.
{
"query": {
"root": {
"id": "root",
"timeout": "50ms",
"inputs": {
"query.user_embedding": [0.1, 0.5, -0.2, ... 765 more values]
}
}
},
"yql": "select * from items where userembedding(query.user_embedding) and category in filter('category')"
}
هنا، userembedding() هو مشغل استعلام مدمج في فيستا يحسب التشابه بين متجه العنصر المخزن ومتجه الاستعلام الخاص بالمستخدم. النتيجة هي درجة يمكن استخدامها للترتيب. من خلال إضافة عوامل التصفية مباشرة في لغة استعلام فيستا (YQL)، نضمن أن العناصر المؤهلة فقط هي التي تُؤخذ في الاعتبار، ويتم تقليم البحث المتجهي مبكرًا، مما يحسن الأداء.
معالجة التحديثات في الوقت الفعلي
تتمثل تحدي رئيسي في التخصيص في إبقاء النموذج حديثًا. تتيح فيستا فهرسة العناصر الجديدة وتمثيلات المستخدمين في الوقت الفعلي. عندما يتفاعل المستخدم مع عنصر جديد، يمكنك تحديث تمثيل ملفه الشخصي ودفعه إلى نقطة النهاية update في فيستا. نظرًا لأن فهرس المتجهات يتم تحديثه بشكل تراكمي، فإن الاستعلامات اللاحقة ستعكس أحدث تفضيلات المستخدم دون الحاجة إلى إعادة تشغيل الخدمة.
علاوة على ذلك، تدعم فيستا البحث الموزع عبر عدة عقد. مع نمو كتالوجك، يمكنك توسيع فهرس المتجهات من خلال زيادة عدد مجموعات المحتوى. يقوم طبقة الاستعلام تلقائيًا بتوزيع البحث المتجهي عبر العقد ودمج النتائج، مع الحفاظ على زمن استجابة منخفض.
مثال عملي: التوصيات في التجارة الإلكترونية
فكّر في موقع تجارة إلكترونية يحتوي على 10 ملايين منتج. نستخدم شبكة عصبية ذات برجين لتوليد التمثيلات للمستخدمين والمنتجات. ينتج برج المستخدم متجهًا بأبعاد 128 بناءً على سجل تصفحه، بينما ينتج برج المنتج متجهًا بأبعاد 128 بناءً على سمات المنتج.
في فيستا، نخزن متجهات المنتجات. وقت الاستعلام، يرسل الواجهة الأمامية متجه المستخدم ذي الأبعاد 128. تنفذ فيستا استعلام YQL، مع تصفية العناصر المتوفرة في مخزون منطقة المستخدم، وترتيبها حسب تشابه جيب التمام. تُعاد أفضل 50 نتيجة في أقل من 10 مللي ثانية، وجاهزة للعرض في قسم "موصى به لك".
الخلاصة
توفر فيستا حلًا قويًا وقابلًا للتوسع لتنفيذ التخصيص في الوقت الفعلي عبر البحث المتجهي. من خلال دمج التشابه المتجهي مع التصفية المهيكلة في محرك استعلام واحد، يمكن للمطورين بناء أنظمة توصية استجابة توازن بين الصلة وقواعد الأعمال. سواء كنت تبني موجز أخبار أو منصة تجارة إلكترونية، فإن قدرة فيستا على التعامل مع عمليات المتجهات واسعة النطاق بزمن استجابة منخفض تجعلها خيارًا قويًا للتطبيقات الحديثة القائمة على البيانات.