في المشهد سريع التطور للذكاء الاصطناعي واسترجاع البيانات، أصبح الاعتماد على تضمينات المتجهات فقط عائقاً أمام العديد من المطورين. بينما يتفوق البحث الدلالي في التقاط المعنى وراء الاستعلام، فإنه غالباً ما يواجه صعوبات مع الكلمات المفتاحية المحددة، أو أسماء العلامات التجارية، أو المصطلحات التقنية. هنا تبرز قوة Weaviate، حيث يقدم حلاً قوياً من خلال وظيفته للبحث الهجين. من خلال دمج أفضل ما في العالمين — تشابه المتجهات ومطابقة الكلمات المفتاحية — يمكن للمطورين تحقيق دقة استرجاع أعلى بكثير.
لماذا يهم البحث الهجين
لفهم قيمة هذا النهج، يجب علينا أولاً إدراك قيود البحث القائم على المتجهات فقط. تقوم قواعد بيانات المتجهات التقليدية بتحويل النص إلى مصفوفات عالية الأبعاد. إذا قام مستخدم بالبحث عن "iPhone 15 Pro Max"، فقد يواجه النظام القائم على المتجهات صعوبة إذا لم يرَ هذا التسلسل الدقيق أثناء التدريب، مما قد يؤدي إلى إرجاع نتائج عامة حول الهواتف الذكية بدلاً من الجهاز المحدد. في المقابل، يتعامل البحث القائم على الكلمات المفتاحية (مثل BM25) مع المطابقات الدقيقة بشكل مثالي، لكنه يفشل في فهم المرادفات أو النية.
يحل البحث الهجين في Weaviate هذه المشكلة من خلال دمج آليتين للتقييم:
- البحث الدلالي: يستخدم تضمينات المتجهات لإيجاد العناصر المشابهة مفهوماً.
- البحث بالكلمات المفتاحية: يستخدم خوارزميات الفهرس المقلوب (مشابهة لـ Elasticsearch) لإيجاد المطابقات الدقيقة للمصطلحات.
ثم يتم تطبيع هذه الدرجات ودمجها باستخدام متوسط مرجح، مما يتيح لك ضبط التوازن بين الفهم الدلالي والدقة في الكلمات المفتاحية.
تطبيق البحث الهجين في Weaviate
يعد تطبيق البحث الهجين أمراً بسيطاً، بفضل عميلي Python وJavaScript في Weaviate. فيما يلي مثال عملي باستخدام Python. المفتاح هنا هو المعلمة hybrid داخل طرق with_near_text أو طرق البحث الهجين المباشرة.
import weaviate
# الاتصال بنسخة Weaviate الخاصة بك
client = weaviate.Client(url="http://localhost:8080")
# تعريف الفئة (تأكد من أن الخاصية 'content' مهيأة للبحث النصي)
class_name = "Article"
# استعلام البحث الهجين
query = "Weaviate vector database hybrid search features"
# تنفيذ البحث الهجين بوزن 0.5 للدلالي و0.5 للكلمات المفتاحية
result = (
client.query
.get(class_name, ["title", "content", "score"])
.with_hybrid(
query=query,
vector=[0.1, 0.2, 0.3], # اختياري: متجه محدد إذا كنت تستخدم cross-encoder
alpha=0.5, # الوزن للبحث الهجين (0 = كلمات مفتاحية فقط، 1 = متجهات فقط)
limit=10
)
.do()
)
# فحص النتائج
print(result)
في مقتطف الكود أعلاه، تعد المعلمة alpha حاسمة. تعيين alpha=0.5 يمنح وزناً متساوياً لكل من درجة المتجه الدلالي ودرجة الكلمات المفتاحية BM25. يمكنك ضبط هذه القيمة بناءً على حالة الاستخدام المحددة الخاصة بك. على سبيل المثال، في نظام استرجاع المستندات القانونية، قد تفضل وزناً أعلى لـ alpha لإعطاء الأولوية للمصطلحات القانونية الدقيقة، بينما قد يفضل مساعد الكتابة الإبداعية وزناً أقل لـ alpha لالتقاط الموضوعات المفاهيمية الأوسع.
حالات الاستخدام العملية والفوائد
تفتح مرونة البحث الهجين آفاقاً عديدة لمطوري التطبيقات. فيما يلي حالتان شائعتان يضيف فيها نهج Weaviate قيمة مميزة:
1. بحث المنتجات في التجارة الإلكترونية
فكر في مستخدم يبحث عن "Nike Air Max 90". قد يعيد البحث الدلالي الخالص أحذية رياضية حمراء أخرى إذا كان التضمين متحيزاً نحو اللون. ومع ذلك، يضمن البحث الهجين أن "Nike" و"Air Max" و"90" تُعامل ككلمات مفتاحية حاسمة، مع السماح لا يزال بالتباينات الدلالية مثل "أحذية الجري الكلاسيكية" إذا كانت الكلمات المفتاحية غير دقيقة قليلاً.
2. الوثائق التقنية
عند البحث في وثائق واجهة برمجة التطبيقات (API)، فإن أسماء الوظائف المحددة مثل get_user_data() ليست غنية دلاليًا ولكنها دقيقة لغوياً. يضمن البحث الهجين استرجاع هذه المعرفات التقنية على الفور، مع السماح لا يزال بالاستعلامات باللغة الطبيعية مثل "كيفية جلب معلومات المستخدم" لإيجاد كتل الوثائق ذات الصلة.
الخاتمة
لا يعد البحث الهجين في Weaviate مجرد ميزة؛ بل هو تحول جوهري في طريقة تعاملنا مع استرجاع البيانات في عصر نماذج اللغات الكبيرة (LLMs) والفهم الدلالي. من خلال السماح للمطورين بضبط التوازن بين المعنى والدقة، يمكّن Weaviate التطبيقات من تقديم تجارب بحث ذكية ودقيقة. بالنسبة للمطورين من المستوى المتوسط والمتقدم الذين يتطلعون إلى بناء تطبيقات ذكاء اصطناعي جاهزة للإنتاج، فإن إتقان هذهCapability أمر أساسي لإنشاء محركات بحث قوية وسهلة الاستخدام.