Symbolic Index for LLM Knowledge — بنية بحث عصبية-رمزية.
يبحث بأعداد صحيحة 64 بت. لا حاجة لقاعدة بيانات متجهية، ولا رسم بياني ANN، ولا نموذج تضمين.
القضية الجوهرية
لم يكن البحث مشكلة صعبة — بل كان عرضًا لبيانات بلا بنية. عند إسناد بنية 64 بت لحظة التسجيل، يختفي العرض.
results = index[(index & mask) == pattern]
بحث في 100 مليون كيان من ويكي بيانات بذاكرة 1.3 غيغابايت في أقل من ثانية. Python (NumPy) وحدها تتفوق على قواعد بيانات C++/Rust المتجهية المحسّنة — انتصار للبنية المعمارية.
لماذا ليس تضمين المتجهات؟
تضمين المتجهات يطمس البنية.
"صلاح الدين الأيوبي قائد عسكري في العصور الوسطى"
→ الإنسان يدرك فورًا: عربي، قائد عسكري، القرن الثاني عشر
نموذج التضمين:
[0.234, -0.891, 0.445, ..., 0.112] (384 بُعد float)
→ البنية تلاشت. لا يمكن قراءة ما إذا كان شخصًا أم موقعًا.
لاستعادة البنية المطموسة:
رسم بياني ANN (مثل HNSW وIVF-PQ)، مشفّر متقاطع، مُعيد ترتيب، مرشّح بيانات وصفية...
SILK يحفظ البنية.
SIDX: [Human / military / west_asia / medieval]
→ البنية حية في البتات. يمكن قراءتها.
→ لا حاجة للاستعادة. لأنها لم تُطمس أصلًا.
الجوهر هو عكس الترتيب.
التقليدي: اكتب أولًا → ثم هيكِل لاحقًا (فهرسة)
SILK: هيكِل عند الكتابة → البحث مجاني
تخطيط بتات SIDX
يتبع SIDX مواصفات Entity Node في قواعد GEUL.
[prefix 7 | mode 3 | entity_type 6 | attrs 48]
MSB(63) LSB(0)
| الحقل | البتات | الحجم | الوصف |
|---|---|---|---|
| prefix | 63-57 | 7 | رأس بروتوكول GEUL (ثابت 0001001، يُتجاهل عند البحث) |
| mode | 56-54 | 3 | نمط التكميم/العدد (كيان مسجل=0، معرّف، عام، وجودي، إلخ — 8 أنماط) |
| entity_type | 53-48 | 6 | 64 نوعًا أعلى (Human=0 ~ Election=62, غير مصنف=63) |
| attrs | 47-0 | 48 | ترميز سمات حسب النوع (محدد بالكتاب المرجعي) |
نطاق البحث: entity_type 6 بت + attrs 48 بت = 54 بت. QID لا يُضمَّن في SIDX ويُخزَّن في مصفوفة منفصلة.
attrs 48 بت — مخطط حسب النوع
Human(0): subclass 5 | occupation 6 | country 8 | era 4 | decade 4 | gender 2 | notability 3 | ...
Star(12): constellation 7 | spectral_type 4 | luminosity 3 | magnitude 4 | ra_zone 4 | dec_zone 4 | ...
Settlement(28): country 8 | admin_level 4 | admin_code 8 | lat_zone 4 | lon_zone 4 | population 4 | ...
Organization(44): country 8 | org_type 4 | legal_form 6 | industry 8 | era 4 | size 4 | ...
Film(51): country 8 | year 7 | genre 6 | language 8 | color 2 | duration 4 | ...
حاليًا تم تحديد تخطيط سمات 5 أنواع. الباقي يُرمَّز بـ entity_type فقط.
البنية المعمارية
في SILK خطان للمعالجة: الترميز (عند الكتابة) والبحث (عند الاستعلام). كلاهما بنفس المبدأ: الرمزي يُمسك البنية، وLLM يعالج المعنى.
خط الترميز (عند الكتابة)
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ وسم LLM │──►│ تحقق VALID │──►│ ترميز الكتاب │
│ مستند → JSON│ │ قيم صالحة │ │ JSON → SIDX │
│ (تصنيف دلالي)│ │ فحص التماسك │ │ (تجميع البتات)│
│ │ │ هلوسة → رفض │ │ │
└──────────────┘ └──────────────┘ └──────────────┘
LLM يُوسم الكود يتحقق ترميز بالكتاب المرجعي
خط البحث (عند الاستعلام)
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ تفسير الاستعلام│──►│ مرشّح بت AND │──►│ حكم LLM │
│ بحث الكتاب │ │ NumPy SIMD │ │ المرشحون فقط │
│ + مساعدة LLM│ │100M → عشرات │ │ عشرات → إجابة│
└──────────────┘ └──────────────┘ └──────────────┘
استخلاص المعنى ترشيح واسع حكم دقيق
الاستراتيجية الجوهرية: ترشيح واسع ببت AND على SIDX بلا فقدان، ثم LLM يحكم على المرشحين القلائل فقط.
كل طرف يؤدي ما يتقنه:
الإنسان: تصميم البنية (الكتاب المرجعي)
LLM: التصنيف الدلالي (الوسم) + الحكم الدلالي (البحث)
الكود: التحقق القاعدي (VALID) + تجميع البتات
CPU: المقارنة الجماعية (NumPy SIMD)
الترميز: وسم LLM ← تحقق VALID
يقرأ LLM المستند ويُوسمه بصيغة JSON. يُجري VALID فحصًا آليًا وفق الكتاب المرجعي. القيم غير الموجودة في الكتاب، وانتهاكات التماسك بين الأنواع، وانتهاكات القيود لا يمكنها فيزيائيًا الدخول إلى الفهرس.
وسم LLM: {"type": "Human", "occupation": "military", "country": "egypt"}
VALID: occupation="military" ∈ الكتاب? ✓ country="egypt" ∈ الكتاب? ✓
Human يحتوي حقل constellation? ✗ رفض
الترميز: "military"→6 بت، "egypt"→8 بت من الكتاب → تجميع البتات → SIDX uint64
قد يهلوس LLM. لكن VALID يقوم بدور الحارس فاحتمال تلويث الفهرس يساوي صفرًا. فقط JSON الذي يجتاز VALID يُرمَّز إلى عدد صحيح SIDX 64 بت وفق الكتاب المرجعي.
البحث: ترشيح واسع، LLM يُضيّق
1. استخلاص معنى الاستعلام بحث الكتاب 80% / مساعدة LLM 20%
2. تجميع قناع البتات حتمي — خوارزمية
3. بت AND عبر NumPy حتمي — مسح شامل لـ 100M في 20ms
4. حكم LLM النهائي المرشحون القلائل فقط — حكم دلالي دقيق
80% من البحث استعلامات هيكلية
"صلاح الدين" → Q484523 exact match. بت AND. انتهى.
"أخبار سامسونج" → org/company + doc_meta/news. بت AND. انتهى.
"قمة بايدن-شي" → Q6279 ∩ Q15031 ∩ meeting. تقاطع. انتهى.
استعلامات هيكلية (80%): بت AND في SILK تكفي. لا حاجة لـ LLM.
استعلامات دلالية (15%): SILK يُقلّص المرشحين → LLM يحكم في 5-10 حالات.
استعلامات توليدية (5%): SILK يُحدّد المستند → LLM يُولّد.
Multi-SIDX
يحمل المستند/الحدث الواحد عدة SIDX.
مقال إخباري: "اجتماع قادة سامسونج وNVIDIA وهيونداي":
SIDX[0]: [Human / business / east_asia ] لي جاي يونغ
SIDX[1]: [Org / company / east_asia ] سامسونج
SIDX[2]: [Human / business / n_america] جنسن هوانغ
SIDX[3]: [Org / company / n_america] NVIDIA
SIDX[4]: [Human / business / east_asia ] تشونغ إي سون
SIDX[5]: [Org / company / east_asia ] هيونداي
SIDX[6]: [Event / meeting / east_asia ] الاجتماع
كلها SIDX بنفس 64 بت. نفس الفهرس. نفس بت AND للبحث. حقل entity_type يُميّز الكيانات (Human, Org) عن الأحداث (Event).
هيكل الفهرس
sidx_array = np.array([...], dtype=np.uint64) # 108.8M × 8B = 870MB
qid_array = np.array([...], dtype=np.uint32) # 108.8M × 4B = 435MB
# إجمالي ~1.3GB ذاكرة
بناء الفهرس:
Elasticsearch: تقطيع → تحليل → فهرس معكوس → دمج شرائح
Pinecone: تضمين → رسم بياني HNSW → تجميع عنقودي
SILK: sort
لا هياكل بيانات. مصفوفة مرتبة واحدة.
مقارنة مع قواعد البيانات المتجهية
| SILK | قاعدة بيانات متجهية | |
|---|---|---|
| حجم الفهرس (تريليون سجل) | 12TB | 1.5PB (125 ضعف) |
| بناء الفهرس | sort | HNSW لأيام |
| البدء البارد | فتح الملف فورًا | بناء الرسم البياني لساعات |
| المسح المجزأ | ممكن (النتائج متطابقة) | مستحيل (انقطاع الرسم البياني) |
| شروط مركبة | تقاطع (دقيق) | ضغط في متجه واحد (تقريبي) |
| النتائج | دقيقة (عمليات مجموعات) | تقريبية (ترتيب تشابه) |
| المراجعة | JSON (صندوق أبيض) | مستحيلة (صندوق أسود) |
بت AND لا تعتمد على الترتيب، بلا حالة، قابلة للجمع.
قاعدة متجهية: الرسم البياني كاملًا يجب أن يكون في الذاكرة. التجزئة = تدمير.
SILK: اقطع من أي مكان ويعمل. التجزئة = بطء فقط. النتائج متطابقة.
خط المراجعة
تضمين المتجهات صندوق أسود لا يمكن مراجعته. SIDX بصيغة JSON يمكن مراجعته.
المرحلة 1 — وسم LLM صغير Llama 8B / GPT-4o-mini. دقة 85-90%.
المرحلة 2 — فحص VALID الآلي قيم صالحة، تماسك، قيود. التكلفة $0.
المرحلة 3 — مراجعة LLM كبير فقط confidence=low. دقة 99%+.
VALID هو الحارس: الهلوسات خارج القيم الصالحة للكتاب لا يمكنها فيزيائيًا دخول الفهرس.
الرخصة
MIT — مستودع GitHub