اكتشاف المعنى في ملاحظاتك باستخدام CK Search
باختصار
CK Search يضيف بحثاً دلالياً محلياً إلى أي مجلد، مع خادم MCP مدمج لتكامل وكلاء الـ AI. البحث الدلالي يتجاوز حدود البحث بالكلمات المفتاحية من خلال إيجاد الملاحظات بناءً على المعنى، وليس مطابقة النصوص. يستعرض هذا المقال عملية التثبيت البسيطة جداً والإعداد، ويشرح كيف يجد البحث الدلالي ما لا يستطيع البحث بالكلمات المفتاحية إيجاده. ليس سحراً، وسأكون صريحاً حول نقاط ضعفه.
عندما لا يرى البحث ما تقصده
في المقال الأول، وصفت اللحظة التي لا يكفي فيها التنظيم الجيد. يمكنك أن تضع الوسوم بشكل مثالي ومع ذلك لا تجد ما تحتاجه، لأنك تبحث عن مفهوم وملاحظتك استخدمت كلمات مختلفة. هذا هو سقف البحث بالكلمات المفتاحية.
لدي حوالي 1,900 ملف markdown موزعة على ثلاثة خزائن في Obsidian. إذا لم تكن من مستخدمي Obsidian، يمكنك ببساطة التفكير في هذا على أنه 1,900 ملف نصي في ثلاثة مجلدات مختلفة. هي موسومة ومترابطة ومنظّمة بخصائص frontmatter، أو ببساطة أكثر، خصائص الصفحة. التنظيم متين. لكن عندما أبحث عن "authentication"، لا أجد ملاحظتي عن "session token management". وعندما أبحث عن "AI assistant"، تفوتني الملاحظة عن "Claude Desktop". المعلومات موجودة. البحث ببساطة لا يراها.
بحث Obsidian المدمج، ومعظم الإضافات التي توسّعه، تعمل على نفس المبدأ: مطابقة الأحرف التي كتبتها مع الأحرف الموجودة في ملفاتك. بعضها يضيف وظائف لتحسين مطابقة الكلمات المفتاحية، لكنها لا تزال تبحث في النص فقط، وليس في المعنى.
البحث الدلالي يعمل بشكل مختلف. بدلاً من مطابقة النصوص، يحوّل كلاً من استعلامك وملاحظاتك إلى تمثيلات رقمية ويقيس مدى قربها في المعنى. "Authentication" و"session token management" ينتهيان قريبَين من بعضهما في هذا الفضاء الرقمي، لأنهما يتعلقان بنفس المفهوم. البحث يفهم ما تقصده، وليس فقط ما كتبته.
لماذا CK Search
هناك عدة أدوات يمكنها إضافة البحث الدلالي إلى Obsidian. قيّمت بعضها قبل أن أستقر على CK Search. أداة CK Search ليست مخصصة لـ Obsidian. إنها تبحث في أي مجلد يحتوي على ملفات نصية.
الشيئان الأكثر أهمية بالنسبة لي: CK Search يعمل بدون تشغيل Obsidian، ولديه خادم MCP مدمج. الأول يعني أنني أستطيع البحث من سطر الأوامر، من السكربتات، من أي مكان. والثاني يعني أن Claude Code يستطيع استخدامه مباشرةً كأداة بدون اعتماديات إضافية أو إعداد أو تهيئة. وهو مبني بلغة Rust، المعروفة بسرعتها.
شيء يجب معرفته مسبقاً: CK Search ليس لديه واجهة رسومية. لا توجد إضافة Obsidian مع شريط بحث. إنه أداة سطر أوامر، وهذا بالتصميم — بُني ليُستخدم من قبل وكلاء AI والسكربتات، وليس للنقر عليه يدوياً. إذا كنت تبحث عن تجربة بحث دلالي بالنقر والتصفح داخل Obsidian، فإن Smart Connections أو Copilot قد يكونان الخيار الأنسب. أما إذا كنت تبني نظاماً يستعلم فيه وكيل AI عن ملاحظاتك برمجياً، فإن CK Search هو الأداة الأفضل.
مقارنة الأدوات
| CK Search | Smart Connections | Copilot for Obsidian | |
|---|---|---|---|
| نوع البحث | دلالي + هجين | دلالي | دلالي |
| دعم MCP | خادم مدمج | إضافة | لا يوجد |
| تعدد الخزائن | أي مجلد | لكل خزانة | لكل خزانة |
| يتطلب Obsidian | لا | نعم | نعم |
| محلي أولاً | نعم | نعم | يختلف |
التثبيت
يتم تثبيت CK Search عبر Cargo، مدير حزم Rust. إذا لم يكن لديك Rust، ستحتاج تثبيته أولاً.
# Install Rust (if you don't have it)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
# Install CK Search
cargo install ck-search
# Verify
ck --version
هذا كل شيء. لا Node.js، لا بيئة Python، لا حاوية Docker. أمر واحد، أداة واحدة.
أول بحث دلالي لك
قبل إعداد أي شيء آخر، جرّبه من سطر الأوامر:
# Semantic search — finds by meaning
ck --sem "ideas for improving workflow" /path/to/your/vault
في أول مرة تشغّل هذا الأمر، سيقوم CK Search ببناء فهرس. يقرأ كل ملف markdown في المجلد ويخزّن التمثيل الرقمي له في مجلد .ck/. كل بحث بعد ذلك يكون شبه فوري — يُعاد فهرسة الملفات التي تغيّرت فقط. لا توجد عملية في الخلفية، لا daemon، لا مُراقب. CK Search يعمل فقط عندما تبحث. صفر استهلاك للموارد بقية الوقت.
جرّب بضعة استعلامات وقارنها بما يُرجعه بحث Obsidian المدمج. هنا ستشعر بالفرق. ابحث عن مفهوم تعرف أنه موجود في ملاحظاتك لكن باستخدام كلمات مختلفة عمّا كتبته. البحث الدلالي سيجده. البحث بالكلمات المفتاحية لن يفعل.
يدعم CK Search أيضاً البحث بالكلمات المفتاحية والوضع الهجين (دلالي + كلمات مفتاحية معاً)، لكنني أستخدمه بشكل أساسي للبحث الدلالي. الأدوات الأخرى في نظامي تغطي البحث بالكلمات المفتاحية: grep، بحث Obsidian المدمج، إضافة Omnisearch. القيمة الفريدة لـ CK Search هي أنه يفهم المعاني. لا شيء آخر في نظامي يفعل ذلك.
ربطه بوكيل AI
إذا كنت تستخدم Claude Code أو أي وكيل AI آخر، يصبح CK Search أكثر فائدة بشكل كبير كخادم MCP. بروتوكول MCP (Model Context Protocol) هو معيار مفتوح لربط أدوات AI بمصادر البيانات والقدرات الخارجية. Claude Code يدعمه بشكل أصلي.
أبسط طريقة لإعداد هذا هي ملف .mcp.json:
{
"mcpServers": {
"ck-search": {
"command": "/Users/yourname/.cargo/bin/ck",
"args": ["--serve"]
}
}
}
اعثر على المسار الفعلي باستخدام which ck واستبدل command وفقاً لذلك.
بمجرد الاتصال، يحصل Claude Code على أدوات تشمل:
semantic_search— الأداة الرئيسية. بحث مفاهيمي قائم على المعنى.hybrid_search— دلالي + كلمات مفتاحية معاً.
عملياً، عندما أسأل Claude Code سؤالاً عن ملاحظاتي، يستدعي semantic_search باستعلام بلغة طبيعية، يحصل على نتائج مرتبة مع مسارات الملفات ومقتطفات، ثم يقرأ أفضل النتائج لتركيب إجابة.
ماذا تُفهرس (وماذا لا)
CK Search يُفهرس كل شيء في المجلد الذي توجّهه إليه، ما عدا ما تستثنيه. تريد تخطّي أي شيء ليس محتوى نصياً ذا معنى. المبدأ الأساسي: فهرس فقط الملفات التي تحتوي على معرفة تريد البحث فيها بالمعنى. ملفات إعدادات التطبيقات وملفات الوسائط ليست كذلك. إنها ضوضاء تُضعف الفهرس.
لاستثناء الملفات، أنشئ ملف .ckignore في جذر المجلد الذي تريد البحث فيه.
CK Search يُفهرس الملفات النصية مثل markdown والكود والنص العادي. إذا كان لديك ملفات PDF أو صور تحتوي على نص أو مستندات Office، ستحتاج أداة مختلفة لتلك. أنا أستخدم إضافة Omnisearch في Obsidian، التي تتعامل مع ملفات PDF عبر استخراج النص والصور عبر OCR. لكن هذا موضوع مقال آخر.
عندما يكون البحث الدلالي سيئاً
أريد أن أكون صريحاً حول هذا، لأن الكثير من المقالات عن أدوات AI تبالغ في تسويق السحر.
البحث الدلالي سيء في:
- النصوص الحرفية. تبحث عن رسالة خطأ، اسم دالة، وسم محدد؟ استخدم grep أو بحث Obsidian المدمج. البحث الدلالي سيعطيك نتائج مرتبطة مفاهيمياً، وهذا ليس ما تريده عندما تحتاج الملف الذي يحتوي بالتحديد على
ERROR_CODE_4032. - الاستعلامات القصيرة والشائعة. البحث عن "meeting" سيُرجع كل شيء يتعلق بشكل غامض بالاجتماعات. ليس مفيداً.
- التمييز بين المعاني. "Apple" الشركة و"apple" الفاكهة لهما نفس التمثيل الرقمي. السياق يساعد، لكنه ليس مثالياً.
- استعلامات frontmatter (خصائص الصفحة). تبحث عن ملاحظات بوسم معين أو تاريخ محدد؟ هذه بيانات منظّمة. استخدم grep مع regex، وليس البحث الدلالي.
- المحتوى المُضاف حديثاً. إذا أنشأت ملاحظة للتو، فلن تكون في الفهرس حتى يُحفّز البحث التالي إعادة فهرسة الملفات المتغيّرة. هذا عادةً مقبول، لكن يستحق المعرفة.
الرأي الصريح: البحث الدلالي أداة واحدة، وليس الأداة الوحيدة. يملأ فجوة محددة لا يستطيع البحث بالكلمات المفتاحية سدّها. لكن البحث بالكلمات المفتاحية يملأ فجوات لا يستطيع البحث الدلالي سدّها. أفضل إعداد يستخدم كليهما.
الصورة الأكبر
CK Search هو جزء واحد من نظام بحث أكبر بنيته لقاعدة معرفتي.
النظام الكامل، باختصار:
- CK Search: بحث دلالي في ملفات markdown (ما يغطيه هذا المقال)
- Grep: مطابقة نصية حرفية وregex (مدمج، بدون إعداد)
- Omnisearch: بحث بالكلمات المفتاحية في جميع أنواع الملفات بما في ذلك PDF والصور مع OCR
- Sift: نظام RAG مخصص ورسم معرفة زمني لقاعدة معرفة خارجية ولكن ذات صلة (منفصلة عن Obsidian)
عندما يتعامل وكيل الـ AI مع استعلام بحث، يُشغّل كل هذه بالتوازي ويركّب النتائج المجمّعة. لكن هذا موضوع مقال لاحق. حالياً، CK Search وحده يمثّل ترقية كبيرة مقارنة بالبحث بالكلمات المفتاحية فقط.
ما التالي
المقال التالي يتناول كيف بنيت قاعدة معرفة خارجية باستخدام Sift، نظام مفتوح المصدر يجمع بين البحث المتجهي وRAG ورسم معرفة زمني لتجاوز ما يمكن لأي أداة بحث واحدة في خزانة واحدة أن تفعله. معرفتك لا تعيش كلها في ملفات markdown. أوراق البحث، مقالات الويب، فيديوهات YouTube، البودكاست، المستندات المرجعية — الأشياء التي جمعتها من خارج خزانتك — تحتاج مكاناً أيضاً. وبمجرد أن يكون لها مكان، يمكنك البدء بطرح أسئلة عبر كل ذلك والحصول على إجابات مع المصادر.
هذا المقال جزء من سلسلة إدارة المعرفة المدعومة بالـ AI. السابق: من المجلدات إلى قاعدة المعرفة. التالي: ما وراء Obsidian — بناء قاعدة معرفة خارجية باستخدام Sift.