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

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

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

افزایش پرامپت را می‌توان با اضافه کردن نقشه و ابزار به یک سفر مقایسه کرد: بدون این اطلاعات، مسافر مجبور است بر اساس حدس حرکت کند؛ با آن‌ها، مسیر روشن‌تر و دقیق‌تر است. در سامانه‌های LLM، این نقشه همان اطلاعات تکمیلی است که به پرامپت اضافه می‌شود. برای مطالعه بیشتر درباره بازیابی اطلاعات، می‌توانید صفحه Data Augmentation را در ویکی‌پدیا ببینید.

افزایش پرامپت دقیقاً چیست؟

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

افزایش پرامپت، با تغییر ساختار پرامپت متفاوت است. در تغییر ساختار، هدف بهبود طراحی پرامپت است. در افزایش، هدف افزودن اطلاعات است بدون تغییر ساختار پایه.

افزایش در مقابل بهینه‌سازی

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

افزایش به‌عنوان یک لایه معماری

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

افزایش پرامپت، پر کردن شکاف میان دانش عمومی مدل و نیاز تخصصی سامانه است.

چرا افزایش پرامپت اهمیت دارد؟

افزایش پرامپت به چند دلیل اهمیت دارد:

کاهش توهم

مدل‌های زبانی، بدون اطلاعات کافی، ممکن است پاسخ‌های نادرست با اطمینان بالا تولید کنند. این پدیده، «توهم» نامیده می‌شود. افزایش پرامپت، با ارائه اطلاعات معتبر، احتمال توهم را کاهش می‌دهد.

افزایش دقت در دامنه تخصصی

در دامنه‌های تخصصی مانند پزشکی، حقوق و مالی، مدل‌ها معمولاً دانش کافی ندارند. افزایش پرامپت، این شکاف را پر می‌کند.

شخصی‌سازی پاسخ

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

به‌روزرسانی دانش

مدل‌ها دانش تاریخی دارند. افزایش پرامپت، امکان استفاده از دانش جدید را فراهم می‌کند.

پشتیبانی از تصمیم‌گیری

در سامانه‌های تصمیم‌یار، افزایش پرامپت اطلاعات لازم برای تصمیم‌گیری را فراهم می‌کند.

ویژگیبدون افزایشبا افزایش
توهمبالاپایین
دقت تخصصیمتوسطبالا
شخصی‌سازیمحدودگسترده
به‌روزرسانی دانشندارددارد
پشتیبانی تصمیمضعیفقوی

انواع افزایش پرامپت

افزایش پرامپت را می‌توان بر اساس منبع اطلاعات، دسته‌بندی کرد:

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

افزایش با زمینه

افزایش با زمینه، رایج‌ترین نوع افزایش است. در این روش، اطلاعات پس‌زمینه به پرامپت اضافه می‌شود.

منابع زمینه

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

نمونه‌ای از افزایش با زمینه

Context:
- The website is a Persian WooCommerce store.
- It has over 10,000 products.
- The client is concerned about checkout performance on mobile.
- The hosting is a shared plan with 4GB RAM.

Task: Suggest the top 5 performance optimizations.

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

افزایش با مثال

افزایش با مثال، با افزودن نمونه‌های مرجع، الگوی مورد انتظار را به مدل نشان می‌دهد. این تکنیک که Few-shot Prompting نامیده می‌شود، در وظایف ساختاریافته بسیار مؤثر است.

نمونه‌ای از افزایش با مثال

Example 1:
Input: "وردپرس کند است"
Output: {"category": "performance", "priority": "high"}

Example 2:
Input: "افزونه با قالب تداخل دارد"
Output: {"category": "compatibility", "priority": "medium"}

Now classify: "دیتابیس بهینه نیست"

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

افزایش با بازیابی اطلاعات

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

مراحل بازیابی

  1. پرسش: پرسش کاربر دریافت می‌شود.
  2. جستجو: پرسش در پایگاه دانش جستجو می‌شود.
  3. رتبه‌بندی: اسناد بازیابی‌شده بر اساس مرتبط بودن رتبه‌بندی می‌شوند.
  4. انتخاب: بهترین اسناد انتخاب می‌شوند.
  5. تزریق: اسناد به پرامپت اضافه می‌شوند.

نمونه‌ای از سامانه RAG

def rag_prompt(question, knowledge_base):
    docs = search(knowledge_base, question, top_k=3)
    context = "\n\n".join(docs)
    prompt = f"""Answer the question based strictly on the context below.
If the answer is not in the context, say "I don't know".

Context:
{context}

Question: {question}
 " 
    return prompt

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

افزایش با بازیابی معنایی

در سامانه‌های پیشرفته، از جستجوی معنایی برای بازیابی اسناد مرتبط استفاده می‌شود. برای جزئیات، پست embedding چیست را ببینید.

افزایش با محدودیت

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

انواع محدودیت

  • محدودیت طول: حداکثر تعداد کلمات.
  • محدودیت لحن: رسمی یا دوستانه.
  • محدودیت زبان: پاسخ به فارسی.
  • محدودیت منابع: فقط بر اساس اسناد ارائه‌شده.
  • محدودیت محتوا: پرهیز از موضوعات خاص.
  • محدودیت قالب: JSON یا Markdown.

نمونه‌ای از افزایش با محدودیت

Constraints:
- Answer in Persian.
- Maximum 500 words.
- Use only information from the context above.
- If uncertain, say so explicitly.
- Include at least 3 actionable steps.

افزایش با تاریخچه مکالمه

در سامانه‌های چت‌بات، افزایش با تاریخچه مکالمه ضروری است. این نوع افزایش، به مدل کمک می‌کند زمینه گفتگو را درک کند.

مدیریت تاریخچه

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

برای جزئیات بیشتر، پست مدیریت پنجره زمینه در پرامپت نویسی را ببینید.

پیاده‌سازی گام‌به‌گام

پیاده‌سازی افزایش پرامپت شامل چند مرحله است:

def augment_prompt(base_prompt, user_id, question):
    # 1. Retrieve user context
    user_context = fetch_user_context(user_id)

    # 2. Retrieve relevant knowledge
    docs = search_knowledge(question, top_k=3)

    # 3. Retrieve conversation history
    history = fetch_conversation_history(user_id, limit=5)

    # 4. Build augmented prompt
    augmented = f"""{base_prompt}

User Context:
{user_context}

Relevant Knowledge:
{chr(10).join(docs)}

Conversation History:
{chr(10).join(history)}

Question: {question}
"""
    return augmented

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

ملاحظات ترتیب

ترتیب بخش‌های افزایش‌یافته، بر رفتار مدل اثر می‌گذارد. توصیه می‌شود بخش‌های مهم‌تر (مانند دستور اصلی و دانش مرتبط) نزدیک به ابتدای پرامپت قرار گیرند.

مدیریت کیفیت داده افزایشی

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

معیارهای کیفیت

  • مرتبط بودن: داده باید مستقیماً به پرسش مربوط باشد.
  • معتبر بودن: داده باید از منبع معتبر باشد.
  • به‌روز بودن: داده باید به‌روز باشد.
  • منسجم بودن: داده نباید متناقض باشد.
  • کوتاه بودن: داده باید مختصر و مفید باشد.

فیلتر داده

پیش از افزودن به پرامپت، داده باید فیلتر شود:

  • حذف داده‌های نامرتبط.
  • حذف داده‌های قدیمی.
  • حذف داده‌های متناقض.
  • خلاصه‌سازی داده‌های طولانی.
  • رتبه‌بندی داده بر اساس مرتبط بودن.

هزینه و بهینه‌سازی

افزایش پرامپت، هزینه توکن را افزایش می‌دهد. بنابراین، بهینه‌سازی ضروری است.

راهکارهای بهینه‌سازی

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

برای استراتژی‌های بیشتر، پست بهینه‌سازی هزینه در پرامپت نویسی را ببینید.

پرسش‌های پرتکرار درباره افزایش پرامپت

افزایش پرامپت چه تفاوتی با بهینه‌سازی دارد؟

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

چقدر اطلاعات باید به پرامپت اضافه شود؟

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

آیا افزایش پرامپت همیشه کیفیت را بهبود می‌دهد؟

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

آیا افزایش با بازیابی اطلاعات برای همه سامانه‌ها ضروری است؟

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

چطور کیفیت داده افزایشی را تضمین کنیم؟

با فیلتر دقیق، رتبه‌بندی مرتبط بودن و بازبینی دوره‌ای. برای جزئیات، پست RAG چیست را ببینید.

آیا افزایش پرامپت با امنیت تداخل دارد؟

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

آیا افزایش پرامپت بر حریم خصوصی اثر دارد؟

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

آیا می‌توان افزایش را خودکار انجام داد؟

بله. در سامانه‌های RAG و Agent-based، افزایش به‌صورت خودکار انجام می‌شود.

آیا افزایش پرامپت با تقطیر قابل ترکیب است؟

بله. می‌توان ابتدا پرامپت را افزایش داد و سپس تقطیر کرد. برای جزئیات، پست تقطیر پرامپت را ببینید.

آیا افزایش برای همه مدل‌ها یکسان است؟

اصول یکی است، اما مدل‌های مختلف ممکن است به انواع مختلف افزایش حساسیت متفاوتی داشته باشند.

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

با ارزیابی دقت، پایداری و قابلیت پردازش خروجی، قبل و بعد از افزایش. برای جزئیات، پست آزمون A/B برای پرامپت‌ها را ببینید.

نتیجه‌گیری کاربردی

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

افزایش پرامپت، پر کردن شکاف میان دانش عمومی مدل و نیاز تخصصی سامانه است.

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