پرش به محتوای اصلی رفتن به محتوای اصلی
🧠 آموزش هوش مصنوعی و معماری دانش

RAG چیست؟ آموزش کامل Retrieval-Augmented Generation با مثال واقعی

اگر بخواهیم یک مدل هوش مصنوعی به‌جای حدس زدن، قبل از پاسخ سراغ اسناد، دیتابیس یا منابع واقعی شما برود، اطلاعات مرتبط را پیدا کند و بعد جواب بدهد، وارد دنیای RAG شده‌ایم. در این راهنما از تعریف خیلی ساده شروع می‌کنیم و تا معماری واقعی، RAG فارسی، اجرای لوکال، ارزیابی و خطاهای رایج پیش می‌رویم.

انتشار: ۲۲ شهریور ۱۴۰۵ زمان مطالعه: حدود ۲۳ دقیقه سطح: مقدماتی تا متوسط

RAG در یک جمله

RAG یعنی مدل قبل از تولید پاسخ، اطلاعات مرتبط را از یک منبع بیرونی بازیابی کند و پاسخ را بر اساس همان اطلاعات بسازد. نتیجه معمولاً پاسخ به‌روزتر، مرتبط‌تر و قابل‌بررسی‌تر است؛ البته فقط وقتی بخش بازیابی و منابع درست طراحی شده باشند.

۱. Retrieve
بازیابی
۲. Augment
افزودن زمینه
۳. Generate
تولید پاسخ

RAG چیست؟

پاسخ کوتاه RAG مخفف Retrieval-Augmented Generation است؛ یعنی «تولید تقویت‌شده با بازیابی». در این معماری، مدل زبانی فقط به دانشی که هنگام آموزش در پارامترهایش ذخیره شده تکیه نمی‌کند. ابتدا اطلاعات مرتبط با سؤال از منابع بیرونی پیدا می‌شود، سپس همان اطلاعات به ورودی مدل اضافه می‌شود و مدل پاسخ نهایی را با اتکا به آن زمینه تولید می‌کند.

برای فهم RAG لازم نیست متخصص یادگیری ماشین باشید. یک مثال ساده کافی است: فرض کنید از یک دستیار هوش مصنوعی می‌پرسید «شهریه درس پایگاه داده این ترم چقدر است؟». اگر مدل فقط از دانش عمومی خود استفاده کند، احتمالاً هیچ راهی برای دانستن قیمت دقیق و جدید دانشگاه شما ندارد. اما اگر سیستم قبل از پاسخ، فایل شهریه ترم جاری یا دیتابیس دانشگاه را جستجو کند و رقم صحیح را پیدا کند، مدل می‌تواند بر پایه داده واقعی پاسخ بدهد.

این دقیقاً همان ایده RAG است: دانش موردنیاز را هنگام سؤال بازیابی کن، آن را به زمینه مدل اضافه کن و سپس پاسخ بساز. در تعریف امروزی سرویس‌های ابری نیز همین سه مرحله دیده می‌شود: بازیابی اطلاعات، افزودن اطلاعات بازیابی‌شده به زمینه و تولید پاسخ. گوگل کلاد RAG را ترکیب سیستم‌های بازیابی سنتی با توانایی مدل‌های مولد توصیف می‌کند و مقاله اصلی RAG نیز در سال ۲۰۲۰ توسط Lewis و همکاران، ترکیب «حافظه پارامتریک» مدل با «حافظه غیرپارامتریک» قابل بازیابی را بررسی کرد.

نکته مهم: RAG نام یک مدل خاص نیست. یک معماری یا الگوی ساخت سیستم است. شما می‌توانید مدل زبانی، مدل Embedding، موتور جستجو و پایگاه داده را با توجه به پروژه عوض کنید و همچنان سیستم شما RAG باشد.

چرا RAG به‌وجود آمد؟ مدل زبانی چه مشکلی دارد؟

مدل‌های زبانی بزرگ مثل یک دانشنامه ثابت نیستند. آن‌ها الگوهای زبان و حجم بزرگی از دانش را در پارامترهایشان یاد گرفته‌اند، اما چند محدودیت طبیعی دارند. اول اینکه دانش آن‌ها همیشه شامل اطلاعات لحظه‌ای و خصوصی شما نیست. دوم اینکه ممکن است در نبود اطلاعات کافی، پاسخ روان اما اشتباه بسازند. سوم اینکه تغییر یک عدد، قانون یا سند داخلی نباید ما را مجبور کند دوباره کل مدل را آموزش دهیم.

RAG برای همین سناریوها بسیار جذاب است. اطلاعاتی مثل آیین‌نامه شرکت، کاتالوگ محصول، قیمت امروز، مستند فنی، قرارداد، جزوه دانشگاه، فایل PDF یا دانش داخلی سازمان می‌تواند خارج از مدل نگهداری شود و فقط زمانی که لازم است به مدل داده شود.

دانش خصوصی

اطلاعاتی که مدل عمومی هیچ‌وقت در آموزش خود ندیده؛ مثل اسناد داخلی شرکت یا محتوای اختصاصی نرم‌افزار آموزشی.

دانش قابل تغییر

قیمت، قوانین، موجودی، برنامه کلاس یا مشخصات محصول دائماً تغییر می‌کنند و بهتر است بیرون از پارامترهای مدل نگهداری شوند.

قابلیت استناد

اگر همراه پاسخ منبع و قطعه سند نمایش داده شود، کاربر یا اپراتور می‌تواند پاسخ را بررسی کند.

کنترل بهتر

می‌توان مشخص کرد کدام سند، کدام بخش سازمان یا کدام داده برای هر کاربر قابل بازیابی باشد.

اما یک سوءبرداشت مهم: RAG تضمین نمی‌کند مدل هرگز اشتباه نکند. اگر سند غلط باشد، بازیابی نتیجه نامرتبط برگرداند یا مدل دستور «فقط از منابع پاسخ بده» را رعایت نکند، هنوز پاسخ نادرست ممکن است. RAG ریسک را مدیریت می‌کند؛ جادو نمی‌کند.

RAG چگونه کار می‌کند؟ مسیر کامل از فایل تا پاسخ

برای یادگیری درست RAG باید دو فاز را جدا کنیم: آماده‌سازی دانش و پاسخ‌گویی در زمان اجرا. خیلی از آموزش‌ها فقط لحظه سؤال را نشان می‌دهند، درحالی‌که کیفیت مرحله آماده‌سازی دانش معمولاً تعیین می‌کند خروجی نهایی چقدر خوب باشد.

فاز اول: آماده‌سازی و ایندکس کردن دانش

۱جمع‌آوری منابع

PDF، Word، صفحه وب، FAQ، دیتابیس، فایل راهنما یا هر منبع قابل اعتماد.

۲Parsing

استخراج متن، عنوان‌ها، جدول‌ها، شماره صفحه، متادیتا و ساختار سند.

۳Chunking

تقسیم محتوای بزرگ به قطعه‌هایی که مستقل و قابل بازیابی باشند.

۴Embedding

تبدیل هر قطعه به نمایش عددی برای جستجوی معنایی.

۵Index

ذخیره متن، بردار و متادیتا در موتور جستجو یا Vector Store.

۶Permission

ثبت سطح دسترسی، زبان، تاریخ، دسته و منبع برای فیلتر دقیق‌تر.

۷Test Set

ساخت مجموعه سؤال‌های واقعی برای اینکه بعداً کیفیت بازیابی اندازه‌گیری شود.

۸Versioning

کنترل نسخه و حذف اسناد منسوخ تا پاسخ از داده قدیمی ساخته نشود.

فاز دوم: وقتی کاربر سؤال می‌پرسد

در زمان اجرا، سیستم سؤال را می‌گیرد، آن را برای جستجو آماده می‌کند، چند قطعه مرتبط پیدا می‌کند و در سیستم‌های بهتر ممکن است نتایج را دوباره رتبه‌بندی کند. بعد فقط قطعه‌های منتخب داخل زمینه مدل قرار می‌گیرند. مدل پاسخ را بر پایه این زمینه تولید می‌کند و در صورت طراحی درست، منبع یا شناسه سند نیز کنار پاسخ ارائه می‌شود.

User Question ↓ Query normalization / rewrite ↓ Hybrid retrieval (keyword + semantic) ↓ Metadata filters ↓ Reranking ↓ Top relevant chunks ↓ Prompt + retrieved context ↓ LLM ↓ Answer + citations

مستندات AWS نیز همین الگو را به‌صورت تبدیل اسناد به Chunk، ساخت Embedding، ذخیره در ایندکس برداری و سپس تبدیل سؤال کاربر به بردار و بازیابی قطعه‌های مشابه توضیح می‌دهد. در پیاده‌سازی‌های جدیدتر، موتور بازیابی می‌تواند فقط Vector Search نباشد و جستجوی متنی، Hybrid Search، Reranking و حتی بازیابی چندمرحله‌ای هم به آن اضافه شود.

اجزای اصلی RAG به زبان ساده

۱. Document یا منبع دانش

هر چیزی که قرار است مدل به آن استناد کند، منبع دانش است: فایل PDF، مستند محصول، صفحه سایت، دیتابیس SQL، ویکی داخلی، تیکت‌های پشتیبانی یا حتی داده ساختاریافته. مهم‌تر از حجم داده، کیفیت و اعتبار آن است. اگر ۲۰ هزار فایل قدیمی، تکراری و متناقض وارد سیستم کنیم، هیچ Vector Database جادویی آن‌ها را درست نمی‌کند.

۲. Chunk و Chunking

مدرک‌های بلند معمولاً به قطعه‌های کوچک‌تر تقسیم می‌شوند. به هر قطعه یک Chunk می‌گوییم. اگر Chunk بیش از حد بزرگ باشد، اطلاعات نامربوط زیادی همراه نتیجه وارد Context می‌شود. اگر خیلی کوچک باشد، معنای لازم از بین می‌رود و پاسخ ناقص می‌شود. بهترین اندازه ثابت و جهانی وجود ندارد؛ باید بر اساس نوع سند و سؤال‌ها آزمایش شود.

برای متن عمومی می‌توان مثلاً با بازه‌ای حدود ۳۰۰ تا ۸۰۰ توکن به‌عنوان نقطه شروع آزمایش کرد، اما برای آیین‌نامه، قرارداد، کد، جدول یا جزوه بهتر است Chunking بر اساس ساختار واقعی سند انجام شود: تیتر، ماده، بند، فصل، تابع یا بخش موضوعی.

۳. Embedding چیست؟

Embedding یک نمایش عددی از معناست. مدل Embedding متن را به مجموعه‌ای از اعداد تبدیل می‌کند تا بتوان شباهت معنایی دو متن را محاسبه کرد. به همین دلیل، اگر کاربر بنویسد «شرایط لغو کلاس» و سند عبارت «ضوابط کنسل کردن جلسه آموزشی» را داشته باشد، جستجوی معنایی می‌تواند ارتباط آن دو را تشخیص دهد؛ حتی اگر کلمات دقیقاً یکسان نباشند.

۴. Vector Database یا Vector Store

در بسیاری از معماری‌های RAG، Embeddingها در یک پایگاه برداری یا موتور جستجوی دارای قابلیت Vector Search ذخیره می‌شوند. وظیفه آن پیدا کردن نزدیک‌ترین بردارها به سؤال کاربر است. اما اینجا یک نکته مهم وجود دارد: RAG مساوی Vector Database نیست. می‌توانید RAG را با Elasticsearch/OpenSearch، PostgreSQL دارای افزونه برداری، سرویس‌های جستجو، SQL مستقیم یا Knowledge Graph نیز بسازید.

۵. Retrieval یا بازیابی

Retrieval قلب RAG است. اگر بخش بازیابی قطعه اشتباه را انتخاب کند، حتی بهترین مدل زبانی هم زمینه خوبی برای پاسخ ندارد. برای همین در سیستم Production فقط Vector Similarity کافی نیست. استفاده از فیلتر متادیتا، Keyword Search، Query Rewrite، Hybrid Search و Reranking معمولاً اهمیت زیادی پیدا می‌کند.

۶. Reranking

فرض کنید جستجوی اولیه ۲۰ قطعه نسبتاً مرتبط پیدا کرده است. Reranker آن‌ها را با دقت بیشتری نسبت به سؤال بررسی می‌کند و مثلاً ۵ مورد واقعاً مناسب را بالا می‌آورد. AWS نیز Reranking را به‌عنوان مرحله‌ای برای مرتب‌سازی دوباره اسناد بازیابی‌شده بر اساس ارتباط با Query توضیح می‌دهد. مزیت آن این است که Context نهایی می‌تواند کوچک‌تر اما مرتبط‌تر باشد.

۷. Generator یا مدل زبانی

در پایان، مدل زبانی متن سؤال، دستورهای سیستم و قطعه‌های بازیابی‌شده را می‌بیند و پاسخ می‌سازد. مدل بزرگ‌تر همیشه راه‌حل اصلی نیست. اگر Retrieval ضعیف باشد، تعویض یک مدل ۷ میلیارد پارامتری با مدل بسیار بزرگ‌تر شاید فقط پاسخ اشتباه را روان‌تر کند. اول باید بدانیم خطا از Retrieval است یا Generation.

یک مثال واقعی: دستیار هوشمند نرم‌افزار آموزشی دانشگاه

فرض کنیم یک اپلیکیشن آموزشی داریم و می‌خواهیم دانشجو از دستیار هوشمند سؤال بپرسد. منابع ما شامل جزوه‌ها، آیین‌نامه، تقویم آموزشی، FAQ استادان و محتوای دوره‌هاست. هدف این نیست که مدل هرچه بلد است بگوید؛ هدف این است که بر اساس منابع تأییدشده دانشگاه پاسخ بدهد.

سؤال دانشجو: «اگر دو جلسه غیبت کنم، اجازه شرکت در امتحان پایان‌ترم رو دارم؟»

سیستم ابتدا آیین‌نامه حضور و غیاب را جستجو می‌کند، بند مرتبط را پیدا می‌کند، همان بند را به مدل می‌دهد و مدل پاسخ را همراه با نام سند و شماره بخش تولید می‌کند. اگر سند جواب روشنی نداشت، سیستم بهتر است بگوید «در منابع فعلی پاسخ قطعی پیدا نشد»؛ نه اینکه قانون جدید اختراع کند.

برای چنین پروژه‌ای RAG از Fine-tuning طبیعی‌تر است، چون ممکن است آیین‌نامه هر ترم تغییر کند. کافی است سند جدید جایگزین شود و ایندکس به‌روز شود. نیازی نیست برای هر تغییر کوچک مدل دوباره آموزش ببیند.

همین الگو در پشتیبانی فروشگاه، دستیار منابع انسانی، موتور جستجوی دانش سازمانی، دستیار پزشک برای جستجو در پروتکل‌های تأییدشده، راهنمای فنی نرم‌افزار و سامانه‌های پاسخ‌گویی داخلی قابل استفاده است. اگر با معماری‌های ایجنتی کار می‌کنید، RAG یکی از اجزای مهم مهندسی زمینه است؛ یعنی اطلاعات درست را در لحظه درست وارد Context مدل می‌کند.

می‌خواهید یک دستیار RAG برای داده‌های خودتان بسازید؟

اگر پروژه شما شامل PDF، جزوه، دیتابیس، مستندات سازمانی یا دانش داخلی است، می‌توان معماری را بر اساس محرمانگی، سرعت، تعداد کاربران و امکان اجرای لوکال طراحی کرد.

RAG بهتر است یا Fine-tuning؟

این دو رقیب مستقیم نیستند. سؤال بهتر این است: می‌خواهیم دانش مدل عوض شود یا رفتار مدل؟ اگر اطلاعاتی داریم که تغییر می‌کند یا باید قابل استناد باشد، RAG معمولاً نقطه شروع منطقی‌تری است. اگر می‌خواهیم مدل یک قالب، سبک، زبان تخصصی یا رفتار ثابت را بهتر یاد بگیرد، Fine-tuning می‌تواند مناسب باشد.

معیارRAGFine-tuning
هدف اصلیاضافه کردن دانش بیرونی هنگام پاسختغییر رفتار یا الگوی مدل
به‌روزرسانی اطلاعاتبا تغییر اسناد و ایندکس نسبتاً ساده استمعمولاً نیاز به داده آموزشی و فرایند جدید دارد
ارجاع به منبعقابل طراحی و طبیعی‌تر استبه‌تنهایی منبع قابل بازیابی ایجاد نمی‌کند
اطلاعات خصوصیمی‌تواند هنگام اجرا از منبع خصوصی خوانده شودباید درباره ورود داده به فرایند آموزش حساس بود
سبک و قالب پاسخبا Prompt قابل کنترل است، ولی محدودبرای رفتار تکرارشونده می‌تواند مؤثرتر باشد
استفاده همزمانبله؛ می‌توان مدل Fine-tuned را داخل یک معماری RAG استفاده کرد.
قاعده ساده برای شروع: اگر مشکل شما این است که «مدل اطلاعات شرکت من را نمی‌داند»، اول RAG را بررسی کنید. اگر مشکل این است که «مدل اطلاعات را دارد ولی همیشه خروجی را با فرم و رفتار اشتباه می‌دهد»، Fine-tuning یا طراحی بهتر Prompt/Workflow را بررسی کنید.

اگر مدل Context Window بزرگی دارد، باز هم RAG لازم است؟

پنجره زمینه بزرگ کمک می‌کند فایل‌های بیشتری مستقیم به مدل بدهیم، اما این به معنی حذف RAG نیست. اگر فقط یک سند ۳۰ صفحه‌ای دارید و سؤال‌های محدود می‌پرسید، شاید ارسال مستقیم سند ساده‌تر باشد. اما وقتی صدها یا هزاران فایل، سطح دسترسی متفاوت، نسخه‌های مختلف و Queryهای مکرر داریم، ارسال همه اطلاعات به مدل هم پرهزینه است و هم می‌تواند باعث ورود اطلاعات نامرتبط شود.

در Context Engineering اصل مهم این است که مدل «اطلاعات درست» را ببیند، نه بیشترین اطلاعات ممکن را. RAG یک روش برای انتخاب همین اطلاعات است. حتی با Context Window بزرگ، Retrieval خوب می‌تواند ورودی را تمیزتر، ارزان‌تر و قابل‌کنترل‌تر کند.

انواع RAG؛ از Naive RAG تا Agentic RAG و GraphRAG

Naive RAG

ساده‌ترین حالت: اسناد Chunk می‌شوند، Embedding ساخته می‌شود، چند نتیجه نزدیک پیدا می‌کنیم و مستقیم به مدل می‌دهیم. برای Prototype و پروژه‌های کوچک خوب است، اما در داده پیچیده زود به سقف کیفیت می‌رسد.

Advanced RAG

قبل و بعد از Retrieval مراحل دقیق‌تری اضافه می‌شود: Query Rewrite، Metadata Filtering، Hybrid Search، Parent-Child Retrieval، Reranking، Deduplication و کنترل Context. هدف این است که مدل قطعه‌های دقیق‌تری ببیند.

Agentic RAG

در Agentic RAG، سیستم می‌تواند خودش تصمیم بگیرد کجا جستجو کند، سؤال را به چند زیرسؤال بشکند، چند بار بازیابی انجام دهد یا در صورت کافی نبودن شواهد دوباره جستجو کند. این معماری برای سؤال‌های چندمرحله‌ای مفید است اما پیچیدگی، هزینه و نیاز به ارزیابی را بالا می‌برد. برای فهم بهتر این لایه می‌توانید راهنمای مهندسی ایجنت هوش مصنوعی و مقاله Loop Engineering را بخوانید.

GraphRAG

وقتی روابط میان موجودیت‌ها مهم است، Knowledge Graph می‌تواند در کنار یا به‌جای Vector Retrieval استفاده شود. مثلاً در شبکه ارتباط شرکت‌ها، افراد، قراردادها یا وابستگی قطعات، صرفاً «شباهت متن» همیشه کافی نیست. GraphRAG تلاش می‌کند ساختار روابط را هم وارد بازیابی کند.

RAG فارسی چه چالش‌هایی دارد؟

ساخت RAG فارسی فقط ترجمه یک آموزش انگلیسی نیست. چند جزئیات کوچک می‌توانند بازیابی را شدیداً خراب کنند. مهم‌ترین مورد کیفیت متن ورودی است. PDFهای فارسی اسکن‌شده، جدول‌ها، فونت‌های عجیب یا استخراج ناقص ممکن است ترتیب کلمات را به هم بزنند. اگر متن درست وارد ایندکس نشود، مدل Embedding هم معجزه نمی‌کند.

  • نرمال‌سازی حروف: «ی/ي» و «ک/ك»، اعداد فارسی و انگلیسی، فاصله و نیم‌فاصله باید کنترل شوند.
  • مدل Embedding: باید فارسی یا چندزبانه را واقعاً خوب پوشش دهد؛ صرفاً مشهور بودن یک مدل انگلیسی کافی نیست.
  • Hybrid Search: در نام اشخاص، کد محصول، شماره ماده، اصطلاح حقوقی و شناسه‌ها Keyword Search خیلی مهم است.
  • Chunking ساختاری: تیترها، مواد، سؤال و جواب، فصل‌ها و جدول‌ها را تا حد ممکن حفظ کنید.
  • Reranker چندزبانه: اگر استفاده می‌شود، روی سؤال‌های فارسی واقعی پروژه تست شود.
  • پاسخ منبع‌محور: از مدل بخواهید اگر شواهد کافی نیست، صریحاً عدم قطعیت را اعلام کند.
مثال: اگر کاربر «قانون مرخصی ساعتی» را جستجو کند ولی سند نوشته باشد «ضوابط خروج موقت پرسنل»، Embedding خوب به معنای نزدیک شدن دو عبارت کمک می‌کند؛ اما اگر کاربر «ماده ۱۲» را بخواهد، جستجوی کلمه‌ای و فیلتر متادیتا ممکن است از Semantic Search مهم‌تر باشد. همین دلیل اصلی محبوبیت Hybrid Retrieval در پروژه‌های واقعی است.

RAG لوکال چیست و آیا می‌شود بدون API خارجی ساخت؟

بله. RAG لوکال یعنی بخش‌های اصلی سیستم داخل زیرساخت خودتان اجرا شوند: مدل زبانی، مدل Embedding، Vector Store و سرویس Retrieval. این روش برای داده‌های حساس، محدودیت دسترسی اینترنت، هزینه قابل پیش‌بینی یا کنترل کامل زیرساخت جذاب است.

معماری لوکال الزاماً به معنی یک سرور بسیار قوی نیست. اگر تعداد کاربران کم باشد و مدل سبک انتخاب شود، می‌توان Prototypeهای کاربردی را روی سخت‌افزار متوسط ساخت. اما برای سرعت خوب در پاسخ‌های همزمان، مدل‌های بزرگ، Context طولانی یا Reranking سنگین، CPU/RAM/GPU مناسب لازم می‌شود.

جزءانتخاب لوکال نمونهنکته
LLMمدل Instruct سبک یا متوسطکیفیت فارسی و سرعت روی سخت‌افزار واقعی تست شود.
Embeddingمدل چندزبانهروی مجموعه سؤال فارسی Benchmark داخلی بگیرید.
Vector StorePostgreSQL/pgvector، Qdrant، Elasticsearch/OpenSearch و...انتخاب بر اساس مقیاس، تیم و نیاز جستجو.
Rerankerاختیاری ولی مفیداگر latency مهم است، هزینه‌اش را اندازه‌گیری کنید.
APIFastAPI یا سرویس مشابهاحراز هویت، Rate Limit و Log را از ابتدا جدی بگیرید.

برای پروژه‌های آموزشی یا سازمانی، بهترین انتخاب مدل با حدس انجام نمی‌شود؛ باید چند مدل روی یک مجموعه سؤال واقعی مقایسه شوند. سرعت، مصرف RAM/VRAM، دقت فارسی، توانایی پیروی از دستور و کیفیت پاسخ بر اساس Context را کنار هم اندازه بگیرید.

چطور بفهمیم RAG خوب کار می‌کند؟ ارزیابی را دو بخش کنید

یکی از اشتباه‌های رایج این است که فقط پاسخ نهایی را بخوانیم و بگوییم «خوب بود». برای سیستم Production باید بفهمیم مشکل از کدام قسمت است. ارزیابی را حداقل به دو لایه تقسیم کنید: Retrieval و Generation.

ارزیابی Retrieval

  • آیا قطعه‌ای که جواب درست داخل آن است در Top-K نتایج پیدا شد؟
  • آیا نتایج بالا واقعاً مرتبط‌اند یا فقط از نظر برداری شبیه‌اند؟
  • آیا فیلتر تاریخ، نوع سند، کاربر و سطح دسترسی درست اعمال شده؟
  • آیا Reranker ترتیب نتایج را بهتر کرده یا فقط latency اضافه کرده؟

ارزیابی Generation

  • آیا پاسخ با شواهد بازیابی‌شده سازگار است؟
  • آیا مدل چیزی اضافه کرده که در منابع وجود ندارد؟
  • آیا منبعی که کنار پاسخ نشان می‌دهیم واقعاً همان ادعا را پشتیبانی می‌کند؟
  • آیا پاسخ برای سؤال کاربر کافی، مستقیم و قابل فهم است؟
روش عملی: قبل از لانچ، ۵۰ تا ۲۰۰ سؤال واقعی از کاربران آینده جمع کنید. برای هر سؤال مشخص کنید پاسخ درست باید از کدام منبع بیاید. بعد هر تغییر در Chunking، Embedding، Search یا Prompt را روی همین Test Set مقایسه کنید. این Benchmark داخلی از هر ادعای عمومی درباره «بهترین مدل» ارزشمندتر است.

امنیت و حریم خصوصی در RAG

RAG دسترسی مدل به دانش سازمان را بیشتر می‌کند؛ بنابراین اگر امنیت ضعیف باشد، می‌تواند اطلاعاتی را هم که نباید، بازیابی کند. کنترل دسترسی باید قبل از ارسال Context به LLM انجام شود، نه بعد از تولید پاسخ.

  • Document-level access: هر کاربر فقط اسنادی را ببیند که مجوزش را دارد.
  • Metadata filter: واحد سازمانی، پروژه، محرمانگی، زبان و تاریخ در بازیابی لحاظ شود.
  • Prompt Injection: اسناد بازیابی‌شده ممکن است خودشان شامل دستور مخرب باشند؛ متن سند نباید به‌عنوان دستور سطح بالا اعتماد شود.
  • Logging: سؤال، اسناد بازیابی‌شده، پاسخ و خطاهای دسترسی برای Audit ثبت شوند؛ با رعایت سیاست حریم خصوصی.
  • Source freshness: سند منسوخ یا لغوشده باید از ایندکس خارج شود.
  • PII: اطلاعات شخصی غیرضروری قبل از Embedding یا ارسال به مدل حذف یا ماسک شود.

اگر داده شما محرمانه است، RAG لوکال یا زیرساخت خصوصی می‌تواند گزینه مهمی باشد، اما «لوکال بودن» به‌تنهایی امنیت ایجاد نمی‌کند. مدیریت دسترسی، Patch، Backup، رمزنگاری، Log و سیاست نگهداری داده همچنان لازم‌اند.

۱۲ اشتباه رایج در ساخت RAG

  1. ریختن همه فایل‌ها داخل Vector DB بدون پاکسازی: داده تکراری و منسوخ، پاسخ را آلوده می‌کند.
  2. Chunking ثابت برای همه چیز: قرارداد، کد، FAQ و کتاب ساختار یکسان ندارند.
  3. وابستگی کامل به Vector Search: شماره ماده، شناسه و نام خاص گاهی Keyword Search می‌خواهند.
  4. نداشتن Metadata: بدون منبع، تاریخ، دسته و سطح دسترسی، کنترل بازیابی سخت می‌شود.
  5. Top-K خیلی بالا: Context را با قطعه‌های نامرتبط پر می‌کند.
  6. Top-K خیلی پایین: ممکن است بخش مکمل پاسخ حذف شود.
  7. نداشتن Reranking در مسئله پیچیده: نتایج اولیه همیشه بهترین ترتیب را ندارند.
  8. اعتماد به پاسخ بدون Citation: کاربر راهی برای بررسی ندارد.
  9. ارزیابی فقط با چند سؤال نمایشی: Demo خوب لزوماً Production خوب نیست.
  10. تغییر همزمان چند جزء: اگر Embedding، Chunking و Prompt را باهم عوض کنید، نمی‌فهمید چه چیزی بهتر شد.
  11. حل مشکل Retrieval با مدل بزرگ‌تر: اگر سند غلط بازیابی شده، LLM بزرگ‌تر اصل مشکل را حل نمی‌کند.
  12. نداشتن پاسخ «نمی‌دانم»: سیستم باید بتواند در نبود شواهد کافی پاسخ ندهد یا درخواست را به انسان ارجاع دهد.

چه زمانی اصلاً RAG لازم نیست؟

RAG راه‌حل همه پروژه‌های AI نیست. اگر سؤال‌ها به دانش عمومی مدل محدودند، اگر منبع اختصاصی ندارید، اگر کل داده کوچک و ثابت است و مستقیم در Prompt جا می‌شود، یا اگر مسئله شما اساساً «تولید خلاقانه» است، ساخت Retrieval Pipeline شاید پیچیدگی اضافه باشد.

همچنین اگر پاسخ باید از دیتابیس ساختاریافته دقیق بیاید، گاهی Query مستقیم SQL یا یک API ابزار بهتر از Vector RAG است. برای مثال «موجودی کالای ۸۴۵ الان چند عدد است؟» بهتر است از منبع تراکنشی زنده خوانده شود، نه از Chunk قدیمی کاتالوگ.

اصل معماری: منبع حقیقت را بشناسید. برای متن غیرساختاریافته RAG عالی است؛ برای قیمت لحظه‌ای، موجودی، وضعیت سفارش یا داده حسابداری، Tool/API/SQL اغلب باید منبع اصلی باشد. سیستم‌های قوی این روش‌ها را ترکیب می‌کنند.

نقشه راه ساخت یک RAG درست؛ از صفر تا نسخه قابل استفاده

  1. Use Case را محدود کنید. مثلاً «پاسخ به سؤال دانشجو از ۳۰ جزوه» بهتر از «دستیار همه‌کاره دانشگاه» است.
  2. منبع حقیقت را مشخص کنید. کدام فایل‌ها معتبرند؟ چه کسی آن‌ها را تأیید می‌کند؟
  3. ۲۰ تا ۵۰ سؤال واقعی جمع کنید. قبل از انتخاب Vector DB و مدل، معیار موفقیت بسازید.
  4. Parsing را تست کنید. مخصوصاً PDF فارسی، جدول، اسکن و پاورپوینت.
  5. Chunking اولیه بسازید. ساختار تیتر و بند را حفظ کنید.
  6. یک Embedding مناسب فارسی/چندزبانه انتخاب کنید. با Test Set خودتان مقایسه کنید.
  7. Retrieval ساده را بسازید. Semantic + Keyword را جداگانه تست کنید.
  8. Hybrid Search و Metadata Filter را اضافه کنید. فقط اگر Benchmark بهتر شد.
  9. Reranking را آزمایش کنید. کیفیت در برابر latency و هزینه سنجیده شود.
  10. Prompt را منبع‌محور کنید. مدل فقط از Context پاسخ دهد و در نبود شواهد اعلام کند.
  11. Citation واقعی بسازید. لینک سند، عنوان، صفحه یا Chunk ID را نگه دارید.
  12. ارزیابی خودکار + انسانی داشته باشید. Retrieval و Answer را جدا بسنجید.
  13. امنیت را قبل از Production ببندید. Auth، Permission، Rate Limit، Audit و PII.
  14. Monitoring اضافه کنید. سؤال‌های بدون پاسخ، سرچ‌های ضعیف و منابع پرتکرار را استخراج کنید.
  15. با داده واقعی بهینه کنید. نه با حس و نه با یک Demo زیبا.

اگر مفاهیم Prompt و Context هنوز مبهم هستند، بهتر است قبل یا همزمان با این مسیر، مقاله Prompt Engineering چیست؟ و راهنمای Context Engineering را بخوانید. برای درک اینکه خود مدل زبانی در پشت صحنه چه می‌کند نیز مقاله مدل‌های زبانی بزرگ چگونه کار می‌کنند؟ مکمل خوبی است.

RAG در کسب‌وکارهای ایرانی چه کاربردی دارد؟

کاربرد RAG فقط شرکت‌های بزرگ نیست. هر کسب‌وکاری که «حجم زیادی اطلاعات قابل جستجو» دارد می‌تواند از آن استفاده کند. یک فروشگاه می‌تواند راهنمای محصول و سیاست مرجوعی را به دستیار بدهد. یک آموزشگاه می‌تواند جزوه‌ها و قوانین کلاس را قابل پرسش کند. شرکت نرم‌افزاری می‌تواند مستندات فنی را به دستیار پشتیبانی متصل کند. واحد منابع انسانی می‌تواند آیین‌نامه‌ها را قابل جستجو کند.

اما ارزش واقعی زمانی ایجاد می‌شود که RAG به فرایند وصل شود. مثلاً دستیار ابتدا از مستندات جواب را پیدا کند و اگر سؤال درباره وضعیت سفارش است از API فروشگاه داده زنده بگیرد؛ اگر اطمینان پایین بود، تیکت برای اپراتور بسازد. این همان نقطه‌ای است که RAG از یک «چت با PDF» ساده به بخشی از یک سیستم هوشمند تبدیل می‌شود.

برای دیدن مسیرهای اجرایی می‌توانید صفحه هوش مصنوعی فیلتور، خدمات فیلتور و ابزارهای فیلتور را ببینید. اگر پروژه شما مشخص است، صفحه قیمت‌ها و برآورد پروژه نیز دید اولیه‌ای از ساخت ربات، سایت و راهکارهای اتوماسیون می‌دهد.

واژه‌نامه سریع RAG

اصطلاحمعنی ساده
RAGپیدا کردن اطلاعات مرتبط و دادن آن به مدل قبل از تولید پاسخ.
Chunkیک قطعه کوچک از سند که مستقل قابل بازیابی است.
Embeddingنمایش عددی معنا برای مقایسه شباهت متن‌ها.
Vector Storeمحل ذخیره و جستجوی بردارهای معنایی.
Retrieverجزئی که نتیجه مرتبط را از منبع دانش پیدا می‌کند.
Top-Kتعداد نتایجی که از جستجو برای مرحله بعد انتخاب می‌کنیم.
Rerankerمدلی که نتایج اولیه را دوباره بر اساس ارتباط مرتب می‌کند.
Hybrid Searchترکیب جستجوی معنایی و کلمه‌ای.
Groundingمتکی کردن پاسخ به داده یا منبع مشخص.
Hallucinationپاسخی که مدل با ظاهر مطمئن تولید می‌کند اما پشتوانه کافی ندارد یا اشتباه است.

پرسش‌های متداول درباره RAG

RAG چیست؟

RAG یا Retrieval-Augmented Generation روشی است که قبل از تولید پاسخ، اطلاعات مرتبط را از اسناد، پایگاه داده یا منبع دانش بازیابی می‌کند و آن‌ها را به زمینه مدل زبانی می‌دهد تا پاسخ بر پایه داده‌های واقعی‌تر و به‌روزتر ساخته شود.

آیا RAG جلوی توهم هوش مصنوعی را کامل می‌گیرد؟

خیر. RAG می‌تواند احتمال پاسخ‌های بدون پشتوانه را کاهش دهد، اما آن را صفر نمی‌کند. کیفیت بازیابی، کیفیت اسناد، پرامپت، مدل و روش ارزیابی همگی روی دقت نهایی اثر دارند.

RAG چه تفاوتی با Fine-tuning دارد؟

RAG برای رساندن دانش بیرونی و قابل‌به‌روزرسانی به مدل مناسب است؛ Fine-tuning بیشتر برای تغییر رفتار، سبک، قالب یا الگوی پاسخ‌گویی مدل استفاده می‌شود. در بسیاری از پروژه‌ها این دو می‌توانند مکمل هم باشند.

آیا می‌توان RAG را کاملاً لوکال اجرا کرد؟

بله. می‌توان مدل زبانی، مدل Embedding، پایگاه برداری و سرویس بازیابی را روی سرور یا زیرساخت خصوصی اجرا کرد. سرعت و کیفیت به مدل‌ها، حجم داده، سخت‌افزار و طراحی معماری بستگی دارد.

برای RAG فارسی چه نکاتی مهم است؟

کیفیت استخراج متن فارسی، نرمال‌سازی حروف و نیم‌فاصله، انتخاب Embedding چندزبانه یا مناسب فارسی، Chunking بر اساس ساختار سند و استفاده از جستجوی ترکیبی و Reranking اهمیت زیادی دارد.

آیا برای ساخت RAG حتماً Vector Database لازم است؟

خیر. Vector Database گزینه رایجی برای جستجوی معنایی است، اما RAG می‌تواند از جستجوی متنی، SQL، موتورهای Search، Knowledge Graph یا ترکیبی از چند روش بازیابی استفاده کند.

جمع‌بندی: RAG را درست بفهمیم، نه صرفاً مد روز

RAG یک ایده ساده اما بسیار قدرتمند دارد: مدل زبانی مجبور نیست همه چیز را از حافظه خودش بداند. می‌توان دانش را بیرون از مدل نگه داشت، هنگام سؤال بخش مرتبط را پیدا کرد و همان را به مدل داد. این معماری برای اطلاعات خصوصی، تخصصی، متغیر و قابل استناد بسیار کاربردی است.

اما کیفیت یک سیستم RAG بیشتر از اینکه به اسم ابزارها وابسته باشد، به طراحی دقیق بستگی دارد: منبع درست، Parsing سالم، Chunking مناسب، Retrieval قوی، متادیتا، Hybrid Search، Reranking، Prompt منبع‌محور، Citation، ارزیابی و امنیت. اگر این اجزا درست نباشند، RAG فقط یک Vector Database گران‌قیمت کنار یک Chatbot خواهد بود.

اگر تازه شروع می‌کنید، پروژه را کوچک نگه دارید. یک مجموعه سند محدود، چند ده سؤال واقعی و یک Benchmark ساده بسازید. بعد مرحله‌به‌مرحله کیفیت Retrieval و Generation را بهتر کنید. این مسیر بسیار مطمئن‌تر از انتخاب ابزار بر اساس ترند یا بزرگ‌ترین مدل موجود است.

قدم بعدی: از مقاله به پروژه واقعی

برای طراحی دستیار دانش سازمانی، RAG فارسی، RAG لوکال یا اتصال مدل هوش مصنوعی به اسناد و دیتابیس، نیاز پروژه را برای فیلتور بفرستید تا معماری مناسب بر اساس داده، سرعت، امنیت و بودجه مشخص شود.

مطالب مرتبط برای ادامه یادگیری

منابع و مطالعه بیشتر

این مقاله برای تعریف‌های اصلی و معماری RAG بر منابع علمی و مستندات فنی معتبر تکیه دارد. جزئیات اجرایی باید با داده و زیرساخت هر پروژه Benchmark شوند.

  1. Lewis et al. — Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (2020)
  2. Google Cloud — What is Retrieval-Augmented Generation (RAG)?
  3. AWS — How Amazon Bedrock knowledge bases work
  4. AWS — Improve relevance with reranking
  5. AWS Prescriptive Guidance — Understanding Retrieval Augmented Generation