غالبًا لا. بالنسبة لمجلد يحتوي على عقود أو تقارير أو رسائل بريد إلكتروني، يجد وكيل الذكاء الاصطناعي المزود بأداة بحث نص كامل الملفات المناسبة، يقرأ فقط المقاطع المطابقة ويستشهد بها، ويعمل الفهرس محليًا دون نموذج تضمين ولا مخزن متجهات. يوفّر GroupDocs.Search.Mcp لـ Claude Desktop و Claude Code و Cursor أو Copilot هذه الأداة بأمر Docker واحد:

قم بفهرسة مجلد العقود، ثم أخبرني أي العقود تذكر غرامة إنهاء و اقتبس الفقرة.

الإصدار خطوة بخطوة مع التكوين واستكشاف الأخطاء موجود في الوثائق: كيفية البحث في المستندات باستخدام وكلاء الذكاء الاصطناعي باستخدام MCP.

لماذا يلجأ الجميع إلى التضمينات أولاً؟

لأن “التوليد المعزز بالاسترجاع” ظهر كطريقة: تقسيم المستندات إلى قطع، تضمين كل قطعة، تخزين المتجهات، تضمين السؤال، أخذ القطع الأقرب ولصقها في المطالبة. هذا يعمل، وللأسئلة التي لا تشبه صياغة المستندات فهو الأداة المناسبة. لكن ذلك خط أنابيب يتطلب نموذج تضمين للاتصال، مخزن للتشغيل، ضبط التجزيء، ووظيفة إعادة التضمين في كل مرة تتغير فيها المستندات. بالنسبة لسؤال “أي من عقودي الـ300 يذكر غرامة إنهاء”، فإن هذه الآلية تجيب سؤالًا يجيب عنه فهرس البحث مباشرة.

الدليل وصل إلى حد التوافق مع الحدس. دراسة نُشرت على arXiv في أواخر 2025 (البحث بالكلمات المفتاحية هو كل ما تحتاجه) قدمت للوكيل مجرد بحث بالكلمات المفتاحية وتعابير regex على مجلد وقارنتها بخط أنابيب RAG قياسي: أكثر من 90% من درجات RAG، دون قاعدة بيانات متجهات، وأكثر ملاءمة للمجموعات التي تتغير كثيرًا. وقد أظهر وكلاء البرمجة هذا النمط عمليًا: يبحثون باستخدام grep، ثم يصقلون، ثم يبحثون مرة أخرى.

ماذا يفعل الوكيل بدلاً من ذلك؟

ثلاثة استدعاءات. يوفّر GroupDocs.Search.Mcp ثمانية أدوات؛ الحلقة تحتاج إلى ثلاثة منها:

user              agent                         Search MCP server
 |  "Which contracts mention a termination penalty?"           |
 |---------------->|                                           |
 |                 |-- add_to_index ------------------------->|  reads the
 |                 |   {"documentsPath":"contracts",           |  files once,
 |                 |    "indexName":"contracts"}               |  stores text
 |                 |<- "5 document(s) added, 5 in the index" --|
 |                 |-- search ------------------------------->|
 |                 |   {"query":"termination AND penalty"}     |
 |                 |<- {"documentsFound":3, "documents":[ ... |  which files
 |                 |-- get_text_fragments ------------------->|
 |                 |   {"query":"\"termination penalty\""}     |
 |                 |<- === contracts/acme-...-agreement.pdf ===|  the passages
 |<- "Two contracts carry one: Acme (3 monthly fees, 12.3),    |
 |    Globex (50% of the remaining fees). Initech excludes it."|

add_to_index يقرأ الملفات مرة واحدة ويحفظ النص في فهرس مسمى على القرص. search يُرجع الملفات المطابقة كـ JSON مع عدد مرات الظهور. get_text_fragments يُرجع كل مطابقة مع بضع كلمات من السياق، بحيث يقتبس الوكيل الفقرة بدلاً من تحميل العقد بالكامل.

إليك ما أعاده الخادم فعليًا في اختبارنا، ضد خمسة عقود اصطناعية:

-> search {"query":"termination AND penalty","indexName":"contracts"}
<- documentsFound 3: acme-master-services-agreement.pdf,
   globex-consulting-agreement.docx, initech-nda.docx

-> get_text_fragments {"query":"\"termination penalty\"",...}
<- === contracts/acme-master-services-agreement.pdf (1 occurrence(s)) ===
     …a termination penalty of three monthly fees applies, payable
     within 30…
   === contracts/globex-consulting-agreement.docx (1 occurrence(s)) ===
     …Early termination penalty: the Client pays 50 percent of the fees…

لاحظ العقد الثالث. مطابقة اتفاقية عدم الإفشاء من Initech لـ termination AND penalty لأنها تقول “لا توجد رسوم ولا غرامة مرتبطة بالإنهاء” . المقطع هو ما يميز المطابقة عن الإشارة، والوكيل الذي يقرأ المقاطع يوضح ذلك. هذا هو التثبيت: كل ادعاء في الإجابة يشير إلى ملف وجملة يمكنك فتحها.

أين ينجح كل نهج؟

خط أنابيب التضمين                       بحث نص كامل وكيل
-------------------------------------    -------------------------------------
تقسيم، تضمين، تخزين في مخزن متجهات    add_to_index: فهرس نص كامل محلي
تضمين السؤال، أخذ أعلى k قطع          الوكيل يبحث، يصقل، يبحث مرة أخرى
لصق القطع في المطالبة                 get_text_fragments: مقاطع مقتبسة
إعادة التضمين عندما تتغير المستندات   update_index يعيد قراءة ما تغير
يحتاج إلى نموذج تضمين ومخزن           لا استدعاءات نموذج، لا شبكة أثناء التشغيل
يطابق المعنى؛ الترتيب غير شفاف        يطابق الكلمات؛ كل نتيجة قابلة للتفسير

يفشل بحث النص الكامل عندما لا تشترك السؤال والمستند في أي كلمة: “أي العقود تشكل خطرًا علينا؟” لا يحتوي على كلمة مفتاحية. ينجح عندما تكون المفردات مشتركة، وهو ما يصف معظم الأسئلة التي يطرحها الناس حول مستنداتهم: اسم بند، منتج، عميل، رقم فاتورة، نطاق تاريخ. عندما لا يتطابق الاستعلام، يحاول الوكيل renewal OR renews، أو مطابقة غير دقيقة، كما يفعل الشخص. يساعد الخادم: استعلام من كلمتين غير مقتبس لا يطابق شيئًا في GroupDocs.Search، والنتيجة الفارغة تحمل hint يخبر الوكيل باقتباس العبارة.

أي أداة لأي سؤال؟

المستخدم يطلب الوكيل يستدعي
“فهرس هذا المجلد” add_to_index
“أي ملفات تذكر X؟” search
“ماذا يقول عن X؟” get_text_fragments
“تم تغيير الملفات، تحديث” update_index
“انسَ مجلد المسودات” remove_from_index
“ما الموجود في الفهرس؟” get_index_info
“ابدأ فهرسًا منفصلًا” create_index
“لماذا فقط 10 نتائج؟” get_license_status

الفهرس يدعم 82 تنسيقًا، بما في ذلك PDF، Office، OpenDocument، HTML، وأرشيفات البريد الإلكتروني (PST، OST، MSG، EML) مع مرفقاتها.

كيف تشغّله؟

claude mcp add groupdocs-search -- docker run --rm -i \
  -v /path/to/documents:/data ghcr.io/groupdocs-search/search-net-mcp:latest

Cursor، Claude Desktop، VS Code مع GitHub Copilot والعملاء الآخرين يستخدمون نفس الحاوية في ملف الإعداد الخاص بهم: التسجيل في عملاء الذكاء الاصطناعي. على لينكس أضف --user "$(id -u):$(id -g)" حتى تتمكن الحاوية من كتابة فهرسها في مجلدك. الخادم يشغّل محرك GroupDocs.Search 26.10، الذي يجعل تنسيق الفهرس الجديد الفهارس أصغر ويقلل تقريبًا استهلاك الذاكرة إلى النصف (ملاحظات الإصدار).

حدود صريحة

  • في وضع التقييم، يحتوي الفهرس على حد أقصى 100 مستند وتُعيد عملية البحث بحد أقصى 10 نتائج؛ كل استجابة تشير إلى ذلك. استدعِ get_license_status أولاً.
  • هو بحث نص كامل، ليس بحثًا دلاليًا: يطابق الكلمات، لا المعنى.
  • لا يوجد OCR: ملفات PDF الممسوحة ضوئيًا بدون طبقة نص تُفهرس فقط بخصائص الملف.
  • يتوفر فقط كصورة Docker (الأداة المعبأة تتجاوز حد حجم NuGet).

الأسئلة المتكررة

هل يمكن لـ Claude البحث في مستنداتي المحلية دون رفعها؟
نعم. الخادم يعمل داخل حاوية على جهازك ويقرأ المجلد الذي تقوم بتركيبه؛ فقط المقاطع التي يقتبسها الوكيل تصل إلى النموذج.

هل هذا RAG؟
إنه استرجاع معزز، لكن وكيل: النموذج يقرر ما الذي يبحث عنه ومتى يكون لديه ما يكفي، باستخدام فهرس نص كامل بدلاً من التضمينات.

ماذا يحدث عندما تتغير مستنداتي؟
اطلب من الوكيل التحديث. update_index يعيد قراءة الملفات التي تغيرت أو أضيفت أو حُذفت فقط.

تعمّق