ما هو RAG وكيف يعمل؟
RAG اختصار لـ Retrieval-Augmented Generation أو "التوليد المعزز بالاسترداد". هو تقنية تحوّل أي وثيقة أو قاعدة بيانات إلى نظام ذكاء اصطناعي قادر على الإجابة عن الأسئلة بدقة.
المشكلة التي يحلها RAG
نماذج AI مثل ChatGPT وClaude لها مشكلتان:
1. **انتهاء بيانات التدريب** — لا يعرفون أحداث ما بعد آخر تدريب
2. **الهلوسة** — قد يخترعون معلومات غير صحيحة
RAG يحل هذا بربط النموذج ببياناتك الخاصة.
كيف يعمل RAG؟
المرحلة 1: الفهرسة (Indexing)
1. تقسيم وثائقك إلى أجزاء صغيرة (Chunks)
2. تحويل كل جزء إلى متجه رياضي (Embedding)
3. تخزين المتجهات في قاعدة بيانات متجهية
المرحلة 2: الاسترداد (Retrieval)
1. المستخدم يكتب سؤاله
2. السؤال يُحوّل إلى متجه
3. البحث عن أكثر الأجزاء تشابهاً في قاعدة البيانات
4. استرداد الأجزاء الأكثر صلة
المرحلة 3: التوليد (Generation)
1. إرسال السؤال + الأجزاء المسترداة إلى LLM
2. LLM يولّد إجابة مبنية على السياق الحقيقي
مثال عملي
بدون RAG:
سؤال: ما هي سياسة الإعادة في متجرنا؟
إجابة AI: أعتذر، لا أعرف سياسة متجركم المحددة.
مع RAG:
سؤال: ما هي سياسة الإعادة في متجرنا؟
(RAG يجد الصفحة 12 من وثيقة السياسات)
إجابة AI: وفقاً لسياستكم، يمكن إعادة المنتجات خلال 30 يوماً مع الوصل...
كيف تبني نظام RAG بسيط
from langchain.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import Chroma
from langchain.embeddings import CohereEmbeddings
from langchain.llms import Anthropic
from langchain.chains import RetrievalQA
# 1. تحميل الوثيقة
loader = PyPDFLoader("document.pdf")
docs = loader.load()
# 2. تقسيم النص
splitter = RecursiveCharacterTextSplitter(chunk_size=500)
chunks = splitter.split_documents(docs)
# 3. إنشاء قاعدة البيانات المتجهية
vectorstore = Chroma.from_documents(chunks, embedding)
# 4. بناء سلسلة RAG
qa = RetrievalQA.from_chain_type(
llm=llm,
retriever=vectorstore.as_retriever()
)
# 5. الاستعلام
answer = qa.run("ما هي الشروط الرئيسية؟")