تحديات RAG
جرّب هذه التحديات بعد إتمام خطوات RAG الخمس جميعها.
اختبار المعرفة
-
ما الفرق بين RAG والضبط الدقيق (fine-tuning)؟
-
لماذا نقطّع المستندات قبل تضمينها؟
-
ما الذي يقيسه تشابه جيب التمام (cosine similarity)؟
-
لماذا يبلغ عدد أبعاد نموذج
all-MiniLM-L6-v2384؟ -
ماذا يحدث إذا لم تحتوِ قاعدة المعرفة على مستند ذي صلة؟
تحديات برمجية
التحدي 1: تبديل نموذج التضمين
استبدل all-MiniLM-L6-v2 بنموذج آخر مثل all-mpnet-base-v2 بأبعاد 768. حدّث نموذج Document ليستخدم Vector(768)، ثم أعد الفهرسة. وقارن جودة البحث.
التحدي 2: البحث الهجين
اجمع بين البحث المتجهي والبحث بالكلمات المفتاحية. على سبيل المثال، استخدم البحث النصي الكامل في PostgreSQL (tsvector) كخيار احتياطي. اعرض النتائج من كليهما، ثم ادمجها وأزل التكرار.
تلميح:
SELECT * FROM document
WHERE to_tsvector('english', content) @@ plainto_tsquery('english', :query)
التحدي 3: إعادة الترتيب (reranking)
بعد استرجاع أفضل 20 نتيجة من pgvector، استخدم نموذج cross-encoder (مثل cross-encoder/ms-marco-MiniLM-L-6-v2) لإعادة ترتيبها، ثم أعد أفضل 5 نتائج بعد إعادة الترتيب.
التحدي 4: أداة كشط الويب
ابنِ أداة كشط تجلب أحدث أخبار Clark College وتضيفها تلقائيا إلى قاعدة المعرفة:
import requests
from bs4 import BeautifulSoup
url = "https://www.clark.edu/news-and-media/24-7/"
# حلّل الصفحة، واستخرج المقالات، وأضفها إلى DOCUMENTS
التحدي 5: سجل المحادثة في RAG
عدّل نقطة النهاية (endpoint) /api/rag-chat بحيث تضم آخر 5 رسائل في السياق (وليس السؤال الأخير فقط). وهذا يتيح للذكاء الاصطناعي أن يطرح أسئلة متابعة.
مشروع مفتوح: ذاكرة التخزين المؤقت الدلالية
ابنِ ذاكرة تخزين مؤقت تحفظ تضمينات الأسئلة الشائعة وأجوبتها. وقبل استدعاء النموذج اللغوي الكبير (LLM)، تحقق مما إذا كان قد سبق طرح سؤال مشابه:
def check_cache(db, query, threshold=0.95):
"""Return cached answer if a very similar question exists."""
query_vec = embed_text(query)
cached = (
db.session.query(CachedQA)
.order_by(CachedQA.question_embedding.cosine_distance(query_vec))
.limit(1)
.first()
)
if cached and (1 - cached.question_embedding.cosine_distance(query_vec)) > threshold:
return cached.answer
return None
وهذا يوفّر استدعاءات API ويسرّع الاستجابات للأسئلة الشائعة.