شرح RAG: إضافة بياناتك الخاصة إلى تطبيقات LLM

AI2026-09-24TryQuickToolBox

لقد قمت ببناء روبوت محادثة باستخدام LLM قوي مثل GPT-4 أو Claude، لكنه يعطي إجابات عامة ولا يعرف شيئًا عن المستندات الداخلية لشركتك. كيف تجعله يجيب على الأسئلة المتعلقة ببياناتك الخاصة؟ الضبط الدقيق (Fine-tuning) مكلف وثابت. الحل هو التوليد المعزز بالاسترجاع (RAG).

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

ما هو RAG؟

يجمع RAG بين تقنيتين قويتين: الاسترجاع (العثور على معلومات ذات صلة من قاعدة معرفة) والتوليد (استخدام LLM لإنتاج إجابة). بدلاً من الاعتماد فقط على المعرفة المدربة مسبقًا لنموذج LLM، يقوم RAG بجلب المستندات ذات الصلة ديناميكيًا وتضمينها في الأمر (prompt)، مما يربط استجابة النموذج ببياناتك.

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

لماذا تستخدم RAG؟

كيف يعمل RAG: المكونات الأساسية

يتكون نظام RAG النموذجي من أربعة أجزاء رئيسية:

  1. استيعاب المستندات: تحميل ومعالجة مستنداتك (ملفات PDF، صفحات ويب، قواعد بيانات).
  2. نموذج التضمين: تحويل أجزاء النص إلى متجهات رقمية تلتقط المعنى الدلالي.
  3. قاعدة بيانات متجهة: تخزين وفهرسة هذه المتجهات للبحث السريع عن التشابه.
  4. LLM: توليد الإجابات باستخدام السياق المسترجع.

خطوة بخطوة: بناء خط أنابيب RAG

1. جهّز مستنداتك

اجمع مصادر بياناتك: ملفات PDF، ملفات Markdown، صفحات Confluence، أو جداول SQL. نظّف النص (أزل الرؤوس والتذييلات والنصوص المتكررة) وقسّمه إلى أجزاء بحجم 200-500 كلمة مع بعض التداخل (مثل 50 كلمة) للحفاظ على السياق.

مثال باستخدام Python:

from langchain.text_splitter import RecursiveCharacterTextSplitter

text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=50
)
chunks = text_splitter.split_text(your_document)

2. أنشئ التضمينات

استخدم نموذج تضمين مثل text-embedding-3-small من OpenAI أو نماذج مفتوحة المصدر مثل all-MiniLM-L6-v2 لتحويل كل جزء إلى متجه.

from openai import OpenAI
client = OpenAI()

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

3. خزّن في قاعدة بيانات متجهة

اختر قاعدة بيانات متجهة: Pinecone، Weaviate، Qdrant، أو حتى PostgreSQL مع pgvector. خزّن تضمين كل جزء مع البيانات الوصفية (المصدر، رقم الصفحة).

import pinecone
pinecone.init(api_key="YOUR_KEY", environment="us-west1-gcp")
index = pinecone.Index("rag-demo")

vectors = [(f"chunk-{i}", get_embedding(chunk), {"text": chunk}) for i, chunk in enumerate(chunks)]
index.upsert(vectors=vectors)

4. استرجع الأجزاء ذات الصلة

عندما يطرح المستخدم سؤالاً، قم بتضمين الاستعلام وابحث عن أعلى k من الأجزاء الأكثر تشابهًا.

query_embedding = get_embedding(user_question)
results = index.query(vector=query_embedding, top_k=3, include_metadata=True)
context = "\n\n".join([match.metadata["text"] for match in results.matches])

5. ولّد الإجابة

أنشئ أمرًا يتضمن السياق المسترجع واطلب من LLM الإجابة بناءً عليه.

prompt = f"""Answer the question based only on the following context:
{context}

Question: {user_question}
Answer:"""

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

RAG مقابل الضبط الدقيق

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

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

المزالق الشائعة وكيفية تجنبها

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

ما الفرق بين RAG والضبط الدقيق؟

يسترجع RAG المعلومات ذات الصلة في وقت الاستدلال ويضمّنها في الأمر، بينما يعدل الضبط الدقيق أوزان النموذج لتعلم أنماط جديدة. RAG أفضل للمعرفة الديناميكية والواقعية؛ الضبط الدقيق أفضل لتكييف الأسلوب أو المجال.

هل أحتاج إلى قاعدة بيانات متجهة لـ RAG؟

ليس بالضرورة—يمكنك استخدام أي فهرس بحث (مثل Elasticsearch) أو حتى تشابه جيب التمام في الذاكرة لمجموعات البيانات الصغيرة. لكن قواعد البيانات المتجهة مثل Pinecone أو Qdrant مُحسّنة للبحث السريع والقابل للتوسع عن التشابه.

كيف أقيم نظام RAG؟

قِس جودة الاسترجاع (الدقة@k، الاستدعاء) وجودة التوليد (ملاءمة الإجابة، الأمانة). أدوات مثل Ragas أو TruLens يمكن أن تساعد في أتمتة التقييم.

الخاتمة

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

عند تحضير المستندات لخط أنابيب RAG، غالبًا ما تحتاج إلى دمج عدة ملفات PDF في ملف واحد لسهولة الاستيعاب. استخدم أداة دمج PDF المجانية لدينا لدمج ملفات PDF بسرعة وأمان.