بناء أنابيب RAG مع بيانات الويب: دليل شامل 2026
تعلم كيفية بناء أنظمة التوليد المعزز بالاسترجاع (RAG) باستخدام البيانات المستخرجة من الويب. من جمع البيانات إلى التضمينات المتجهية، أنشئ تطبيقات ذكاء اصطناعي مدعومة بالمعلومات الويب الفورية.
بصفتنا شركاء لـ Apify، قد نحصل على عمولة من عمليات الشراء المؤهلة التي تتم من خلال روابطنا، دون أي تكلفة إاضافية عليك. نحن نوصي فقط بالأدوات التي نثق بها.
نماذج اللغة الكبيرة (LLMs) قوية، لكن لديها قيد حاسم: معرفتها مجمدة في وقت التدريب. التوليد المعزز بالاسترجاع (RAG) يحل هذا بربط LLMs بقواعد معرفة خارجية، مما يمكنها من الوصول إلى معلومات حالية ومتخصصة بالمجال.
استخراج الويب هو المفتاح لبناء أنظمة RAG قوية. مع 65% من المؤسسات تستخدم الآن بيانات الويب لمشاريع AI/ML وسوق استخراج الويب يصل إلى 1.03 مليار دولار في 2025، دمج هذه التقنيات أصبح ضرورياً لتطبيقات الذكاء الاصطناعي التنافسية.
ما هو RAG ولماذا هو مهم؟
هندسة RAG
يجمع RAG بين مكونين:
- الاسترجاع: إيجاد المستندات ذات الصلة من قاعدة المعرفة
- التوليد: استخدام 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: معالجة وتنظيف البيانات
تحتاج بيانات الويب الخام للمعالجة قبل التضمين:
خطوات التنظيف:
- إزالة القوالب - التنقل، الإعلانات، التذييلات
- استخراج المحتوى الرئيسي - نص المقال، نص الوثائق
- تطبيع التنسيق - markdown/HTML متسق
- إزالة التكرار - حذف المحتوى المكرر
- فلترة الجودة - الحد الأدنى لطول المحتوى، كشف اللغة
مثال 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 للباقي — وسجّل الإيقاع بجانب البيانات (أي أداة، وأي روابط، وأي تاريخ)، لأنه بعد ستة أشهر لن تفسر إجابة غريبة إلا إذا عرفت بالضبط ما قيس ومتى.
أفضل الممارسات
جودة البيانات
- ✅ تحقق من سلطة المصدر قبل الإدراج
- ✅ فلتر المحتوى منخفض الجودة أو الخفيف
- ✅ حافظ على الحداثة بالتحديثات المنتظمة
- ✅ تتبع نسب البيانات للتصحيح
- ❌ لا تدرج محتوى مكرر
- ❌ لا تخلط مصادر متضاربة دون معالجة
تحسين الاسترجاع
- ضبط حجم القطعة - اختبر 500، 750، 1000 رمز
- أضف فلاتر البيانات الوصفية - التاريخ، نوع المصدر، الفئة
- نفذ التخزين المؤقت - الاستعلامات المتكررة لا تحتاج إعادة استرجاع
- راقب الصلة - تتبع ملاحظات المستخدمين على الإجابات
إدارة التكاليف
| المكون | محرك التكلفة | التحسين |
|---|---|---|
| الاستخراج | الصفحات المزحوفة | استهدف الصفحات عالية القيمة |
| التضمينات | الرموز المعالجة | خزن التضمينات مؤقتاً |
| قاعدة البيانات المتجهية | التخزين + الاستعلامات | احذف البيانات القديمة |
| LLM | الرموز المولدة | موجهات أقصر |
تطبيقات واقعية
دراسة حالة 1: مساعد منتجات التجارة الإلكترونية
بنى بائع تجزئة عبر الإنترنت نظام RAG الذي:
- استخرج صفحات المنتجات والمراجعات وأقسام الأسئلة والأجوبة
- حدّث التضمينات يومياً لـ 50,000 منتج
- قلل تذاكر الدعم بنسبة 40%
- حسّن درجات رضا العملاء بنسبة 25%
دراسة حالة 2: أداة البحث القانوني
أنشأت شركة محاماة تطبيق RAG الذي:
- زحف قواعد بيانات القضايا والمنشورات القانونية
- عالج 2 مليون مستند قانوني
- قلل وقت البحث من ساعات إلى دقائق
- حقق دقة 94% في معايير الاستعلامات القانونية
دراسة حالة 3: منصة استخبارات السوق
نشرت شركة استشارية RAG لـ:
- مراقبة مواقع المنافسين والأخبار
- تتبع اتجاهات الصناعة عبر 500+ مصدر
- توليد تقارير السوق الآلية
- توفير 20+ ساعة محلل أسبوعياً
البدء
مستعد لبناء أنبوب RAG الخاص بك؟ إليك خطة عملك:
- حدد مجالك - ما الأسئلة التي يجب أن يجيبها النظام؟
- حدد المصادر - أي المواقع تحتوي معلومات موثوقة؟
- أعد الاستخراج - إعداد زاحف الموقع لمصادرك
- عالج البيانات - نظف، قطع، وضمّن محتواك
- انشر وكرر - ابدأ بسيطاً، قس الجودة، حسّن
أدوات استخراج الويب لدينا تجعل جمع البيانات بسيطاً:
- زاحف محتوى الموقع - زحف كامل للموقع مع استخراج المحتوى
- مستخرج الويب - استخراج بيانات مستهدف
- صيغ تصدير متعددة (JSON، CSV، Excel)
- تشغيلات مجدولة لبيانات حديثة
تبني تطبيق RAG مخصص؟ تواصل معنا لحلول استخراج مؤسسية.
الأسئلة الشائعة
إلى ماذا يرمز مصطلح RAG؟
لماذا أحتاج إلى زاحف ويب لنموذج RAG الخاص بي؟
الكاتب: ParseFlow
فريق التحرير في ParseFlow يتألف من خبراء في استخراج بيانات الويب والأتمتة. نحن نختبر ونراجع باستمرار أدوات Apify لضمان تقديم أفضل التوصيات العملية وأكثرها دقة.
اقرأ إرشاداتنا التحريرية ←🛠️ الأدوات المقترحة
أداة سحب الويب العامة
اسحب أي موقع باستخدام متصفح واستخرج بيانات منظمة باستخدام كود JavaScript مخصص. أتمت الاستخراج المجدول وصدّر النتائج إلى Excel أو JSON.
زاحف محتوى المواقع
زاحف مواقع متطور يستخرج محتوى نظيف ومنظم بصيغة Markdown أو JSON أو نص عادي لتطبيقات الذكاء الاصطناعي وLLM. بدون برمجة — شغّل الأداة على السحابة وحمّل بياناتك فورًا.
الوسوم
ParseFlow
استوديو سحب البيانات والأتمتة
سنوات من الخبرة العملية في بناء وصيانة أدوات سحب البيانات. ننشر أدوات حقيقية ومستخدمة فعلياً على متجر Apify تحت علامة Website Harvester — بما في ذلك أداة Articles Extractor — إلى جانب فهرسة ومراجعة نظام Apify الأوسع هنا في ParseFlow.