الاسترجاع متعدد المتجهات (ColBERT)
افهرس عدة متجهات لكل مستند، متجهًا لكل رمز أو مقطع، للحصول على مطابقة دقيقة.
الاسترجاع متعدد المتجهات (ColBERT) درس مجاني في AI Agents على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Agents، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Agents 4 دروس في المجموع.
بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.
متجه واحد لا يكفي
يضمّن RAG القياسي كل مقطع في متجه واحد. ويلخّص ذلك المتجه كل ما في المقطع، مما يؤدي إلى فقدان الإشارات الدقيقة.
يخزّن الاسترجاع متعدد المتجهات متجهات متعددة لكل مستند ويطابقها بدقة أكبر.
فكرة ColBERT
يضمّن ColBERT (Khattab & Zaharia, 2020) كل رمز من المستند وكل رمز من الاستعلام، ثم يحسب أعلى تشابه:
score(q, d) = sum over q_token in q: max over d_token in d: cos(q_token, d_token)لماذا يتفوق ColBERT على المتجه الواحد
- يلتقط جوانب متعددة من المستند (وهو ما لا يستطيع متجه واحد فعله)
- يتعامل مع المستندات الطويلة بشكل أفضل
- يحقق استرجاعًا أكبر للمصطلحات النادرة
تكلفة ColBERT
تخزين متجه واحد لكل رمز بدلًا من متجه واحد لكل مقطع:
- إذا احتوى المقطع على 500 رمز، فهذا يعني مساحة تخزين أكبر بمقدار 500 مرة
- تقارن كل عملية بحث عددًا أكبر بكثير من الأزواج
يقلل التكميم والتقليم هذه التكلفة بمقدار يتراوح بين 10 و50 مرة، لكنها تظل مرتفعة.
ColBERTv2
يضيف ColBERTv2 ضغط البواقي — إذ تتجمع الرموز حول مراكز عنقودية، ويُخزَّن كل رمز بالشكل (centroid_id, small_residual). وتنخفض مساحة التخزين 50 مرة.
تشغيل ColBERT
تسهّل مكتبة RAGatouille هذه العملية:
# pip install ragatouille
from ragatouille import RAGPretrainedModel
rag = RAGPretrainedModel.from_pretrained('colbert-ir/colbertv2.0')
rag.index(collection=documents, index_name='my_corpus')
results = rag.search(query='What is the refund policy?', k=5)تعدد المتجهات عمليًا
إلى جانب ColBERT، توجد أساليب أخرى متعددة المتجهات:
- الأب-الابن — تضمين مقاطع صغيرة واسترجاع الآباء الأكبر
- الملخص + المقاطع — تضمين ملخص المستند والمقاطع الفردية معًا
- الأسئلة الافتراضية — تضمين أزواج الأسئلة والأجوبة المُنشأة من كل مستند
Hypothetical Questions Pattern
def index_with_hypos(doc):
# Generate 5 plausible questions this doc could answer
questions = llm.invoke(f'Write 5 questions answered by this doc:\n{doc}').content.split('\n')
for q in questions:
vector_db.add(embed(q), payload={'doc': doc, 'question': q})
# Now queries that match a stored hypothetical question retrieve the doc.Parent-Child with LangChain
from langchain.retrievers import ParentDocumentRetriever
from langchain.storage import InMemoryStore
store = InMemoryStore()
retriever = ParentDocumentRetriever(
vectorstore=child_vectorstore,
docstore=store,
child_splitter=child_splitter, # small
parent_splitter=parent_splitter # large
)
retriever.add_documents(documents)
# Indexes small chunks, returns large parents.متى تستخدم ColBERT
- البحث عالي المخاطر (القانوني والطبي)
- المستندات الطويلة
- عندما يمكنك تحمّل تكلفة التخزين
متى تتخطاه
- مجموعات النصوص الصغيرة
- المسارات الحساسة لزمن الاستجابة
- المشروعات المقيدة بالتكلفة
الدمج مع BM25
لتحقيق أقصى قدر من الاسترجاع، ادمج الاسترجاع متعدد المتجهات مع البحث التقليدي بالكلمات المفتاحية BM25. استخدم دمج الرتب التبادلي لدمج النتائج.
مقايضة ColBERT
ما المقايضة الرئيسية عند استخدام الاسترجاع متعدد المتجهات بأسلوب ColBERT؟
مراجعة
يؤدي استخدام متجه واحد لكل مقطع إلى فقدان المعلومات. يخزّن ColBERT متجهات لكل رمز لتحقيق دقة أعلى. وتسهّل RAGatouille استخدامه. استخدمه عندما يكون الاسترجاع مهمًا وتسمح الميزانية بالتكلفة.
الأسئلة الشائعة
هل درس «الاسترجاع متعدد المتجهات (ColBERT)» مجاني؟
نعم — نص درس «الاسترجاع متعدد المتجهات (ColBERT)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Agents، انتقل إلى CoddyKit PRO. تتضمن دورة AI Agents 4 دروس في المجموع.
ماذا ستتعلم في «الاسترجاع متعدد المتجهات (ColBERT)»؟
افهرس عدة متجهات لكل مستند، متجهًا لكل رمز أو مقطع، للحصول على مطابقة دقيقة. تتمرن على AI Agents مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ AI Agents؟
لا تُشترط خبرة سابقة. AI Agents على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «الاسترجاع متعدد المتجهات (ColBERT)»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس AI Agents هذا؟
نعم. كل درس في AI Agents يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- إعادة الترتيب باستخدام Cross-Encoders
- HyDE: Embeddings المستندات الافتراضية
- الاسترجاع متعدد المتجهات (ColBERT)
- تقييم RAG (RAGAS وRecall@K)