🚀 جرب Zilliz Cloud، الـ Milvus المدارة بالكامل، مجاناً — تجربة أداء أسرع بـ 10 أضعاف! جرب الآن>>

milvus-logo
LFAI
  • Home
  • Blog
  • لقد بنيت بحثًا عميقًا باستخدام المصادر المفتوحة - ويمكنك ذلك أيضًا!

لقد بنيت بحثًا عميقًا باستخدام المصادر المفتوحة - ويمكنك ذلك أيضًا!

  • Tutorials
February 06, 2025
Stefan Webb

حسناً، في الواقع، وكيل محدود النطاق يمكنه التفكير والتخطيط واستخدام الأدوات وما إلى ذلك لإجراء بحث باستخدام ويكيبيديا. ومع ذلك، ليس سيئًا لبضع ساعات من العمل...

ما لم تكن مقيمًا تحت صخرة، أو في كهف، أو في دير جبلي بعيد، فستكون قد سمعت عن إطلاق OpenAI لـ OpenAI لـ Deep Research في 2 فبراير 2025. يعد هذا المنتج الجديد بإحداث ثورة في كيفية إجابتنا على الأسئلة التي تتطلب تجميع كميات كبيرة من المعلومات المتنوعة.

تكتب استفسارك، وتحدد خيار البحث العميق، وتقوم المنصة بالبحث في الويب بشكل مستقل، وتقوم بإجراء الاستدلال على ما تكتشفه، وتجمع مصادر متعددة في تقرير متماسك ومقتبس بالكامل. يستغرق الأمر عدة أوامر من حيث الحجم لإنتاج مخرجاته مقارنةً بروبوت الدردشة الآلي القياسي، ولكن النتيجة تكون أكثر تفصيلاً وأكثر استنباطاً ودقة.

كيف تعمل هذه التقنية؟

ولكن كيف تعمل هذه التقنية، ولماذا تُعد تقنية البحث العميق تحسناً ملحوظاً مقارنةً بالمحاولات السابقة (مثل البحث العميق من جوجل - تنبيه وارد بشأن نزاع على علامة تجارية)؟ سنترك هذا الأخير لمنشور مستقبلي. أما بالنسبة للسابق، فلا شك أن هناك الكثير من "الصلصة السرية" الكامنة وراء Deep Research. يمكننا أن نستخلص بعض التفاصيل من منشور إصدار OpenAI، والذي ألخصه فيما يلي.

يستغل Deep Research التطورات الحديثة في النماذج التأسيسية المتخصصة في مهام الاستدلال:

  • "... تم ضبطه على نموذج الاستدلال OpenAI o3 القادم..."

  • "... يستفيد من الاستدلال للبحث في كميات هائلة من النصوص وتفسيرها وتحليلها..."

يستخدم "البحث العميق" سير عمل وكيلي متطور مع التخطيط والتفكير والذاكرة:

  • "... تعلّم تخطيط وتنفيذ مسار متعدد الخطوات..."

  • "... التراجع والتفاعل مع المعلومات في الوقت الفعلي..."

  • "... التمحور حسب الحاجة كرد فعل على المعلومات التي تواجهها..."

يتم تدريب برنامج Deep Research على بيانات خاصة باستخدام عدة أنواع من الضبط الدقيق، وهو على الأرجح عنصر أساسي في أدائه:

  • "... تم تدريبه باستخدام التعلّم المعزز الشامل على مهام التصفح والاستدلال الصعبة عبر مجموعة من المجالات..."

  • "... مُحسّن لتصفح الويب وتحليل البيانات..."

إن التصميم الدقيق لسير عمل الوكيل هو سر، ومع ذلك، يمكننا بناء شيء ما بأنفسنا استنادًا إلى أفكار راسخة حول كيفية هيكلة الوكلاء.

ملاحظة واحدة قبل أن نبدأ: من السهل أن تنجرف وراء حمى الذكاء الاصطناعي التوليدي، خاصةً عندما يتم إصدار منتج جديد يبدو أنه خطوة في التحسين. ومع ذلك، فإن الأبحاث العميقة، كما تقر OpenAI، لها قيود مشتركة بين تقنيات الذكاء الاصطناعي التوليدي. يجب أن نتذكر أن نفكر بشكل نقدي في المخرجات من حيث أنها قد تحتوي على حقائق خاطئة ("هلوسات")، وتنسيق واستشهادات غير صحيحة، وتختلف بشكل كبير في الجودة بناءً على البذرة العشوائية.

هل يمكنني بناء ما يخصني؟

بالتأكيد! دعونا نبني "بحثنا العميق" الخاص بنا، يعمل محليًا وباستخدام أدوات مفتوحة المصدر. سوف نتسلح فقط بمعرفة أساسية بالذكاء الاصطناعي التوليدي، والحس السليم، وبضع ساعات عمل إضافية، ووحدة معالجة الرسومات، وMilvus وDebSeek R1 وLangChain مفتوحة المصدر.

لا يمكننا أن نأمل في تكرار أداء OpenAI بالطبع، ولكن نموذجنا الأولي سيُظهر بالحد الأدنى بعض الأفكار الرئيسية التي من المحتمل أن تكون وراء تقنيتهم، حيث يجمع بين التقدم في نماذج التفكير مع التقدم في سير العمل العميل. والأهم من ذلك، وعلى عكس OpenAI، سنستخدم أدوات مفتوحة المصدر فقط، وسنكون قادرين على نشر نظامنا محلياً - فالمصدر المفتوح يوفر لنا مرونة كبيرة بالتأكيد!

سنضع بعض الافتراضات المبسطة لتقليل نطاق مشروعنا:

  • سنستخدم وضع استدلالي مفتوح المصدر تم تقطيره ثم تكميمه لـ 4 بت يمكن تشغيله محلياً.

  • لن نقوم بإجراء ضبط إضافي على نموذج الاستدلال الخاص بنا بأنفسنا.

  • الأداة الوحيدة التي يمتلكها وكيلنا هي القدرة على تنزيل صفحة ويكيبيديا وقراءتها وإجراء استعلامات RAG منفصلة (لن يكون لدينا إمكانية الوصول إلى الويب بالكامل).

  • سيعالج وكيلنا البيانات النصية فقط، وليس الصور وملفات PDF، إلخ.

  • لن يتراجع وكيلنا أو يأخذ في الاعتبار المحاور.

  • سيتحكم وكيلنا (ليس بعد) في تدفق التنفيذ الخاص به بناءً على مخرجاته.

  • تحتوي ويكيبيديا على الحقيقة والحقيقة الكاملة ولا شيء غير الحقيقة.

سنستخدم Milvus لقاعدة بياناتنا المتجهة، وDeepSeek R1 كنموذج استدلالي لدينا، وLangChain لتنفيذ RAG. لنبدأ!

سنستخدم نموذجنا الذهني لكيفية إجراء البشر للبحث لتصميم سير عمل الوكيل:

تحديد/تحديد السؤال

يبدأ البحث بتحديد السؤال. نعتبر أن السؤال هو استفسار المستخدم، ومع ذلك، فإننا نستخدم نموذجنا المنطقي لضمان التعبير عن السؤال بطريقة محددة وواضحة ومركزة. أي أن خطوتنا الأولى هي إعادة كتابة المطالبة واستخراج أي استفسارات فرعية أو أسئلة فرعية. نحن نستفيد بشكل فعال من تخصص نماذجنا الأساسية للتفكير، وطريقة بسيطة للإخراج المنظم JSON.

فيما يلي مثال على تتبع الاستدلال حيث يقوم DeepSeek بتنقيح السؤال "كيف تغيرت الجبيرة بمرور الوقت؟

<think>

Alright, so I need to break down the question "How has the cast changed over time?" related to the evolution of The Simpsons. Let me think about what aspects are involved here.

First, I know that the cast has changed a lot, but I need to figure out the intermediate questions to approach this. The main question is about changes in the cast over time, so I should consider different areas that contribute to this change.

I guess the first sub-question would be about the original cast members. Who were the main voices and how did they evolve? Then, there might be new cast additions over the years, so another sub-question about that.

Also, some original voice actors have left, so I should include a sub-question about departures. Then, new voice actors joining would be another point.

The show has been popular for a long time, so recurring roles changing might be another aspect. Additionally, the role of the show in society might have influenced casting choices, so a sub-question about that.

Lastly, the overall impact on the cast's careers could be another angle. So, I should list these as sub-questions to cover all aspects.

</think>

بعد ذلك، نجري "مراجعة أدبية" لمقالات ويكيبيديا. في الوقت الراهن، نقرأ مقالًا واحدًا ونترك التنقل بين الروابط إلى تكرار مستقبلي. اكتشفنا أثناء وضع النماذج الأولية أن استكشاف الروابط يمكن أن يصبح مكلفًا للغاية إذا كان كل رابط يتطلب استدعاءً لنموذج الاستدلال. نقوم بتحليل المقالة وتخزين بياناتها في قاعدة بياناتنا المتجهة، Milvus، على غرار تدوين الملاحظات.

فيما يلي مقتطف شيفرة توضح كيف نخزن صفحة ويكيبيديا في ميلفوس باستخدام تكاملها مع لانغ تشين:

wiki_wiki = wikipediaapi.Wikipedia(user_agent='MilvusDeepResearchBot (<insert your email>)', language='en')
page_py = wiki_wiki.page(page_title)

text_splitter = RecursiveCharacterTextSplitter(chunk_size=2000, chunk_overlap=200)
docs = text_splitter.create_documents([page_py.text])

vectorstore = Milvus.from_documents(  # or Zilliz.from_documents
    documents=docs,
    embedding=embeddings,
    connection_args={
        "uri": "./milvus_demo.db",
    },
    drop_old=True, 
    index_params={
        "metric_type": "COSINE",
        "index_type": "FLAT",  
        "params": {},
    },
)

تحليل

يعود الوكيل إلى أسئلته ويجيب عليها بناءً على المعلومات ذات الصلة في المستند. سنترك سير عمل التحليل/التفكير متعدد الخطوات للعمل المستقبلي، بالإضافة إلى أي تفكير نقدي حول مصداقية مصادرنا وتحيزها.

فيما يلي مقتطف كود يوضّح إنشاء RAG باستخدام LangChain والإجابة على أسئلتنا الفرعية بشكل منفصل.

# Define the RAG chain for response generation
rag_chain = (
    {"context": retriever | format_docs, "question": RunnablePassthrough()}
    | prompt
    | llm
    | StrOutputParser()
)

# Prompt the RAG for each question
answers = {}
total = len(leaves(breakdown))

pbar = tqdm(total=total)
for k, v in breakdown.items():
    if v == []:
        print(k)
        answers[k] = rag_chain.invoke(k).split('</think>')[-1].strip()
        pbar.update(1)
    else:
        for q in v:
            print(q)
            answers[q] = rag_chain.invoke(q).split('</think>')[-1].strip()
            pbar.update(1)

التوليف

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

انظر دفتر الملاحظات المرفق للاطلاع على الشيفرة الكاملة وملف التقرير المحفوظ للحصول على مثال على المخرجات.

النتائج

استفسارنا للاختبار هو "كيف تغيرت عائلة سمبسون مع مرور الوقت؟" ومصدر البيانات هو مقالة ويكيبيديا عن "عائلة سمبسون". فيما يلي قسم واحد من التقرير الذي تم إنشاؤه:

ملخص: ما بنيناه وما هو التالي

في غضون ساعاتٍ قليلة، قمنا بتصميم سير عملٍ أساسيٍ عميلٍ يمكن أن يستنتج ويخطط ويسترجع المعلومات من ويكيبيديا لإنشاء تقرير بحثي منظم. على الرغم من أن هذا النموذج الأولي بعيدٌ كل البعد عن OpenAI's Deep Research، إلا أنه يوضح قوة الأدوات مفتوحة المصدر مثل Milvus وDebSeek وLangChain في بناء وكلاء بحث مستقلين.

بالطبع، هناك مجال كبير للتحسين. يمكن للتكرارات المستقبلية

  • التوسع إلى ما هو أبعد من ويكيبيديا للبحث في مصادر متعددة بشكل ديناميكي

  • إدخال التتبع العكسي والتفكير لتحسين الاستجابات

  • تحسين تدفق التنفيذ بناءً على تفكير الوكيل نفسه

يمنحنا المصدر المفتوح المرونة والتحكم الذي لا يمنحه المصدر المغلق. سواء للبحث الأكاديمي، أو لتوليف المحتوى، أو المساعدة المدعومة بالذكاء الاصطناعي، فإن بناء وكلاء البحث الخاص بنا يفتح لنا إمكانيات مثيرة. ترقبوا المنشور التالي حيث نستكشف إضافة استرجاع الويب في الوقت الحقيقي، والاستدلال متعدد الخطوات، وتدفق التنفيذ المشروط!

الموارد

Like the article? Spread the word

استمر في القراءة