Vector Search
يعثر البحث المتجهي على التضمينات المخزنة الأقرب إلى متجه استعلام، باستخدام بحث k-NN الدقيق أو فهارس تقريبية مثل HNSW وIVF للبحث بسرعة في ملايين العناصر.
يسترجع البحث المتجهي العناصر التي تقع تضميناتها أقرب إلى تضمين الاستعلام وفق مقياس تشابه مثل التشابه الجيبي أو الضرب النقطي أو المسافة الإقليدية. يضع نموذج التضمين العناصر المتشابهة في المعنى أو المظهر بالقرب من بعضها، لذا تكون المتجهات الأقرب هي المستندات أو الصور أو المنتجات الأكثر تشابهًا، حتى إن لم تشترك مع الاستعلام في أي كلمات مفتاحية. والبحث المتجهي الدقيق هو عملية بحث عن أقرب k من الجيران (k-NN) عبر كل متجه مخزن. وعلى نطاق واسع، تستخدم الأنظمة فهارس أقرب الجيران التقريبي (ANN) التي تقارن الاستعلام بجزء صغير من المتجهات، مع الاستمرار في إرجاع جميع الجيران الحقيقيين تقريبًا.
آلية عمل البحث المتجهي#
يُنشأ تضمين الاستعلام والعناصر المخزنة باستخدام النموذج نفسه أو زوج من النماذج دُرّب معًا: مُرمّز جمل للنصوص، أو CLIP لمطابقة النصوص بالصور، أو عمود فقري للرؤية لمطابقة الصور بالصور. وينبغي أن يتوافق المقياس مع طريقة تدريب النموذج. فبالنسبة إلى المتجهات ذات الطول الواحد، يساوي التشابه الجيبي الضرب النقطي، ويعطي الترتيب حسب المسافة الإقليدية الترتيب نفسه. وتحتاج عملية البحث الدقيق إلى مقارنة واحدة لكل متجه مخزن في كل استعلام، وهي سريعة لعشرات الآلاف من المتجهات وبطيئة جدًا لمئات الملايين، لذا تستخدم الأنظمة الكبيرة إحدى فئات فهارس ANN الأربع:
- فهارس الرسوم البيانية مثل HNSW: تربط كل متجه بجيرانه القريبين في رسم بياني متعدد الطبقات، وتجيب عن الاستعلام بالسير نحوه بطريقة جشعة.
- فهارس التجميع (IVF): تجمع المتجهات باستخدام k-means، ولا تفحص إلا العناقيد التي تكون مراكزها أقرب إلى الاستعلام.
- تكميم المتجهات: يضغط كل متجه إلى بضعة بايتات، كما في تكميم المنتج، لتقريب المسافات باستخدام رموز مدمجة محفوظة في الذاكرة.
- الرسوم البيانية المعتمدة على القرص: تحتفظ بفهرس رسم بياني على SSD، كما تفعل DiskANN، للبحث في مليارات المتجهات على جهاز واحد.
يمكن توضيح الفكرة الأساسية لفهرس IVF بمثال قصير باستخدام NumPy وscikit-learn يقارنه بالبحث الدقيق:
import numpy as np
from sklearn.cluster import KMeans
# 20,000 embeddings grouped by topic, normalized so a dot product is cosine similarity
rng = np.random.default_rng(0)
topics = rng.normal(size=(200, 64))
vectors = topics[rng.integers(200, size=20000)] + 0.5 * rng.normal(size=(20000, 64))
vectors /= np.linalg.norm(vectors, axis=1, keepdims=True)
query = vectors[0] + 0.1 * rng.normal(size=64)
# Exact search: score every stored vector
exact = np.argsort(-(vectors @ query))[:10]
# IVF index: cluster the vectors, then scan only the lists of the 5 closest centroids
kmeans = KMeans(n_clusters=100, n_init=1, random_state=0).fit(vectors)
probed = np.argsort(-(kmeans.cluster_centers_ @ query))[:5]
candidates = np.flatnonzero(np.isin(kmeans.labels_, probed))
approx = candidates[np.argsort(-(vectors[candidates] @ query))[:10]]
print(f"scanned {len(candidates) / len(vectors):.1%} of vectors")
print(f"recall@10: {len(set(exact) & set(approx)) / 10:.0%}")يؤدي فحص 5 من أصل 100 عنقود إلى مسح 5.1% من المتجهات، مع العثور على جميع أقرب 10 جيران حقيقيين، أي استدعاء@10 بنسبة 100%. ويؤدي فحص مزيد من العناقيد إلى رفع الاستدعاء والتكلفة معًا، لذا فإن عدد العناقيد التي يجري فحصها هو الإعداد الأساسي الذي ينبغي ضبطه في فهرس IVF.
البحث المتجهي والمصطلحات ذات الصلة#
- البحث بالكلمات المفتاحية: يبحث عن المصطلحات الدقيقة في فهرس معكوس ويرتبها باستخدام صيغ مثل BM25. وهو ممتاز للأسماء والرموز والكلمات النادرة، لكنه لا يعثر على المرادفات.
- البحث الدلالي: البحث بحسب المعنى، وهو الهدف الأكثر شيوعًا للبحث المتجهي. وغالبًا ما تضيف أنظمة البحث الدلالي إعادة صياغة الاستعلام أو إعادة ترتيب النتائج.
- البحث الهجين: يجري البحث بالكلمات المفتاحية والبحث المتجهي معًا، ثم يدمج القائمتين المرتبتين.
- قاعدة البيانات المتجهية: نظام يخزّن المتجهات مع البيانات الوصفية، ويوفر البحث المتجهي مع إمكانات التصفية والتحديث والاستمرارية.
تطبيقات عملية#
- التوليد المعزز بالاسترجاع (RAG): يعثر على مقاطع المستندات التي يحتاج إليها النموذج اللغوي للإجابة عن سؤال.
- إعادة التعرّف على الكائنات: تطابق تضمين مظهر شخص أو مركبة مع مشاهدات سابقة لربط الكائن نفسه عبر كاميرات مختلفة.
- التعرّف على الوجوه: يقارن تضمين الوجه بالوجوه المسجلة مسبقًا، ويقبل أقربها عندما يكون قريبًا بما يكفي.
- أنظمة التوصية: تقترح منتجات أو أغانٍ أو مقاطع فيديو تقع تضميناتها بالقرب من اختيارات المستخدم الأخيرة.
تستخدم Ultralytics Platform البحث المتجهي لتوسيع مجموعات بيانات التدريب. ويأخذ إجراء العثور على صور مشابهة صورة محددة، ويبحث عن أقرب الصور بحسب التضمين في مجموعات البيانات العامة ومجموعات المستخدم والفريق، ويعرض ما يصل إلى 24 تطابقًا مع درجات التشابه، ويمكن إضافة هذه الصور إلى مجموعة البيانات بوصفها صور تدريب غير معنونة.










