پرامپت‌نویسی

RAG-style prompting

RAG-style prompting — راهنمای فارسی از مجموعهٔ «پرامپت‌نویسی» در وبلاگ آیرا. بازنویسی‌شده با تمرکز روی کاربر ایرانی و روایت شناخت پیوسته.

نوشتهٔ به‌روزرسانی: ۴ دقیقه مطالعه
تصویر مقالهٔ RAG-style prompting

وقتی از یه AI می‌خوای که اطلاعات خاص و محرمانه‌ات رو در نظر بگیره — مثل مستندات داخلی شرکت، فایل‌های پروژه، یا یه کتاب خاص — با یه دیوار روبرو می‌شی: مدل این اطلاعات رو نمی‌دونه. RAG-style prompting یه راه‌حل دستیه که بدون نیاز به سیستم RAG واقعی، همین مسئله رو حل می‌کنه.

اول: RAG واقعی چیه که ازش الهام گرفته شده؟

RAG مخفف Retrieval-Augmented Generation یعنی «تولید تقویت‌شده با بازیابی». در سیستم‌های RAG واقعی، یه pipeline داریم که:

۱. متون مرجع رو به چانک‌های کوچک تقسیم می‌کنه ۲. هر چانک رو به embedding تبدیل می‌کنه ۳. وقتی کاربر سوال می‌کنه، مرتبط‌ترین چانک‌ها بازیابی می‌شن ۴. این چانک‌ها به عنوان context به مدل داده می‌شن ۵. مدل بر اساس context جواب می‌ده

این یه سیستم فنی کامله که نیاز به vector database، embedding model، و کدنویسی داره. اطلاعات بیشتر درباره RAG واقعی در این مقاله هست.

RAG-style prompting: همون ایده، بدون زیرساخت

RAG-style prompting ایده اصلی RAG رو به یه تکنیک دستی تبدیل می‌کنه: تو خودت context رو پیدا می‌کنی و به پرامپتت اضافه می‌کنی.

ساختار کلی اینه:

[اطلاعات مرجع / context]
---
[سوال یا دستورالعمل]

چرا این کار می‌کنه؟

مدل‌های زبانی مدرن context window بزرگی دارن — Claude 3.5 حدود ۲۰۰ هزار توکن، GPT-4o حدود ۱۲۸ هزار توکن. این یعنی می‌تونی حجم زیادی از متن مرجع رو مستقیم توی پرامپتت بذاری و مدل ازش استفاده کنه.

مدل «می‌دونه» که چی توی context window هست — فقط باید بهش بگی که به اون اطلاعات تکیه کنه، نه به دانش عمومیش.

مثال اول: سند داخلی

فرض کن می‌خوای از یه سند طولانی سوال بپرسی. به جای خلاصه‌سازی دستی:

متن زیر بخشی از قرارداد همکاری ما با تامین‌کننده X هست:

===
[متن قرارداد رو اینجا paste کن]
===

بر اساس این قرارداد، در صورت تاخیر در تحویل بیش از ۱۰ روز، چه شرایطی اعمال می‌شه؟
فقط از اطلاعات متن بالا استفاده کن، نه دانش عمومیت.

جمله آخر («فقط از اطلاعات متن بالا استفاده کن») مهمه. بدون این، مدل ممکنه با دانش عمومیش درباره قراردادها پاسخ بده، نه محتوای خاص این قرارداد.

مثال دوم: گزارش رقبا

داده‌های زیر از تحقیق بازار ما درباره رقبا هست:

رقیب A: قیمت پایه ماهانه ۲ میلیون، ۵ هزار کاربر فعال، نقطه ضعف اصلی: پشتیبانی ضعیف
رقیب B: قیمت پایه ماهانه ۱.۵ میلیون، ۱۲ هزار کاربر فعال، نقطه ضعف: رابط کاربری قدیمی
رقیب C: قیمت پایه ماهانه ۳ میلیون، ۳ هزار کاربر، نقطه ضعف: گران بودن

بر اساس این اطلاعات، یه pitch کوتاه بنویس که چرا محصول ما گزینه بهتریه. 
قیمت ما: ۱.۸ میلیون ماهانه، پشتیبانی ۲۴ ساعته، رابط کاربری مدرن.

مثال سوم: ترکیب با دستورالعمل سیستم

برای کارهای تکراری می‌تونی یه system prompt بسازی که context ثابت داری + query متغیر:

تو یه دستیار داخلی شرکت آلفا هستی. اطلاعات زیر پایه‌ای‌ترین چیزیه که باید بدونی:

[اطلاعات محصول، قوانین شرکت، FAQ رایج]

وقتی کاربر سوال می‌کنه، فقط بر اساس اطلاعات بالا جواب بده. اگه جواب توی این اطلاعات نبود، صادقانه بگو «این اطلاعات در دسترسم نیست».

---
سوال کاربر: [سوال اینجا]

این ساختار برای chatbot‌های داخلی شرکت بدون نیاز به سیستم RAG پیچیده خیلی کارامده.

محدودیت‌های اساسی

RAG-style prompting قدرتمنده ولی محدودیت‌هایی داره که باید بدونی:

۱. محدودیت context window: اگه اسناد خیلی طولانی باشن، همه‌شون جا نمی‌شن. یه اسناد ۵۰۰ صفحه‌ای رو نمی‌تونی کامل paste کنی.

۲. Lost in the middle: تحقیقات نشون داده که مدل‌ها اطلاعات اول و آخر context رو بهتر می‌فهمن. اطلاعات وسط ممکنه نادیده گرفته بشه. اگه اسنادت طولانیه، مهم‌ترین بخش‌ها رو اول یا آخر بذار.

۳. Hallucination در فاصله‌ها: اگه context جواب کامل نداشته باشه، مدل ممکنه «حدس بزنه» و اطلاعات ناموجود رو بسازه. دستورالعمل «اگه جواب توی اطلاعات نبود، بگو» این مشکل رو کاهش می‌ده ولی حذف نمی‌کنه.

۴. هزینه توکن: هر بار که context سنگین paste کنی، توکن بیشتری مصرف می‌کنی. در API‌های پولی این هزینه مستقیمه.

RAG-style vs RAG واقعی: کِی کدوم؟

حالتRAG-style دستیسیستم RAG واقعی
حجم اسنادکم (چند صفحه)زیاد (صدها سند)
تیم فنیلازم نیستلازمه
کاربرد تکراریهر بار دستی pasteخودکار
آپدیت محتوافورینیاز به re-index
هزینه راه‌اندازیصفرمتوسط تا زیاد

برای تیم‌های کوچک، استارتاپ‌ها، یا موقعیت‌هایی که حجم داده کمه، RAG-style prompting کافیه. وقتی حجم داده زیاد شد یا نیاز به جستجوی هوشمند بود، سراغ RAG واقعی برو.

یه تکنیک پیشرفته: Chunking دستی

اگه سند طولانیه، می‌تونی خودت «بازیابی» رو شبیه‌سازی کنی:

۱. سند رو به بخش‌های موضوعی تقسیم کن ۲. فقط بخش‌هایی که به سوالت مرتبطن رو انتخاب کن ۳. اون بخش‌ها رو به پرامپتت اضافه کن

این کار دستی‌تره ولی اثربخش‌تر از paste کردن کل سند هست — چون اطلاعات غیرمرتبط «نویز» ایجاد می‌کنن.

همچنین بخوان

#پرامپت‌نویسی

ادامهٔ مسیر

همهٔ مقاله‌ها ←

بیشتر در «پرامپت‌نویسی»