دروس

بناء أنابيب RAG مع بيانات الويب: دليل شامل 2026

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

✍️
ParseFlow
12 دقائق قراءة
/* Featured Image */
رسم تخطيطي لشبكة عصبية للذكاء الاصطناعي يوضح هندسة RAG مع مصادر بيانات الويب

بصفتنا شركاء لـ Apify، قد نحصل على عمولة من عمليات الشراء المؤهلة التي تتم من خلال روابطنا، دون أي تكلفة إاضافية عليك. نحن نوصي فقط بالأدوات التي نثق بها.

نماذج اللغة الكبيرة (LLMs) قوية، لكن لديها قيد حاسم: معرفتها مجمدة في وقت التدريب. التوليد المعزز بالاسترجاع (RAG) يحل هذا بربط LLMs بقواعد معرفة خارجية، مما يمكنها من الوصول إلى معلومات حالية ومتخصصة بالمجال.

استخراج الويب هو المفتاح لبناء أنظمة RAG قوية. مع 65% من المؤسسات تستخدم الآن بيانات الويب لمشاريع AI/ML وسوق استخراج الويب يصل إلى 1.03 مليار دولار في 2025، دمج هذه التقنيات أصبح ضرورياً لتطبيقات الذكاء الاصطناعي التنافسية.

ما هو RAG ولماذا هو مهم؟

هندسة RAG

يجمع RAG بين مكونين:

  1. الاسترجاع: إيجاد المستندات ذات الصلة من قاعدة المعرفة
  2. التوليد: استخدام LLM لتوليد إجابات بناءً على السياق المسترجع
استعلام المستخدم → التضمين → البحث المتجهي → المستندات ذات الصلة → LLM → الاستجابة

المزايا مقارنة بالضبط الدقيق

الجانب RAG الضبط الدقيق
حداثة البيانات تحديثات فورية يتطلب إعادة التدريب
التكلفة أقل (بدون تدريب) تكاليف حوسبة عالية
الشفافية إسناد المصدر صندوق أسود
الصيانة تحديث المستندات إعادة تدريب النموذج
التكيف مع المجال إضافة مصادر جديدة بيانات تدريب جديدة

حالات استخدام RAG الشائعة

  • روبوتات دعم العملاء مع وثائق المنتج
  • مساعدو البحث مع الأوراق الأكاديمية
  • البحث المؤسسي عبر المستندات الداخلية
  • استخبارات السوق مع بيانات المنافسين
  • البحث القانوني مع القضايا واللوائح

لماذا بيانات الويب لـ RAG؟

يوفر استخراج الويب مزايا فريدة لأنظمة RAG:

1. المعلومات الفورية

على عكس مجموعات المستندات الثابتة، يوفر استخراج الويب:

  • الأخبار العاجلة والتحديثات
  • الأسعار والتوافر الحالي
  • بيانات السوق الحية
  • المناقشات والمراجعات الأخيرة

2. التغطية المجالية

يحتوي الويب على معرفة متخصصة في كل موضوع تقريباً:

  • المنتديات والمجتمعات المتخصصة بالصناعة
  • الوثائق التقنية والأدلة
  • البحث الأكاديمي والمنشورات
  • البيانات واللوائح الحكومية

3. الاستخبارات التنافسية

راقب وأدرج:

  • معلومات منتجات المنافسين
  • اتجاهات السوق والتحليل
  • ملاحظات العملاء والمراجعات
  • معايير الصناعة

بناء أنبوب RAG الخاص بك: خطوة بخطوة

الخطوة 1: حدد مجال معرفتك

قبل الاستخراج، حدد بوضوح:

السؤال مثال للإجابة
ما المواضيع التي يجب أن يعرفها النظام؟ ميزات المنتج، الأسعار، المقارنات
ما المصادر الموثوقة؟ الوثائق الرسمية، منشورات الصناعة
كم مرة تتغير المعلومات؟ يومياً للأسعار، أسبوعياً للميزات
ما نوع استعلام المستخدم المستهدف؟ “ما أفضل X لـ Y؟”

الخطوة 2: حدد واجمع مصادر الويب

معايير اختيار المصدر:

  • الصلة: يعالج مباشرة مجالك
  • السلطة: معلومات موثوقة ودقيقة
  • الحداثة: محتوى محدث بانتظام
  • البنية: تنسيق سهل التحليل
  • إمكانية الوصول: يسمح بالاستخراج (تحقق من robots.txt)

أنواع المصادر الشائعة:

نوع المصدر الأفضل لـ مثال
الوثائق معرفة المنتج مواقع الوثائق الرسمية
المنتديات رؤى المجتمع Reddit، Stack Overflow
مواقع الأخبار الأحداث الجارية منشورات الصناعة
مواقع المراجعات مشاعر المستخدمين G2، Trustpilot
التجارة الإلكترونية بيانات المنتجات Amazon، المتاجر المتخصصة
الحكومة اللوائح مواقع .gov

الخطوة 3: إعداد المستخرج

باستخدام زاحف محتوى الموقع:

{
  "startUrls": ["https://docs.example.com"],
  "maxCrawlDepth": 3,
  "maxPagesPerCrawl": 1000,
  "includeUrlPatterns": ["/docs/*", "/guides/*"],
  "excludeUrlPatterns": ["/blog/*", "/news/*"],
  "extractContent": true,
  "removeNavigation": true,
  "outputFormat": "markdown"
}

الإعدادات الرئيسية:

  • maxCrawlDepth: عمق الروابط المتبعة
  • includeUrlPatterns: التركيز على الأقسام ذات الصلة
  • removeNavigation: إزالة الرؤوس/التذييلات للنص الأنظف
  • outputFormat: Markdown يحافظ على البنية للتقطيع

الخطوة 4: معالجة وتنظيف البيانات

تحتاج بيانات الويب الخام للمعالجة قبل التضمين:

خطوات التنظيف:

  1. إزالة القوالب - التنقل، الإعلانات، التذييلات
  2. استخراج المحتوى الرئيسي - نص المقال، نص الوثائق
  3. تطبيع التنسيق - markdown/HTML متسق
  4. إزالة التكرار - حذف المحتوى المكرر
  5. فلترة الجودة - الحد الأدنى لطول المحتوى، كشف اللغة

مثال Python:

def clean_document(raw_html):
    # استخراج المحتوى الرئيسي
    soup = BeautifulSoup(raw_html, 'html.parser')

    # إزالة التنقل والإعلانات والتذييلات
    for element in soup.select('nav, header, footer, .ads'):
        element.decompose()

    # الحصول على محتوى النص
    text = soup.get_text(separator='\n')

    # تطبيع المسافات البيضاء
    text = re.sub(r'\n{3,}', '\n\n', text)

    return text.strip()

الخطوة 5: تقطيع المستندات

تقسيم المستندات إلى قطع أمر حاسم لجودة الاسترجاع:

استراتيجيات التقطيع:

الاستراتيجية الأفضل لـ حجم القطعة
الحجم الثابت المحتوى العام 500-1000 رمز
قائم على الفقرات الوثائق المهيكلة فواصل طبيعية
دلالي الموضوعات المعقدة حدود المعنى
هرمي المستندات الطويلة قطع أب-ابن

النهج الموصى به:

from langchain.text_splitter import RecursiveCharacterTextSplitter

splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200,
    separators=["\n\n", "\n", ". ", " "]
)

chunks = splitter.split_text(document)

نصائح احترافية:

  • أدرج تداخل 200 رمز للحفاظ على السياق عبر القطع
  • احتفظ بـ البيانات الوصفية (URL، العنوان، التاريخ) مرفقة بكل قطعة
  • اختبر جودة الاسترجاع بأحجام قطع مختلفة

الخطوة 6: توليد التضمينات

حول قطع النص إلى تضمينات متجهية:

نماذج التضمين الشائعة (2025):

النموذج الأبعاد السرعة الجودة
OpenAI text-embedding-3-large 3072 سريع ممتازة
Cohere embed-v3 1024 سريع ممتازة
Voyage-2 1024 متوسط ممتازة
BGE-large-en 1024 سريع جيدة جداً
E5-large-v2 1024 سريع جيدة جداً

مثال مع OpenAI:

from openai import OpenAI

client = OpenAI()

def get_embedding(text):
    response = client.embeddings.create(
        model="text-embedding-3-large",
        input=text
    )
    return response.data[0].embedding

embeddings = [get_embedding(chunk) for chunk in chunks]

الخطوة 7: التخزين في قاعدة بيانات متجهية

اختر قاعدة بيانات متجهية لحالتك:

قاعدة البيانات الأفضل لـ خيار مستضاف
Pinecone الإنتاج على نطاق واسع نعم
Weaviate البحث الهجين نعم
Qdrant الاستضافة الذاتية نعم
Chroma التطوير لا
pgvector مستخدمي PostgreSQL لا

مثال Pinecone:

import pinecone

pinecone.init(api_key="YOUR_KEY")
index = pinecone.Index("web-knowledge")

vectors = [
    {
        "id": f"chunk_{i}",
        "values": embedding,
        "metadata": {
            "text": chunk,
            "source_url": url,
            "scraped_date": date
        }
    }
    for i, (embedding, chunk) in enumerate(zip(embeddings, chunks))
]

index.upsert(vectors=vectors)

الخطوة 8: تنفيذ الاسترجاع

استعلم قاعدة البيانات المتجهية لإيجاد السياق ذي الصلة:

def retrieve_context(query, top_k=5):
    # تضمين الاستعلام
    query_embedding = get_embedding(query)

    # البحث في قاعدة البيانات المتجهية
    results = index.query(
        vector=query_embedding,
        top_k=top_k,
        include_metadata=True
    )

    # استخراج النص من النتائج
    contexts = [match.metadata["text"] for match in results.matches]
    sources = [match.metadata["source_url"] for match in results.matches]

    return contexts, sources

الخطوة 9: توليد الاستجابات

ادمج السياق المسترجع مع LLM:

def generate_response(query):
    # استرجاع السياق ذي الصلة
    contexts, sources = retrieve_context(query)

    # بناء الموجه مع السياق
    prompt = f"""أجب على السؤال بناءً على السياق التالي.

السياق:
{chr(10).join(contexts)}

السؤال: {query}

قدم إجابة شاملة واستشهد بمصادرك."""

    # التوليد مع LLM
    response = client.chat.completions.create(
        model="gpt-4-turbo",
        messages=[{"role": "user", "content": prompt}]
    )

    return response.choices[0].message.content, sources

تقنيات RAG المتقدمة

البحث الهجين

ادمج التشابه المتجهي مع مطابقة الكلمات المفتاحية:

results = client.query.get("Document", ["text", "source"])\
    .with_hybrid(
        query="تسعير المنتج",
        alpha=0.5  # التوازن بين المتجهي والكلمات المفتاحية
    )\
    .with_limit(5)\
    .do()

إعادة الترتيب

حسن جودة الاسترجاع بمرتب مرحلة ثانية:

from cohere import Client

co = Client("YOUR_KEY")

def rerank_results(query, documents, top_k=3):
    results = co.rerank(
        query=query,
        documents=documents,
        model="rerank-english-v2.0",
        top_n=top_k
    )
    return [documents[r.index] for r in results]

توسيع الاستعلام

حسن الاستدعاء بتوسيع الاستعلام الأصلي:

def expand_query(original_query):
    prompt = f"""ولد 3 صياغات بديلة لاستعلام البحث هذا:
    "{original_query}"

    أرجع الاستعلامات البديلة فقط، واحد في كل سطر."""

    response = client.chat.completions.create(
        model="gpt-4-turbo",
        messages=[{"role": "user", "content": prompt}]
    )

    expansions = response.choices[0].message.content.split('\n')
    return [original_query] + expansions

التحديثات المجدولة

حافظ على حداثة قاعدة معرفتك مع الاستخراج الآلي:

from apify_client import ApifyClient

client = ApifyClient("YOUR_TOKEN")

run = client.actor("your-scraper").call(
    run_input={
        "startUrls": ["https://docs.example.com"],
        "maxPages": 100
    }
)

new_documents = client.dataset(run["defaultDatasetId"]).list_items().items
update_vector_store(new_documents)

التوصيل الإنتاجي: Bedrock وLangChain وn8n وMCP

الخطوات 1–9 أعلاه تبني أنبوباً يعمل؛ وهذا القسم يوصله بالإنتاج لتتدفق بيانات الويب الحديثة دون متابعة يدوية. وهو يتبع نفس هندسة كتاب وصفات خط البيانات الحية: MCP مع n8n وLangChain (2026) — اقرأه تالياً للإعداد الكامل عقدةً بعقدة.

طبقة النماذج على Amazon Bedrock

لا شيء في الخطوتين 6 و9 يقيّدك بمزود واحد. إذا كانت بياناتك يجب أن تبقى داخل حدود AWS، استضف المرحلتين على Amazon Bedrock: استبدل استدعاء التضمين في الخطوة 6 بنموذج تضمين مستضاف على Bedrock (مثل Amazon Titan Embeddings) واستدعاء المحادثة في الخطوة 9 بنموذج LLM مستضاف على Bedrock (مثل Claude) عبر واجهات converse/invoke. شكل الأنبوب — قطّع، ضمّن، خزّن، استرجع، ولّد — لا يتغير؛ فقط عميلا الـ API يتغيران. ثبّت نموذج التضمين منذ البداية: تبديله لاحقاً يعني إعادة تضمين المخزن كله.

توصيل المسترجع مع LangChain

الخطوة 5 تقسّم النصوص؛ والإنتاج يحتاج هذا المقسّم موصولاً بمسترجع. الشكل المعياري هو ApifyDatasetLoader (تحميل مباشر من مجموعة بيانات تشغيل منتهٍ) ← RecursiveCharacterTextSplitter (إعدادات الخطوة 5) ← مخزن متجهي مثل Qdrant ← سلسلة استرجاع بموجه نظامي يطلب الاستشهاد بالمصادر. وقاعدتان تنتقلان من كتاب الوصفات: مجموعة واحدة لكل شكل بيانات (الوثائق مقابل الأخبار) حتى لا تخفف النتائج الخاطئة دقة أفضل النتائج، وبيانات وصفية على كل قطعة — رابط المصدر والأداة وتاريخ الزحف — لتستشهد الإجابات بمصدر كل حقيقة وقدمها.

الأتمتة مع n8n

استبدل سكربت الجدولة من عصر الخطوة 9 بسير عمل مرئي: مشغّل مجدول يعمل حسب الإيقاع، وعقدة طلب HTTP تبدأ تشغيل الأداة بمدخلات الخطوة 3، ومشغّل Webhook يستقبل معرف مجموعة البيانات المنتهية، وعقدة تنزيل تجلب العناصر، وعقدة Code تطبّع كل سجل لوثيقة قانونية واحدة (url، title، text، source، crawledAt) مع إزالة التكرار على الرابط القانوني، وبوابة جودة IF توجه الدفعات الفارغة لتنبيه، وعقدة تضمين-زائد-مخزن-متجهي تُدخل الناجين. فصل “بدء التشغيل” عن “استقبال مجموعة البيانات” مهم — التشغيلات تستغرق دقائق، ولا يجب أن يبقى أي تنفيذ لسير العمل خاملاً منتظراً.

MCP: دع الوكيل يطلب استخراجاً جديداً

الفهرسة المجدولة تغطي كل سؤال يتحمل تأخر التحديث. أما الباقي — خبر عاجل منذ سحب الصباح، أو صفحة تغيرت قبل ساعة — فامنح الوكيل خادم MCP من Apify ليطلب تشغيل أداة جديدة عند الحاجة، مع تحديد maxItems بسقف وتقييد startUrls بالنطاقات المعتمدة. قاعدة القرار من كتاب الوصفات بسيطة عمداً: أجب من المسترجع أولاً، واستخرج عند الطلب فقط عندما يكون السياق ناقصاً أو قديماً، ثم أعد إرسال النتيجة الجديدة لتستقبلها الفهرسة الدافئة في السؤال المماثل التالي.

مخرجات Markdown واستراتيجية التحديث

تفصيلان يحددان نجاح كل ما سبق. أولاً، حافظ على مخرجات Markdown من الزاحف: إعداد outputFormat: "markdown" من الخطوة 3 يحفظ العناوين والقوائم، وهي تتقطع أنظف بكثير من النص المسطح — البنية تبقى حية داخل التضمينات. ثانياً، حدد إيقاع التحديث حسب إيقاع القرار لا الحماس: يومياً للأخبار وكل ما تضلل فيه إجابة الأمس، وأسبوعياً للوثائق والمصادر الدائمة، وعند الطلب عبر MCP للباقي — وسجّل الإيقاع بجانب البيانات (أي أداة، وأي روابط، وأي تاريخ)، لأنه بعد ستة أشهر لن تفسر إجابة غريبة إلا إذا عرفت بالضبط ما قيس ومتى.

أفضل الممارسات

جودة البيانات

  • ✅ تحقق من سلطة المصدر قبل الإدراج
  • ✅ فلتر المحتوى منخفض الجودة أو الخفيف
  • ✅ حافظ على الحداثة بالتحديثات المنتظمة
  • ✅ تتبع نسب البيانات للتصحيح
  • ❌ لا تدرج محتوى مكرر
  • ❌ لا تخلط مصادر متضاربة دون معالجة

تحسين الاسترجاع

  1. ضبط حجم القطعة - اختبر 500، 750، 1000 رمز
  2. أضف فلاتر البيانات الوصفية - التاريخ، نوع المصدر، الفئة
  3. نفذ التخزين المؤقت - الاستعلامات المتكررة لا تحتاج إعادة استرجاع
  4. راقب الصلة - تتبع ملاحظات المستخدمين على الإجابات

إدارة التكاليف

المكون محرك التكلفة التحسين
الاستخراج الصفحات المزحوفة استهدف الصفحات عالية القيمة
التضمينات الرموز المعالجة خزن التضمينات مؤقتاً
قاعدة البيانات المتجهية التخزين + الاستعلامات احذف البيانات القديمة
LLM الرموز المولدة موجهات أقصر

تطبيقات واقعية

دراسة حالة 1: مساعد منتجات التجارة الإلكترونية

بنى بائع تجزئة عبر الإنترنت نظام RAG الذي:

  • استخرج صفحات المنتجات والمراجعات وأقسام الأسئلة والأجوبة
  • حدّث التضمينات يومياً لـ 50,000 منتج
  • قلل تذاكر الدعم بنسبة 40%
  • حسّن درجات رضا العملاء بنسبة 25%

دراسة حالة 2: أداة البحث القانوني

أنشأت شركة محاماة تطبيق RAG الذي:

  • زحف قواعد بيانات القضايا والمنشورات القانونية
  • عالج 2 مليون مستند قانوني
  • قلل وقت البحث من ساعات إلى دقائق
  • حقق دقة 94% في معايير الاستعلامات القانونية

دراسة حالة 3: منصة استخبارات السوق

نشرت شركة استشارية RAG لـ:

  • مراقبة مواقع المنافسين والأخبار
  • تتبع اتجاهات الصناعة عبر 500+ مصدر
  • توليد تقارير السوق الآلية
  • توفير 20+ ساعة محلل أسبوعياً

البدء

مستعد لبناء أنبوب RAG الخاص بك؟ إليك خطة عملك:

  1. حدد مجالك - ما الأسئلة التي يجب أن يجيبها النظام؟
  2. حدد المصادر - أي المواقع تحتوي معلومات موثوقة؟
  3. أعد الاستخراج - إعداد زاحف الموقع لمصادرك
  4. عالج البيانات - نظف، قطع، وضمّن محتواك
  5. انشر وكرر - ابدأ بسيطاً، قس الجودة، حسّن

أدوات استخراج الويب لدينا تجعل جمع البيانات بسيطاً:

  • زاحف محتوى الموقع - زحف كامل للموقع مع استخراج المحتوى
  • مستخرج الويب - استخراج بيانات مستهدف
  • صيغ تصدير متعددة (JSON، CSV، Excel)
  • تشغيلات مجدولة لبيانات حديثة

تبني تطبيق RAG مخصص؟ تواصل معنا لحلول استخراج مؤسسية.

الأسئلة الشائعة

إلى ماذا يرمز مصطلح RAG؟
يرمز RAG إلى التوليد المعزز بالاسترجاع (Retrieval-Augmented Generation). وهو إطار عمل للذكاء الاصطناعي يسترجع الحقائق من قاعدة بيانات خارجية لتحسين دقة النماذج اللغوية الضخمة.
لماذا أحتاج إلى زاحف ويب لنموذج RAG الخاص بي؟
لأن زاحف الويب يقوم باستخراج النصوص النقية بكفاءة من موقع شركتك أو مستنداتها، ليتم تحويلها لاحقاً إلى متجهات وتغذيتها في قاعدة البيانات ليقتبس منها الذكاء الاصطناعي.
✍️

الكاتب: ParseFlow

فريق التحرير في ParseFlow يتألف من خبراء في استخراج بيانات الويب والأتمتة. نحن نختبر ونراجع باستمرار أدوات Apify لضمان تقديم أفضل التوصيات العملية وأكثرها دقة.

اقرأ إرشاداتنا التحريرية ←

شارك هذا:

الوسوم

#الذكاء الاصطناعي #RAG #التعلم الآلي #استخراج الويب #LLM #قواعد البيانات المتجهية
✍️

ParseFlow

استوديو سحب البيانات والأتمتة

سنوات من الخبرة العملية في بناء وصيانة أدوات سحب البيانات. ننشر أدوات حقيقية ومستخدمة فعلياً على متجر Apify تحت علامة Website Harvester — بما في ذلك أداة Articles Extractor — إلى جانب فهرسة ومراجعة نظام Apify الأوسع هنا في ParseFlow.