RAG چیست؟
برای فهم RAG لازم نیست متخصص یادگیری ماشین باشید. یک مثال ساده کافی است: فرض کنید از یک دستیار هوش مصنوعی میپرسید «شهریه درس پایگاه داده این ترم چقدر است؟». اگر مدل فقط از دانش عمومی خود استفاده کند، احتمالاً هیچ راهی برای دانستن قیمت دقیق و جدید دانشگاه شما ندارد. اما اگر سیستم قبل از پاسخ، فایل شهریه ترم جاری یا دیتابیس دانشگاه را جستجو کند و رقم صحیح را پیدا کند، مدل میتواند بر پایه داده واقعی پاسخ بدهد.
این دقیقاً همان ایده RAG است: دانش موردنیاز را هنگام سؤال بازیابی کن، آن را به زمینه مدل اضافه کن و سپس پاسخ بساز. در تعریف امروزی سرویسهای ابری نیز همین سه مرحله دیده میشود: بازیابی اطلاعات، افزودن اطلاعات بازیابیشده به زمینه و تولید پاسخ. گوگل کلاد RAG را ترکیب سیستمهای بازیابی سنتی با توانایی مدلهای مولد توصیف میکند و مقاله اصلی RAG نیز در سال ۲۰۲۰ توسط Lewis و همکاران، ترکیب «حافظه پارامتریک» مدل با «حافظه غیرپارامتریک» قابل بازیابی را بررسی کرد.
چرا RAG بهوجود آمد؟ مدل زبانی چه مشکلی دارد؟
مدلهای زبانی بزرگ مثل یک دانشنامه ثابت نیستند. آنها الگوهای زبان و حجم بزرگی از دانش را در پارامترهایشان یاد گرفتهاند، اما چند محدودیت طبیعی دارند. اول اینکه دانش آنها همیشه شامل اطلاعات لحظهای و خصوصی شما نیست. دوم اینکه ممکن است در نبود اطلاعات کافی، پاسخ روان اما اشتباه بسازند. سوم اینکه تغییر یک عدد، قانون یا سند داخلی نباید ما را مجبور کند دوباره کل مدل را آموزش دهیم.
RAG برای همین سناریوها بسیار جذاب است. اطلاعاتی مثل آییننامه شرکت، کاتالوگ محصول، قیمت امروز، مستند فنی، قرارداد، جزوه دانشگاه، فایل PDF یا دانش داخلی سازمان میتواند خارج از مدل نگهداری شود و فقط زمانی که لازم است به مدل داده شود.
اطلاعاتی که مدل عمومی هیچوقت در آموزش خود ندیده؛ مثل اسناد داخلی شرکت یا محتوای اختصاصی نرمافزار آموزشی.
قیمت، قوانین، موجودی، برنامه کلاس یا مشخصات محصول دائماً تغییر میکنند و بهتر است بیرون از پارامترهای مدل نگهداری شوند.
اگر همراه پاسخ منبع و قطعه سند نمایش داده شود، کاربر یا اپراتور میتواند پاسخ را بررسی کند.
میتوان مشخص کرد کدام سند، کدام بخش سازمان یا کدام داده برای هر کاربر قابل بازیابی باشد.
RAG چگونه کار میکند؟ مسیر کامل از فایل تا پاسخ
برای یادگیری درست RAG باید دو فاز را جدا کنیم: آمادهسازی دانش و پاسخگویی در زمان اجرا. خیلی از آموزشها فقط لحظه سؤال را نشان میدهند، درحالیکه کیفیت مرحله آمادهسازی دانش معمولاً تعیین میکند خروجی نهایی چقدر خوب باشد.
فاز اول: آمادهسازی و ایندکس کردن دانش
PDF، Word، صفحه وب، FAQ، دیتابیس، فایل راهنما یا هر منبع قابل اعتماد.
استخراج متن، عنوانها، جدولها، شماره صفحه، متادیتا و ساختار سند.
تقسیم محتوای بزرگ به قطعههایی که مستقل و قابل بازیابی باشند.
تبدیل هر قطعه به نمایش عددی برای جستجوی معنایی.
ذخیره متن، بردار و متادیتا در موتور جستجو یا Vector Store.
ثبت سطح دسترسی، زبان، تاریخ، دسته و منبع برای فیلتر دقیقتر.
ساخت مجموعه سؤالهای واقعی برای اینکه بعداً کیفیت بازیابی اندازهگیری شود.
کنترل نسخه و حذف اسناد منسوخ تا پاسخ از داده قدیمی ساخته نشود.
فاز دوم: وقتی کاربر سؤال میپرسد
در زمان اجرا، سیستم سؤال را میگیرد، آن را برای جستجو آماده میکند، چند قطعه مرتبط پیدا میکند و در سیستمهای بهتر ممکن است نتایج را دوباره رتبهبندی کند. بعد فقط قطعههای منتخب داخل زمینه مدل قرار میگیرند. مدل پاسخ را بر پایه این زمینه تولید میکند و در صورت طراحی درست، منبع یا شناسه سند نیز کنار پاسخ ارائه میشود.
مستندات 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 با Search و Semantic Search چیست؟
Search فقط نتیجه پیدا میکند. RAG بعد از پیدا کردن نتیجه، از مدل مولد کمک میگیرد تا پاسخ نهایی را با توجه به نتایج بسازد. Semantic Search هم یک روش بازیابی است که روی شباهت معنایی تمرکز دارد؛ یعنی میتواند یکی از اجزای RAG باشد.
| روش | چه کاری میکند؟ | خروجی معمول |
|---|---|---|
| Keyword Search | کلمات یا الگوهای متنی را پیدا میکند. | فهرست نتایج |
| Semantic Search | معنای سؤال و محتوا را با Embedding مقایسه میکند. | قطعههای معنایی مرتبط |
| Hybrid Search | جستجوی کلمهای و معنایی را ترکیب میکند. | نتایج دقیقتر برای بسیاری از Queryها |
| RAG | نتیجه بازیابی را وارد Context مدل مولد میکند. | پاسخ طبیعی + در حالت خوب، منبع |
به همین دلیل، اگر کاربر فقط نیاز دارد «فایل درست» را پیدا کند، شاید Search کافی باشد. اگر باید بر اساس چند سند پاسخ خلاصه، توضیح یا ترکیب شود، RAG ارزش بیشتری پیدا میکند.
RAG بهتر است یا Fine-tuning؟
این دو رقیب مستقیم نیستند. سؤال بهتر این است: میخواهیم دانش مدل عوض شود یا رفتار مدل؟ اگر اطلاعاتی داریم که تغییر میکند یا باید قابل استناد باشد، RAG معمولاً نقطه شروع منطقیتری است. اگر میخواهیم مدل یک قالب، سبک، زبان تخصصی یا رفتار ثابت را بهتر یاد بگیرد، Fine-tuning میتواند مناسب باشد.
| معیار | RAG | Fine-tuning |
|---|---|---|
| هدف اصلی | اضافه کردن دانش بیرونی هنگام پاسخ | تغییر رفتار یا الگوی مدل |
| بهروزرسانی اطلاعات | با تغییر اسناد و ایندکس نسبتاً ساده است | معمولاً نیاز به داده آموزشی و فرایند جدید دارد |
| ارجاع به منبع | قابل طراحی و طبیعیتر است | بهتنهایی منبع قابل بازیابی ایجاد نمیکند |
| اطلاعات خصوصی | میتواند هنگام اجرا از منبع خصوصی خوانده شود | باید درباره ورود داده به فرایند آموزش حساس بود |
| سبک و قالب پاسخ | با Prompt قابل کنترل است، ولی محدود | برای رفتار تکرارشونده میتواند مؤثرتر باشد |
| استفاده همزمان | بله؛ میتوان مدل Fine-tuned را داخل یک معماری RAG استفاده کرد. | |
اگر مدل 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 چندزبانه: اگر استفاده میشود، روی سؤالهای فارسی واقعی پروژه تست شود.
- پاسخ منبعمحور: از مدل بخواهید اگر شواهد کافی نیست، صریحاً عدم قطعیت را اعلام کند.
RAG لوکال چیست و آیا میشود بدون API خارجی ساخت؟
بله. RAG لوکال یعنی بخشهای اصلی سیستم داخل زیرساخت خودتان اجرا شوند: مدل زبانی، مدل Embedding، Vector Store و سرویس Retrieval. این روش برای دادههای حساس، محدودیت دسترسی اینترنت، هزینه قابل پیشبینی یا کنترل کامل زیرساخت جذاب است.
معماری لوکال الزاماً به معنی یک سرور بسیار قوی نیست. اگر تعداد کاربران کم باشد و مدل سبک انتخاب شود، میتوان Prototypeهای کاربردی را روی سختافزار متوسط ساخت. اما برای سرعت خوب در پاسخهای همزمان، مدلهای بزرگ، Context طولانی یا Reranking سنگین، CPU/RAM/GPU مناسب لازم میشود.
| جزء | انتخاب لوکال نمونه | نکته |
|---|---|---|
| LLM | مدل Instruct سبک یا متوسط | کیفیت فارسی و سرعت روی سختافزار واقعی تست شود. |
| Embedding | مدل چندزبانه | روی مجموعه سؤال فارسی Benchmark داخلی بگیرید. |
| Vector Store | PostgreSQL/pgvector، Qdrant، Elasticsearch/OpenSearch و... | انتخاب بر اساس مقیاس، تیم و نیاز جستجو. |
| Reranker | اختیاری ولی مفید | اگر latency مهم است، هزینهاش را اندازهگیری کنید. |
| API | FastAPI یا سرویس مشابه | احراز هویت، Rate Limit و Log را از ابتدا جدی بگیرید. |
برای پروژههای آموزشی یا سازمانی، بهترین انتخاب مدل با حدس انجام نمیشود؛ باید چند مدل روی یک مجموعه سؤال واقعی مقایسه شوند. سرعت، مصرف RAM/VRAM، دقت فارسی، توانایی پیروی از دستور و کیفیت پاسخ بر اساس Context را کنار هم اندازه بگیرید.
چطور بفهمیم RAG خوب کار میکند؟ ارزیابی را دو بخش کنید
یکی از اشتباههای رایج این است که فقط پاسخ نهایی را بخوانیم و بگوییم «خوب بود». برای سیستم Production باید بفهمیم مشکل از کدام قسمت است. ارزیابی را حداقل به دو لایه تقسیم کنید: Retrieval و Generation.
ارزیابی Retrieval
- آیا قطعهای که جواب درست داخل آن است در Top-K نتایج پیدا شد؟
- آیا نتایج بالا واقعاً مرتبطاند یا فقط از نظر برداری شبیهاند؟
- آیا فیلتر تاریخ، نوع سند، کاربر و سطح دسترسی درست اعمال شده؟
- آیا Reranker ترتیب نتایج را بهتر کرده یا فقط latency اضافه کرده؟
ارزیابی Generation
- آیا پاسخ با شواهد بازیابیشده سازگار است؟
- آیا مدل چیزی اضافه کرده که در منابع وجود ندارد؟
- آیا منبعی که کنار پاسخ نشان میدهیم واقعاً همان ادعا را پشتیبانی میکند؟
- آیا پاسخ برای سؤال کاربر کافی، مستقیم و قابل فهم است؟
امنیت و حریم خصوصی در RAG
RAG دسترسی مدل به دانش سازمان را بیشتر میکند؛ بنابراین اگر امنیت ضعیف باشد، میتواند اطلاعاتی را هم که نباید، بازیابی کند. کنترل دسترسی باید قبل از ارسال Context به LLM انجام شود، نه بعد از تولید پاسخ.
- Document-level access: هر کاربر فقط اسنادی را ببیند که مجوزش را دارد.
- Metadata filter: واحد سازمانی، پروژه، محرمانگی، زبان و تاریخ در بازیابی لحاظ شود.
- Prompt Injection: اسناد بازیابیشده ممکن است خودشان شامل دستور مخرب باشند؛ متن سند نباید بهعنوان دستور سطح بالا اعتماد شود.
- Logging: سؤال، اسناد بازیابیشده، پاسخ و خطاهای دسترسی برای Audit ثبت شوند؛ با رعایت سیاست حریم خصوصی.
- Source freshness: سند منسوخ یا لغوشده باید از ایندکس خارج شود.
- PII: اطلاعات شخصی غیرضروری قبل از Embedding یا ارسال به مدل حذف یا ماسک شود.
اگر داده شما محرمانه است، RAG لوکال یا زیرساخت خصوصی میتواند گزینه مهمی باشد، اما «لوکال بودن» بهتنهایی امنیت ایجاد نمیکند. مدیریت دسترسی، Patch، Backup، رمزنگاری، Log و سیاست نگهداری داده همچنان لازماند.
۱۲ اشتباه رایج در ساخت RAG
- ریختن همه فایلها داخل Vector DB بدون پاکسازی: داده تکراری و منسوخ، پاسخ را آلوده میکند.
- Chunking ثابت برای همه چیز: قرارداد، کد، FAQ و کتاب ساختار یکسان ندارند.
- وابستگی کامل به Vector Search: شماره ماده، شناسه و نام خاص گاهی Keyword Search میخواهند.
- نداشتن Metadata: بدون منبع، تاریخ، دسته و سطح دسترسی، کنترل بازیابی سخت میشود.
- Top-K خیلی بالا: Context را با قطعههای نامرتبط پر میکند.
- Top-K خیلی پایین: ممکن است بخش مکمل پاسخ حذف شود.
- نداشتن Reranking در مسئله پیچیده: نتایج اولیه همیشه بهترین ترتیب را ندارند.
- اعتماد به پاسخ بدون Citation: کاربر راهی برای بررسی ندارد.
- ارزیابی فقط با چند سؤال نمایشی: Demo خوب لزوماً Production خوب نیست.
- تغییر همزمان چند جزء: اگر Embedding، Chunking و Prompt را باهم عوض کنید، نمیفهمید چه چیزی بهتر شد.
- حل مشکل Retrieval با مدل بزرگتر: اگر سند غلط بازیابی شده، LLM بزرگتر اصل مشکل را حل نمیکند.
- نداشتن پاسخ «نمیدانم»: سیستم باید بتواند در نبود شواهد کافی پاسخ ندهد یا درخواست را به انسان ارجاع دهد.
چه زمانی اصلاً RAG لازم نیست؟
RAG راهحل همه پروژههای AI نیست. اگر سؤالها به دانش عمومی مدل محدودند، اگر منبع اختصاصی ندارید، اگر کل داده کوچک و ثابت است و مستقیم در Prompt جا میشود، یا اگر مسئله شما اساساً «تولید خلاقانه» است، ساخت Retrieval Pipeline شاید پیچیدگی اضافه باشد.
همچنین اگر پاسخ باید از دیتابیس ساختاریافته دقیق بیاید، گاهی Query مستقیم SQL یا یک API ابزار بهتر از Vector RAG است. برای مثال «موجودی کالای ۸۴۵ الان چند عدد است؟» بهتر است از منبع تراکنشی زنده خوانده شود، نه از Chunk قدیمی کاتالوگ.
نقشه راه ساخت یک RAG درست؛ از صفر تا نسخه قابل استفاده
- Use Case را محدود کنید. مثلاً «پاسخ به سؤال دانشجو از ۳۰ جزوه» بهتر از «دستیار همهکاره دانشگاه» است.
- منبع حقیقت را مشخص کنید. کدام فایلها معتبرند؟ چه کسی آنها را تأیید میکند؟
- ۲۰ تا ۵۰ سؤال واقعی جمع کنید. قبل از انتخاب Vector DB و مدل، معیار موفقیت بسازید.
- Parsing را تست کنید. مخصوصاً PDF فارسی، جدول، اسکن و پاورپوینت.
- Chunking اولیه بسازید. ساختار تیتر و بند را حفظ کنید.
- یک Embedding مناسب فارسی/چندزبانه انتخاب کنید. با Test Set خودتان مقایسه کنید.
- Retrieval ساده را بسازید. Semantic + Keyword را جداگانه تست کنید.
- Hybrid Search و Metadata Filter را اضافه کنید. فقط اگر Benchmark بهتر شد.
- Reranking را آزمایش کنید. کیفیت در برابر latency و هزینه سنجیده شود.
- Prompt را منبعمحور کنید. مدل فقط از Context پاسخ دهد و در نبود شواهد اعلام کند.
- Citation واقعی بسازید. لینک سند، عنوان، صفحه یا Chunk ID را نگه دارید.
- ارزیابی خودکار + انسانی داشته باشید. Retrieval و Answer را جدا بسنجید.
- امنیت را قبل از Production ببندید. Auth، Permission، Rate Limit، Audit و PII.
- Monitoring اضافه کنید. سؤالهای بدون پاسخ، سرچهای ضعیف و منابع پرتکرار را استخراج کنید.
- با داده واقعی بهینه کنید. نه با حس و نه با یک 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 شوند.
- Lewis et al. — Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (2020)
- Google Cloud — What is Retrieval-Augmented Generation (RAG)?
- AWS — How Amazon Bedrock knowledge bases work
- AWS — Improve relevance with reranking
- AWS Prescriptive Guidance — Understanding Retrieval Augmented Generation