تصفية البيانات الوصفية للبحث الهجين
اجمع بين تشابه المتجهات والفلاتر المنظمة، مثل التاريخ والمؤلف والوسم، للحصول على استرجاع دقيق ومرتبط بالسياق.
تصفية البيانات الوصفية للبحث الهجين درس مجاني في AI Agents على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Agents، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Agents 4 دروس في المجموع.
بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.
لماذا التصفية؟
يعيد البحث بالمتجهات وحده المقاطعَ الأقرب تشابهًا — حتى لو كانت تابعة للمستأجر الخطأ، أو للغة الخطأ، أو للمستند الخطأ.
تقيّد عوامل تصفية البيانات الوصفية نطاق البحث ليشمل مجموعات فرعية ذات صلة، مما يمنحكم الدقة والاستدعاء معًا.
تخزين البيانات الوصفية
أرفقوا قاموسًا من البيانات الوصفية بكل مقطع عند إدخاله:
metadata = {
'tenant_id': 'acme',
'language': 'en',
'source': 'help-docs',
'updated_at': '2024-08-12',
'tags': ['shipping', 'returns']
}
for k, v in metadata.items():
print(f"{k}: {v}")
Filtering in Pinecone
results = index.query(
vector=query_vec,
top_k=5,
filter={
'tenant_id': 'acme',
'language': 'en'
}
)عوامل تصفية النطاق
تدعم معظم قواعد بيانات المتجهات عوامل تصفية النطاق أيضًا:
filter = {
'updated_at': {'$gte': '2024-01-01'},
'score': {'$gt': 0.5}
}
print(filter)
In and Not-In
filter = {
'tags': {'$in': ['shipping', 'returns']},
'archived': {'$ne': True}
}
print(filter)
التصفية في Qdrant
توفّر Qdrant لغة غنية للتصفية:
from qdrant_client.models import Filter, FieldCondition, MatchValue
filter = Filter(must=[
FieldCondition(key='tenant_id', match=MatchValue(value='acme')),
FieldCondition(key='language', match=MatchValue(value='en'))
])
results = client.search(
collection_name='docs',
query_vector=query_vec,
query_filter=filter,
limit=5
)التصفية المسبقة مقابل التصفية اللاحقة
استراتيجيتان:
- التصفية المسبقة — طبّقوا عامل التصفية ثم أجروا البحث (صحيحة، لكنها قد تكون بطيئة من دون فهرسة للبيانات الوصفية)
- التصفية اللاحقة — أجروا البحث ثم أسقطوا النتائج غير المطابقة (سريعة، لكنها قد تعيد صفرًا من النتائج)
تُجري أنظمة الإنتاج التصفية المسبقة باستخدام فهارس مناسبة للبيانات الوصفية.
المتجهات الهجينة + الكلمات المفتاحية
اجمعوا بين البحث الدلالي والبحث التقليدي بالكلمات المفتاحية باستخدام BM25. شغّلوا البحثين معًا، ثم ادمجوا الدرجات (يُعد دمج الرتب التبادلي هو الأسلوب المعياري):
def rrf(vec_results, bm25_results, k=60):
scores = defaultdict(float)
for rank, doc in enumerate(vec_results):
scores[doc.id] += 1 / (k + rank)
for rank, doc in enumerate(bm25_results):
scores[doc.id] += 1 / (k + rank)
return sorted(scores.items(), key=lambda x: -x[1])تعدد المستأجرين
في البرمجيات كخدمة، يجب أن يصفّي كل استعلام حسب tenant_id. ثبّتوا ذلك في غلاف الاسترجاع حتى لا يمكن نسيانه:
def search(query, tenant_id, top_k=5):
return index.query(
vector=embed(query),
top_k=top_k,
filter={'tenant_id': tenant_id}
)التحكم في الوصول عبر البيانات الوصفية
خزّنوا أذونات المستخدمين والأدوار في البيانات الوصفية:
metadata = {
'visibility': 'public', # or 'internal', 'restricted'
'department': 'engineering',
'allowed_roles': ['engineer', 'manager']
}
# At query time:
filter = {'allowed_roles': {'$contains': current_user_role}}تعزيز الحداثة
لتفضيل المستندات الأحدث، استرجعوا عددًا أكبر من المرشحين ثم أعيدوا ترتيبهم حسب الحداثة:
candidates = index.query(vector=query_vec, top_k=50)
scored = [
(c.score * recency_factor(c.metadata['updated_at']), c)
for c in candidates
]
scored.sort(reverse=True)
final = scored[:5]راقب تعددية البيانات الوصفية
تجعل البيانات الوصفية عالية التعددية (ملايين القيم الفريدة) الفهارس ضخمة. أجروا التجميع المسبق متى أمكن — خزّنوا مثلًا السنة والشهر بدلًا من الطابع الزمني الكامل عند التصفية الزمنية.
عامل التصفية الدائم
ما عامل التصفية الذي يجب أن يدرجه كل وكيل متعدد المستأجرين دائمًا؟
مراجعة
تقيّد عوامل تصفية البيانات الوصفية نطاق بحثكم. ادمجوها مع البحث الهجين (المتجهات + BM25) للحصول على أفضل النتائج. ويعتمد تعدد المستأجرين والتحكم في الوصول على ذلك.
تعلم AI Agents مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 60
- الدروس
- 239
الأسئلة الشائعة
هل درس «تصفية البيانات الوصفية للبحث الهجين» مجاني؟
نعم — نص درس «تصفية البيانات الوصفية للبحث الهجين» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Agents، انتقل إلى CoddyKit PRO. تتضمن دورة AI Agents 4 دروس في المجموع.
ماذا ستتعلم في «تصفية البيانات الوصفية للبحث الهجين»؟
اجمع بين تشابه المتجهات والفلاتر المنظمة، مثل التاريخ والمؤلف والوسم، للحصول على استرجاع دقيق ومرتبط بالسياق. تتمرن على AI Agents مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ AI Agents؟
لا تُشترط خبرة سابقة. AI Agents على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «تصفية البيانات الوصفية للبحث الهجين»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس AI Agents هذا؟
نعم. كل درس في AI Agents يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- مقارنة Pinecone وWeaviate وQdrant
- تصفية البيانات الوصفية للبحث الهجين
- تحديث المتجهات وحذفها
- اختيار مقاييس المسافة (cosine وL2 وdot)