البحث الوكيلي: تعليم الذكاء الاصطناعي التذكر كالإنسان

البحث المتجهي يعثر على نص مشابه. البحث الوكيلي يعثر على سياق ذي صلة. الفرق هو الاستدلال.
مشكلة البحث
يسأل البحث التقليدي: "أي المستندات تحتوي على هذه الكلمات؟"
لكن البشر يسألون: "ماذا قصدت عندما قلت ذلك؟"
مثال على استعلام: "كيف تعاملت مع مصادقة المستخدم؟"
نهج البحث المتجهي:
- يعثر على مستندات تحتوي "مستخدم" و"مصادقة"
- يفوّت: جلسات عن "auth"، "login"، "sign-in"
- يفوّت: سياق لماذا اخترت JWT مقابل sessions
- يفوّت: سلسلة الخطأ ← الإصلاح ← النجاح
نهج الذاكرة البشرية:
- "أتذكر أنني عملت على ذلك الشهر الماضي"
- "كان ذلك لمشروع التجارة الإلكترونية"
- "جربت OAuth أولاً، ثم انتقلت إلى JWT"
- "المشكلة كانت في تجديد الرمز"
يبحث البشر بـ الاستدلال، وليس بـ التشابه.
البحث الوكيلي
يجمع البحث الوكيلي:
- الفهم الدلالي — ماذا يعني الاستعلام؟
- التنقل الزمني — متى حدث هذا؟
- التعرف على الـ patterns (أنماط تكرارية في البيانات أو السلوك) — أي نوع من الحلول؟
- الاستدلال السببي — ما الذي أدى إلى النجاح؟
const response = await searchEngine.search({
userId: 'user_123',
query: "How did I handle user authentication?",
strategy: 'hybrid', // temporal + semantic + pattern
depth: 3,
limit: 10,
});
// يُرجع:
response.insights.summary
// "Found 3 authentication implementations across 2 projects"
response.insights.patterns
// ["jwt-auth", "oauth-integration", "session-management"]
response.insights.suggestions
// ["Consider reusing the JWT pattern from Project A"]
response.results[0].reasoning
// "Session from March 2025 implemented JWT authentication
// with refresh tokens for the e-commerce project"
أربع استراتيجيات بحث
1. البحث الزمني
"ماذا فعلت الأسبوع الماضي؟"
const response = await searchEngine.search({
userId: 'user_123',
query: "Show me recent authentication work",
strategy: 'temporal',
});
كيف يعمل:
- تحليل العلامات الزمنية ("حديث"، "الأسبوع الماضي"، "الثلاثاء")
- الترجيح بالحداثة (انحلال أسي)
- تعزيز المطابقات من الفترة الزمنية المطلوبة
// تسجيل الصلة
const daysAgo = (Date.now() - session.createdAt) / (1000 * 60 * 60 * 24);
const recencyBoost = Math.max(0.1, 1 - daysAgo / 30);
2. البحث الدلالي
"كيف تعاملت مع أدوار المستخدمين؟"
const response = await searchEngine.search({
userId: 'user_123',
query: "Find my role-based access control implementation",
strategy: 'semantic',
});
كيف يعمل:
- استخراج المفاهيم الدلالية ("أدوار"، "وصول"، "صلاحيات")
- المطابقة مع التفضيلات وسياق المشروع
- الربط المتقاطع مع محتوى الجلسة
const concepts = extractConcepts(query);
// { entities: ['Role', 'User'], patterns: ['guard'], actions: ['authorize'] }
// المطابقة مع الجلسات
const matches = sessions.filter(s =>
s.entities.some(e => concepts.entities.includes(e)) ||
s.patterns.some(p => concepts.patterns.includes(p))
);
3. البحث بالـ patterns
"أرني جميع عروض القوائم التي بنيتها"
const response = await searchEngine.search({
userId: 'user_123',
query: "Find all my list views",
strategy: 'pattern',
});
كيف يعمل:
- استخراج مصطلحات الـ patterns ("قائمة"، "جدول"، "شبكة"، "بطاقات")
- البحث في سجلات تقارب الـ patterns
- إرجاع الجلسات التي تستخدم تلك الـ patterns
const patternTerms = ['list', 'table', 'grid', 'cards'];
const userPatterns = await memoryManager.getUserPatterns(userId);
// إيجاد الـ patterns عالية النجاح
const goodPatterns = userPatterns.filter(p =>
p.successCount / p.usageCount > 0.8
);
4. البحث الهجين
"ما الذي نجح مع النماذج؟" (يجمع جميع الاستراتيجيات)
const response = await searchEngine.search({
userId: 'user_123',
query: "What worked well for forms?",
strategy: 'hybrid',
depth: 3,
limit: 10,
});
يجمع نتائج البحث الزمني والدلالي والـ patterns مع إزالة التكرار.
محرك الاستدلال
البحث الوكيلي لا يُرجع مطابقات فحسب — بل يشرح لماذا تطابقت:
interface SearchResult {
type: 'preference' | 'session' | 'project' | 'pattern';
data: unknown;
relevance: number; // 0-1
reasoning: string; // تفسير مقروء للبشر
source: string; // من أين أتت
}
// مثال على نتيجة
{
type: 'session',
data: { /* سجل الجلسة */ },
relevance: 0.87,
reasoning: "Session from March 2025 contains 'User' entity with
'role' field and uses 'guard-clause' pattern.
User previously marked this pattern as successful.",
source: 'generation_history'
}
توليد الرؤى
بعيداً عن النتائج الفردية، يولّد البحث الوكيلي رؤى:
interface Insights {
summary: string; // ما تم إيجاده
patterns: string[]; // الـ patterns الشائعة
trends: string[]; // الاتجاهات الزمنية
suggestions: string[]; // الخطوات التالية القابلة للتنفيذ
}
// مثال
{
summary: "Found 12 sessions involving forms across 3 projects",
patterns: ["form-section", "validation-rules", "wizard-flow"],
trends: [
"High success rate (92%) with form-section pattern",
"Validation errors decreased after adopting std/validate"
],
suggestions: [
"Consider reusing the wizard-flow pattern for complex forms",
"Add entity-form to your preferred patterns"
]
}
مثال واقعي
استعلام المستخدم: "كيف بنيت تدفق الدفع؟"
عملية البحث الوكيلي:
-
استخراج المفاهيم
concepts = {
entities: ['Order', 'Payment', 'Cart'],
patterns: ['wizard', 'form', 'validation'],
actions: ['checkout', 'purchase', 'pay']
} -
البحث الزمني
- وجد 5 جلسات من آخر 3 أشهر
- مُرجَّحة بالحداثة
-
البحث الدلالي
- طابق "checkout" في الطلبات
- وجد entities ذات صلة (Order, Cart)
-
البحث بالـ patterns
- وجد استخدام pattern الـ
wizard-flow - معدل نجاح 90%
- وجد استخدام pattern الـ
-
توليد الرؤى
{
summary: "Found checkout implementation using 3-step wizard",
patterns: ["wizard-flow", "form-section", "validation-rules"],
trends: [
"Most successful: 3-step wizard (92% completion)",
"Less successful: single-page checkout (67%)"
],
suggestions: [
"Reuse wizard-flow for future checkout flows",
"Consider adding progress indicator pattern"
]
}
