راهنمای کامل RAG چیست؟ آموزش ساخت RAG با کد پایتون
در این مقاله میخوانید
- RAG چیست به زبان ساده
- RAG چطور کار میکند؟
- کاربردهای واقعی RAG در دنیای امروز
- چرا همه RAG میسازند؟
- معایب RAG و چالشها
- مقایسه RAG با مدلهای دیگر
- آشنایی با انواع RAG
- انواع RAG بر اساس منبع اطلاعاتی
- انواع RAG بر اساس روش پیادهسازی
- پیادهسازی RAG به صورت گامبهگام
- ابزارهای محبوب برای پیادهسازی RAG
- آینده RAG کجاست؟
- جمعبندی
- سوالات متداول
تصور کنید که یک هوشمصنوعی بتواند بر اساس جستوجو و دسترسی به منابع متنوع دیگر، به جز اطلاعات موجود در دیتابیس خود، یک پاسخ دقیق و بهروز به شما ارائه دهد؛ این دقیقا کاری است RAG انجام میدهد. این تکنیک نوین به مدلهای هوش مصنوعی امکان میدهد که به جای محدود شدن به اطلاعات قدیمی خود، از جدیدترین اطلاعات موجود در بستر اینترنت استفاده کنند تا پاسخهایی علمیتر و جزئیتر ارائه دهند. در این مقاله از بخش اخبار فناوری بررسی میکنیم RAG چیست، چگونه کار میکند، چرا تبدیل به استاندارد شده و چطور میتوانید با چند خط کد پایتون اولین پروژه RAG خود را بسازید.
RAG چیست به زبان ساده
RAG یا Retrieval-Augmented Generation روشی است که یک مدل زبانی (LLM) را به یک سیستم جستوجوی پیشرفته وصل میکند. در حالت معمول، مدلهای هوش مصنوعی تنها با دانشی که قبلا با آنها آموزش داده شده، پاسخ میدهند. بنابراین اگر سوال درباره اطلاعات جدید، داخلی یا محرمانه باشد، مدل نمیتواند پاسخ دقیق ارائه کند؛ اما RAG این محدودیت را حل میکند. این روش قبل از تولید پاسخ، ابتدا در یک منبع دادهای جستوجو میکند (مثلاً فایلهای PDF، پایگاهدانش، لاگهای سرور، دیتابیس سفارشات، مستندات API و…) و سپس اطلاعات مرتبط را به مدل تزریق میکند.
اگر میخواهید بدانید هوش مصنوعی چیست و چگونه میتواند در آینده نزدیک بر زندگی ما تاثیر بگذارد، مقاله زیر را از دست ندهید:
در ادامه دو مثال از کاربرد RAG در زندگی روزمره را بررسی میکنیم.
۱. تیم پشتیبانی تاکسی اینترنتی:
کاربر میپرسد: «چرا سفر دیروز من لغو شد؟»
بدون RAG، هوشمصنوعی دلیل لغو سفر را فقط حدس میزند. اما با RAG سیستم ابتدا شروع به بررسی لاگ سفر از دیتابیس میکند، سپس با کمک LLM اطلاعات یک پاسخ دقیق میسازد.
۲. جستوجوی پیشرفته در فروشگاه اینترنتی:
کاربر میپرسد: «کدام لپتاپهای ایسوس با رم ۱۶ و پردازنده i7 موجود هستند؟»
RAG ابتدا محصولات لحظهای را جستوجو میکند، سپس مدل پاسخ طبیعی میسازد.
RAG چطور کار میکند؟

معماری RAG در سادهترین حالت از چهار مرحله پشتسرهم تشکیل شده است که هر مرحله وظیفه مهمی در افزایش دقت پاسخ دارد. در ادامه، هر مرحله را توضیح میدهیم:
۱. مرحله بازیابی (Retrieval)
در اولین گام، سیستم سوال کاربر را تحلیل میکند و به دنبال اطلاعات مرتبط میگردد. این جستوجو در یک پایگاه دانش انجام میشود که میتواند یک پایگاهداده معمولی، ابزار داخلی شرکت، VectorDB یا حتی موتور جستوجو باشد. هدف از این مرحله، پیدا کردن دقیقترین دادههایی است که به پاسخ صحیح کمک میکنند. یعنی همان دانشی که مدل برای جوابدادن به آن نیاز دارد.
۲. مرحله تقویت (Augmentation)
پس از فراخوانی دادهها، سیستم آنها را پردازش و با سوال کاربر ترکیب میکند. این ترکیب با استفاده از یک Prompt Template و Embeddingها انجام میشود. در این مرحله، اطلاعات خام به شکل ساختاریافتهای در میآیند تا مدل زبانی بتواند به بهترین شکل آنها را درک کند. در واقع سیستم پرامپتی میسازد که هم سوال کاربر داخل آن قرار دارد و هم اطلاعاتی که از منبع داده فراخوانی شده است.
در این مرحله، پرامپت نهایی که اکنون شامل سوال و دادههای معتبر است، به LLM ارسال میشود. این ورودی تقویتشده به LLM کمک میکند پاسخ را نه بر اساس حدس و حافظه قبلی، بلکه بر پایه اطلاعات واقعی و مربوط تولید کند.
۳. تولید پاسخ (Generation)
در آخرین مرحله، مدل زبانی یا LLM، ورودی آمادهشده را پردازش میکند و یک پاسخ طبیعی، قابل فهم و دقیق تولید میکند. این خروجی همان پاسخی است که به کاربر یا اپلیکیشن (Task Agent) برگردانده میشود. RAG بهجای اینکه مدل زبانی از حافظه قبلی جواب دهد، ابتدا اطلاعات واقعی را بازیابی میکند، سپس پرامپت را با آن دادهها تقویت میکند و در نهایت با کمک LLM پاسخ نهایی را تولید میکند. این چرخه باعث میشود مدل بسیار قابلاعتمادتر، دقیقتر و کاربردیتر باشد.
اگر میخواهید بدانید LLM چه تاثیری در آینده فناوری خواهند داشت، مقاله زیر را حتما مطالعه کنید:
کاربردهای واقعی RAG در دنیای امروز
این روزها از RAG تقریبا در تمام سرویسهای هوشمند دنیا استفاده میشود. با این وجود این سیستم کاربردهای مهم دیگری هم دارند. این کاربردها عبارتاند از:
- سیستمهای پشتیبانی از مشتریان
- برنامههای پرسش و پاسخ
- تولید و خلاصهسازی محتوا
- کدنویسی و تحلیل لاگها
- جستوجوی هوشمند
- تحلیل دادهها و گزارشگیری
- پیشبینی بازارهای مالی
- ایجاد کمپینهای تبلیغاتی هدفمند
چرا همه RAG میسازند؟
استفاده از RAG به دلیل مزایای بیشماری که دارد، به یک روند جهانی تبدیل شدهاست:
- RAG به صورت مستقیم باعث کاهش اطلاعات غلط دریافتی از هوشمصنوعی میشود و دقت در پاسخدهی را بهطور قابلتوجهی افزایش میدهد.
- RAG به سازمانها این امکان را میدهد که اطلاعات محرمانه و داخلی خود را بدون نیاز به آپلود در سرورهای خارجی مدیریت کنند، در حالی که هزینه آن نسبت به روشهای دیگری مانند Fine-tuning یا ساخت مدل جدید به مراتب کمتر است.
- RAG پردازش دادهها با حجمهای زیاد و بهروزرسانی لحظهای اطلاعات را امکانپذیر میکند.
- این روش با تمام مدلهای زبان بزرگ (LLM) مانند GPT، Llama، Mistral و Claude سازگار است.
همه عواملی که ذکر کردیم، در افزایش محبوبیت جهانی RAG تاثیر بهسزایی دارند.
معایب RAG و چالشها
با وجود مزایای زیاد، RAG محدودیتهایی هم دارد. در ادامه این معایب را بررسی میکنیم:
- دادن اطلاعات غلط (در صورتی که از منبع اشتباه استفاده شود): اگر مرحله Retrieval دقیق نباشد، خروجی نادرست تولید میشود.
- کندی در پردازش دادههای بزرگ: جستوجو در میلیونها فایل نیازمند GPU یا سرورهای قدرتمند است.
- پیچیدگی در معماری: راهاندازی، پردازش منابع مختلف و کنترل پرامپتها نیاز به دانش فنی دارد.
مقایسه RAG با مدلهای دیگر
در این بخش RAG را برخی مدلهای دیگر مقایسه میکنیم:
مقایسه RAG با Fine-Tuning
احتمالا میدانید که هر دوی این موارد روشهایی کاربردی و رایج برای بهبود عملکرد مدلهای زبانی هستند. با این وجود RAG یک گزینه سریعتر و ارزانتر به شمار میآید. البته Fine-tuning برای یادگیری وظایف جدید (مثل لحن اختصاصی) گزینهای مناسبتر است.
مقایسه RAG با GenAI و BERT
جدول زیر یک مقایسه سریع بین RAG، مدلهای GPT، BERT و GenAI معمولی ارائه میدهد تا تصویر روشنتری از این تفاوتها داشته باشید:
| ویژگی | RAG | GPT خام | BERT | مدلهای GenAI معمولی |
|---|---|---|---|---|
| استفاده از دادههای به روز | دارد | ندارد | ندارد | ندارد |
| دقت پاسخدهی | بسیار بالا | متوسط | بالا در درک، کم در تولید | متوسط |
| نیاز به آموزش مجدد | ندارد | ندارد | دارد | بسته به مدل |
| مناسب برای سازمان | عالی | متوسط | خوب | متوسط |
| کاهش هالوسینیشن | زیاد | کم | زیاد در تحلیل | کم |
سرور مجازی پارسپک، بهترین انتخاب برای کسبوکار شما
با سرور مجازی پارسپک، سرعت، امنیت و انعطافپذیری را تجربه کنید. دیگر از کندی سرورها نگران نباشید، با سرور مجازی پارسپک نه تنها یک زیرساخت قدرتمند دارید بلکه از پشتیبانی ۲۴ ساعته کارشناسان مجرب ما هم بهرهمند میشوید.
آشنایی با انواع RAG
در این بخش، انواع مختلف RAG را از دو زاویه بررسی میکنیم. هر کسبوکار بسته به نوع داده و سطح پیچیدگی موردنیاز، میتواند یکی از این معماریها را انتخاب کند:
- منبع اطلاعاتی: RAG ممکن است روی فایلها اجرا شود، به دیتابیس متصل باشد یا حتی داده را از APIها و لاگها فراخوانی کند.
- روش پیادهسازی: روش اجرای آن نیز میتواند ساده، چندمرحلهای، مبتنی بر عاملها یا کاملاً ماژولار باشد.
این تقسیمبندی کمک میکند بفهمیم هر نوع RAG برای چه سناریویی مناسبتر است و چگونه میتواند دقت و کارایی موتور هوش مصنوعی را افزایش دهد.
انواع RAG بر اساس منبع اطلاعاتی
RAG مبتنی بر فایلها (PDF، Word، Excel)
در این نوع، منبع دانش از فایلهای متنی و اسنادی تشکیل میشود. اسناد ابتدا پردازش و به قطعات و چانکهای کوچک تقسیم میشوند و سپس در VectorDB ذخیره میگردند. این مدل برای ساخت سیستمهای پرسشوپاسخ بر اساس مستندات، راهنماها و گزارشها بسیار رایج و ساده است.
RAG مبتنی بر پایگاهداده یا RAG حافظهدار (Memory RAG)
در این معماری، RAG به دیتابیس متصل میشود و میتواند تاریخچه تعاملها و اطلاعات قبلی را نیز نگه دارد. این نوع برای چتباتهایی مناسب است که باید مکالمات گذشته را به خاطر بسپارند و پاسخهای شخصیسازیشده ارائه دهند.
RAG مبتنی بر API و وبسایتها یا RAG تطبیقی (Adaptive RAG)
در این مدل، اطلاعات بهصورت لحظهای از APIها یا صفحات وب فراخوانی میشود. RAG تطبیقی میتواند بسته به نوع سوال، منبع مناسب را انتخاب کند و برای دادههای همیشه در حال تغییر مانند قیمتها، وضعیت سرویسها یا اطلاعات آنلاین کاربرد دارد.
RAG مبتنی بر لاگها و گزارشهای سیستم یا RAG اصلاحی (Corrective RAG)
این نوع RAG برای تحلیل لاگها، گزارشهای سیستمی و دادههای مانیتورینگ استفاده میشود. سیستم میتواند خطاها را شناسایی کرده، پاسخهای نادرست را اصلاح کند و پیشنهادهای عملی برای رفع مشکل ارائه دهد.
RAG مبتنی بر دانش سازمانی (Knowledge Base)
در این حالت، RAG به یک پایگاه دانش داخلی شامل سیاستها، مستندات، فرایندها و تجربیات سازمان متصل میشود. این نوع برای سیستمهای پشتیبانی، آموزش کارکنان و مدیریت دانش سازمانی بسیار موثر است.
در مقاله زیر بررسی میکنیم که chatgpt چیست و چطور میتواند به دستیار شخصی شما تبدیل شود:
انواع RAG بر اساس روش پیادهسازی

RAG ساده (Single-pass)
سادهترین نوع RAG که در آن بازیابی اطلاعات و تولید پاسخ فقط یکبار انجام میشود. این مدل پیادهسازی آسانی دارد و برای پروژههای کوچک و MVP مناسب است.
RAG چندمرحلهای یا منشعب (Multi-step RAG)
در این معماری، چند مرحله بازیابی و پردازش انجام میشود. پاسخ هر مرحله میتواند ورودی مرحله بعد باشد. این روش دقت بالاتری دارد و برای مسائل پیچیده مناسبتر است.
RAG مبتنی بر عاملها یا عاملگرا (Agentic RAG)
در این نوع، عاملهای هوشمند تصمیم میگیرند چه دادهای بازیابی شود، چه ابزاری استفاده شود و چه اقدامی انجام گیرد. Agentic RAG برای سیستمهای خودکار و تصمیممحور کاربرد دارد.
RAG ماژولار (Modular RAG)
در RAG ماژولار، هر بخش مانند بازیابی، پردازش، فیلتر و تولید پاسخ بهصورت مستقل طراحی میشود. این معماری انعطافپذیر است و امکان توسعه و بهینهسازی هر ماژول را فراهم میکند.
RAG زنجیرهای با استدلال پیشرفته (Self-RAG)
در این مدل، سیستم علاوه بر بازیابی اطلاعات، توانایی ارزیابی و اصلاح پاسخ خود را دارد. Self-RAG میتواند استدلال کند، نتیجه را بررسی کند و در صورت نیاز دوباره بازیابی انجام دهد تا به پاسخ دقیقتری برسد.
| نوع RAG | منبع یا معماری اصلی | سرعت اجرا | دقت پاسخ | سطح پیچیدگی | کاربرد رایج |
|---|---|---|---|---|---|
| RAG مبتنی بر فایلها | فایلهای PDF، Word، Excel | بالا | متوسط | کم | پرسشوپاسخ روی مستندات و راهنماها |
| Memory RAG | پایگاهداده و حافظه مکالمه | متوسط | بالا | متوسط | چتباتهای شخصیسازیشده و پشتیبانی |
| Adaptive RAG | APIها و وبسایتها | متوسط | بالا | متوسط | دادههای بلادرنگ و متغیر |
| Corrective RAG | لاگها و گزارشهای سیستم | متوسط | بسیار بالا | زیاد | مانیتورینگ، دیباگ و تحلیل خطا |
| Knowledge Base RAG | دانش سازمانی داخلی | بالا | بالا | متوسط | پشتیبانی مشتریان و مدیریت دانش |
| Single-pass RAG | اجرای یکمرحلهای | بسیار بالا | متوسط | کم | MVP و پروژههای ساده |
| Multi-step RAG | چندمرحلهای و منشعب | متوسط | بالا | زیاد | تحلیلهای پیچیده |
| Agentic RAG | عاملهای هوشمند | کم | بسیار بالا | بسیار زیاد | سیستمهای خودکار و تصمیمگیر |
| Modular RAG | معماری ماژولار | متوسط | بالا | متوسط | پروژههای مقیاسپذیر |
| Self-RAG | استدلال و اصلاح خودکار | کم | بسیار بالا | زیاد | کاربردهای حساس و دقیق |
پیادهسازی RAG به صورت گامبهگام
در این بخش، یک نمونه کد کامل پایتون ارائه میشود که با چند خط قابل اجراست و یک RAG واقعی میسازد:
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.document_loaders import DirectoryLoader
from langchain_community.vectorstores import FAISS
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI
loader = DirectoryLoader("data/", glob="*.txt")
docs = loader.load()
splitter = RecursiveCharacterTextSplitter(chunk_size=800, chunk_overlap=200)
chunks = splitter.split_documents(docs)
emb = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
vector_store = FAISS.from_documents(chunks, emb)
retriever = vector_store.as_retriever()
llm = OpenAI(model_name="gpt-4o-mini")
qa = RetrievalQA.from_chain_type(llm=llm, retriever=retriever, chain_type="stuff")
query = “راهنمای نصب سرویس روی لینوکس را بگو”
result = qa.run(query) print(result)
در ادامه بخش های مختلف کد ارائه شده را توضیح میدهیم:
from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_community.document_loaders import DirectoryLoader from langchain_community.vectorstores import FAISS from langchain_community.embeddings import HuggingFaceEmbeddings from langchain.chains import RetrievalQA from langchain.llms import OpenAI
این بخش کتابخانههای لازم را ایمپورت میکند:
RecursiveCharacterTextSplitter ← خرد کردن متن به چانک
DirectoryLoader ← خواندن فایلها از یک فولدر
FAISS ← ساخت Vector Store
HuggingFaceEmbeddings ← ساخت Embedding با یک مدل سبک
RetrievalQA ← ساخت زنجیره RAG
OpenAI ← مدل LLM که پاسخ نهایی را تولید میکند
loader = DirectoryLoader("data/", glob="*.txt")
docs = loader.load()
این بخش تمام فایلهای متنی txt داخل پوشه data/ را میخواند.
splitter = RecursiveCharacterTextSplitter(chunk_size=800, chunk_overlap=200) chunks = splitter.split_documents(docs)
سپس فایلها به قطعات کوچکتر تقسیم میشوند. خروجی یک لیست با چند ده یا چند صد چانک خواهد بود.
emb = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2") vector_store = FAISS.from_documents(chunks, emb) retriever = vector_store.as_retriever()
سپس در این بخش:
هر چانک متن ← تبدیل به Embedding میشود.
این embeddingها در FAISS ذخیره میشوند (VectorDB).
از روی آن یک retriever ساخته میشود که قادر است “نزدیکترین چانکها به سؤال” را پیدا کند.
llm = OpenAI(model_name="gpt-4o-mini")
یک مدل هوش مصنوعی از API OpenAI انتخاب میشود که پاسخ نهایی را بسازد.
qa = RetrievalQA.from_chain_type(llm=llm, retriever=retriever, chain_type="stuff")
در اینجا یک سیستم RAG کامل ساخته میشود:
- ابتدا بازیابی اطلاعات
- سپس اضافه کردن چانکها به پرامپت
- سپس تولید پاسخ با LLM
نوع chain ← stuff یعنی تمام چانکهای مرتبط مستقیم داخل پرامپت قرار میگیرند.
query = “راهنمای نصب سرویس روی لینوکس را بگو”
result = qa.run(query) print(result)
سیستم یک سوال فارسی دریافت میکند:
«راهنمای نصب سرویس روی لینوکس را بگو» و خروجی را چاپ میکند.

اگر به دنبال یادگیری برنامهنویسی هستید، پایتون بهترین انتخاب است. مقاله زیر را بخوانید تا اطلاعات بیشتری درباره آن کسب کنید:
ابزارهای محبوب برای پیادهسازی RAG
در این بخش سراغ ابزارهایی میرویم که بیشترین استفاده را برای ساخت RAG دارند. هرکدام از این فریمورکها نقاط قوت ویژهای دارند و بسته به مقیاس پروژه، سطح تجربه تیم و نوع دادهها میتوانند بهترین انتخاب باشند:
- LangChain: ابزار محبوب ساخت RAG با قالبهای آماده، پشتیبانی از LLMهای مختلف و جامعه بزرگ توسعهدهنده.
- Haystack: قوی برای پروژههای سازمانی، مقیاسپذیر و مناسب برای اپلیکیشنهای بزرگ.
- LlamaIndex: سریع و ساده برای توسعه MVP و پروژههای سبک.
آینده RAG کجاست؟
فناوری RAG با سرعت زیادی در حال پیشرفت است و هر سال نسخههای پیچیدهتر و کاربردیتری از آن معرفی میشود. RAG در حال تبدیلشدن به هسته مرکزی نسل بعدی اپلیکیشنهای هوش مصنوعی است مدلی که نهتنها اطلاعات را فراخوانی میکند، بلکه میتواند آن را تحلیل، اصلاح و حتی از تعاملهای گذشته یادگیری کند. مهمترین انواع RAG که در آینده در مورد آنها بیشتر خواهیم شنید، عبارتاند از:
- RAG مبتنی بر عوامل هوشمند (Agentic RAG)
- RAG خودکار با Self-Correction
- RAG مبتنی بر حافظه بلندمدت سازمانی
حالا باید دو نوع دیگر از مدلهای RAG را معرفی کنیم که بسیار کاربردیتر هستند و در آینده هم احتمالا بیشتر از آنها استفاده خواهد شد:
RAG بهینهشده برای پاسخدهی Real – Time
با استفاده از RAG بهینهشده برای پاسخدهی real-time، مدلها قادرند بهطور فوری به منابع معتبر و بهروز دسترسی پیدا کنند و پاسخهایی دقیق و مربوط ارائه دهند. این قابلیت، بهویژه در مواقعی که نیاز به اطلاعات تازه و آنی دارید، بسیار کارآمد است و از آن برای بهبود پاسخگویی در شرایط پویا و تغییرات سریع استفاده میشود.
ادغام با مدلهای چندرسانهای (Multimodal)
RAG بهراحتی میتواند با مدلهای چندرسانهای (Multimodal) ادغام شود تا اطلاعاتی از انواع مختلف رسانهها مانند متن، تصویر و صدا را برای تولید پاسخهای دقیقتر و جامعتر ترکیب کند. این ادغام باعث میشود تا مدل قادر باشد اطلاعات گستردهتری را درک کرده و پاسخهای مفهومی و چندبعدی تولید کند که برای کاربردهای پیچیدهتر مناسب است.
جمعبندی
RAG یکی از مهمترین فناوریهای امروز در زمینه هوش مصنوعی است. این روش با ترکیب قدرت LLM و دادههای واقعی، دقت مدلها را چند برابر میکند و هزینه پیادهسازی را به حداقل میرساند. با ظهور ابزارهایی مانند LangChain، LlamaIndex و Haystack ساخت RAG بسیار ساده شده و حتی توسعهدهندگان تازهکار نیز میتوانند در کمتر از یک روز یک سیستم کامل تولید کنند. آینده RAG روشنتر از همیشه است و تبدیل به هسته اصلی GenAI سازمانی خواهد شد.
سوالات متداول
آیا RAG برای کسبوکارهای کوچک هم کاربرد دارد؟
بله. حتی کسبوکارهای کوچک هم میتوانند با اتصال RAG به مجموعهای محدود از فایلها یا مستندات داخلی، یک سیستم پرسشوپاسخ دقیق و مقرونبهصرفه بسازند. برخلاف آموزش مدلهای بزرگ، اجرای RAG نیاز به سختافزار گرانقیمت ندارد و با یک سرور معمولی هم قابل پیادهسازی است.
بهترین ابزار برای پیادهسازی RAG چیست؟
بهترین ابزار پیادهسازی RAG برای شروع LlamaIndex است. اما برای سازمانها Haystack بهترین انتخاب بهنظر میرسد. این در حالی است که برای پروژههای حرفهای LangChain مناسبترین گزینه به شمار میآید.
RAG با Fine-tuning چه فرقی دارد؟
در RAG مدل عوض نمیشود، اطلاعات اضافه میشود اما در Fine-tuning وزنهای مدل تغییر میکند و رفتار جدید یاد میگیرد.
چالش تحریم در RAG چطور حل میشود؟
با استفاده از مدلهای متنباز مثل Llama، Mistral، Falcon و VectorDBهای لوکال مانند FAISS میتوان تمام RAG را روی سرور داخلی اجرا کرد.