ColBERT
يمثل ColBERT الاستعلامات والمستندات على هيئة تضمينات BERT لكل رمز، ويقيّمها عبر التفاعل المتأخر (MaxSim) لإجراء بحث سريع ودقيق والاسترجاع المعزز بالتوليد (RAG).
ColBERT (التفاعل المتأخر السياقي عبر BERT) هو نموذج استرجاع عصبي يمثّل الاستعلام وكل مستند بتضمين واحد لكل رمز وتضمين، ويقيّم المستند بالتفاعل المتأخر: يعثر كل رمز في الاستعلام على أكثر رموز المستند تشابهًا معه، ثم تُجمع أوجه التشابه القصوى هذه، المسماة MaxSim، لتكوين درجة الصلة. قدّمه عمر خطاب وماتي زاهاريا من جامعة ستانفورد في ورقة SIGIR لعام 2020 بعنوان ColBERT: البحث الفعّال والكفء عن المقاطع عبر التفاعل المتأخر السياقي باستخدام BERT. تُحسب تضمينات رموز المستند مرة واحدة دون اتصال، لذا تقتصر المعالجة عند الاستعلام على حساب تشابه منخفض التكلفة بدلًا من تمرير كل مستند مرشح عبر BERT بالكامل.
موضع التفاعل المتأخر#
تختلف أنظمة الاسترجاع العصبية في توقيت التقاء الاستعلام والمستند. تضغط المشفرات الثنائية كل نص في متجه واحد، وهو الإعداد المعتاد لـالبحث المتجهي: تُحسب متجهات المستندات مسبقًا ويكون البحث سريعًا، لكن متجهًا واحدًا يطمس الفروق بين المصطلحات الفردية. أما المشفرات المتقاطعة فتمرر الاستعلام والمستند معًا عبر محوّل، بحيث يقارن الانتباه كل زوج من الرموز. وهي الأعلى دقة، ويجب تشغيلها مرة لكل زوج من استعلام ومستند، مما يقصر استخدامها على إعادة ترتيب قوائم المرشحين القصيرة.
يشفّر ColBERT الاستعلام والمستند كلًّا على حدة، كما يفعل المشفّر الثنائي، لكنه يحتفظ بمتجه ذي 128 بُعدًا لكل رمز، ولا يجعل الجانبين يتفاعلان إلا في خطوة MaxSim النهائية. تُستكمل الاستعلامات برمز القناع الخاص بـBERT حتى طول ثابت يبلغ 32، ما يمنح النموذج خانات إضافية لتوسيع الاستعلام بمصطلحات ذات صلة. وفي معياري البحث عن المقاطع MS MARCO وTREC CAR، نافس ColBERT أدوات الترتيب القائمة على BERT، مع سرعة أعلى بمقدار رتبتين عشريتين واستخدام عدد عمليات فاصلة عائمة أقل بأربع رتب عشريتين لكل استعلام.
حساب درجة MaxSim#
يتطلب عامل MaxSim بضعة أسطر من PyTorch. يطبّق هذا المثال العامل على تضمينات رموز سياقية من مشفّر صغير من عائلة BERT:
import torch.nn.functional as F
from sentence_transformers import SentenceTransformer
encoder = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")
query = "who wrote the novel Dune"
docs = [
"Frank Herbert published the science fiction novel Dune in 1965.",
"A dune is a hill of sand shaped by the wind.",
]
# One L2-normalized contextual embedding per query token
q = F.normalize(encoder.encode(query, output_value="token_embeddings"), dim=-1)
for doc in docs:
d = F.normalize(encoder.encode(doc, output_value="token_embeddings"), dim=-1)
# MaxSim: each query token keeps its best-matching document token, and the maxima are summed
score = (q @ d.T).max(dim=1).values.sum()
print(f"{score.item():.2f} {doc}")حصل المقطع الروائي على درجة 5.90، ومقطع الكثبان الرملية على 4.33. يحتوي كلاهما على كلمة "dune"، التي تتطابق بقوة في كل منهما، لكن رمز الاستعلام "wrote" في المقطع الأول يجد "published" بدرجة تشابه جيب التمام تبلغ 0.72، كما يجد "novel" مطابقه، بينما لا تتجاوز أفضل مطابقة لـ"wrote" في المقطع الثاني 0.29.
ColBERT مقارنةً بالمصطلحات ذات الصلة#
- BERT نفسه: المشفّر المدرّب مسبقًا الذي يضبطه ColBERT ضبطًا دقيقًا للاسترجاع، مع إضافة طبقة خطية تسقط كل رمز إلى 128 بُعدًا.
- التقسيم المتأخر: يشفّر النص أيضًا ضمن سياقه قبل تقسيمه، ثم يحسب متوسط الرموز لإنتاج متجه واحد لكل مقطع، بينما يحتفظ ColBERT بمتجه كل رمز.
- البحث الدلالي: المهمة التي ينفذها ColBERT، وهي ترتيب المقاطع حسب المعنى بدلًا من الكلمات المفتاحية المشتركة.
- البحث الهجين: يدمج نتائج الكلمات المفتاحية والمتجهات المفردة للجمع بين مطابقة المصطلحات الدقيقة والمعنى. تلتقط المطابقة على مستوى الرموز في ColBERT جزءًا من هذه الدقة ضمن نموذج عصبي واحد.
التفاعل المتأخر مع الصور#
يعمل التفاعل المتأخر أيضًا مع الصور. يضمّن ColPali (2024) لقطة شاشة لكل صفحة مستند على هيئة شبكة من متجهات الرقع باستخدام نموذج رؤية ولغة، ويقيّمها مقابل رموز الاستعلام باستخدام MaxSim، ناقلًا التفاعل المتأخر إلى التوليد المعزز بالاسترجاع متعدد الوسائط فوق ملفات PDF. ويحافظ الكشف عن المفردات المفتوحة على دقة ميزات الصور لسبب مشابه: يخزّن Ultralytics YOLOE تضمينًا نصيًا لكل فئة مطلوبة، مثل "حافلة ذات طابقين"، ويقارنه بميزات المناطق في كل موضع من خرائط الميزات، بحيث يمكن لموجّه قصير مطابقة جسم صغير واحد بدلًا من متجه وحيد يلخّص الصورة بأكملها.
ColBERTv2 وPLAID#
يؤدي تخزين متجه لكل رمز إلى جعل فهرس ColBERT أكبر بنحو رتبة عشرية من فهرس المتجه الواحد، وهي كلفة مهمة عندما يعمل ColBERT مسترجعًا في المرحلة الأولى أو أداة لإعادة الترتيب ضمن خط أنابيب التوليد المعزز بالاسترجاع (RAG). يطبّق مستودع ColBERT في ستانفورد حلّين. PLAID هو محرك بحث يقيّم المرشحين مقابل مراكز العناقيد قبل تنفيذ MaxSim الكامل. يخزّن ColBERTv2 (NAACL 2022) كل متجه رمز بوصفه معرّف أقرب مركز عنقود، إضافةً إلى متبقٍ مكمّم إلى 1 أو 2 بت لكل بُعد، ويتدرّب بإشراف منقّى مستخلص من مشفّر متقاطع؛ وقد قلّص ضغط المتبقيات حجم التخزين اللازم للتفاعل المتأخر بمقدار يتراوح بين 6 و10 أضعاف.










