Evaluation

حفاظت از بازیابی: استراتژی‌های پیشرفته برای تشخیص توهم‌های خاص در RAG

تولید تقویت‌شده با بازیابی (RAG) به عنوان استاندارد طلایی برای برنامه‌های سازمانی مدل‌های زبانی بزرگ (LLM) ظهور کرده است و راه‌حلی برای مشکل مزمن توهم مدل‌ها با تکیه بر منابع داده خارجی تأییدشده ارائه می‌دهد. با این حال، یک سوءتفاهم حیاتی همچنان پابرجاست: اینکه RAG به طور خودکار دقت واقعی را تضمین می‌کند. در واقعیت، خطوط لوله RAG دسته‌ای منحصر‌به‌فرد از توهم‌ها را معرفی می‌کنند که به عنوان توهم‌های «زمینه‌ای» یا «نسبت‌دهی» شناخته می‌شوند؛ جایی که مدل اطلاعاتی را با ظاهر قابل قبول اما نادرست تولید می‌کند، با وجود دسترسی به حقایق صحیح در زمینه بازیابی‌شده.

برای توسعه‌دهندگان متوسط تا پیشرفته، فراتر رفتن از معیارهای دقت ساده ضروری است. ما باید نه تنها بررسی کنیم که آیا پاسخ درست است، بلکه بررسی کنیم که آیا پاسخ تکیه‌گاه‌شده (grounded) بر داده‌های بازیابی‌شده است و آیا مکانیسم بازیابی خود به درستی عملکرد دارد. این پست به بررسی ظرافت‌های فنی ارزیابی واقع‌گرایی در خطوط لوله RAG می‌پردازد.

آناتومی توهم‌های RAG

برای تشخیص مؤثر توهم‌ها، باید ابتدا آن‌ها را دسته‌بندی کنیم. در یک خط لوله RAG استاندارد، دو حالت شکست اصلی وجود دارد:

  1. شکست‌های بازیابی: سیستم در دریافت قطعه سند مرتبط شکست می‌خورد، که منجر می‌شود LLM به داده‌های آموزش اولیه خود تکیه کند (توهم منبع).
  2. شکست‌های تولید: زمینه صحیح بازیابی می‌شود، اما LLM آن را نادیده می‌گیرد، با آن تناقض دارد یا جزئیاتی را که در منبع وجود ندارد، توهم‌زایی می‌کند (توهم تولید).

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

معیارهای کلیدی ارزیابی واقع‌گرایی

چارچوب‌های ارزیابی RAG مدرن، مانند RAGAS یا DeepEval، از سه معیار اصلی برای ارزیابی واقع‌گرایی استفاده می‌کنند:

  • وفاداری (Faithfulness): اندازه‌گیری می‌کند که آیا پاسخ تولیدشده را می‌توان از زمینه ارائه‌شده استنتاج کرد. این اصلی‌ترین دفاع در برابر توهم‌های تولید است.
  • ارتباط زمینه (Context Relevance): ارزیابی می‌کند که آیا زمینه بازیابی‌شده واقعاً حاوی اطلاعات لازم برای پاسخ به سوال است.
  • ارتباط پاسخ (Answer Relevance): بررسی می‌کند که آیا پاسخ تولیدشده مستقیماً به پرسش کاربر پاسخ می‌دهد.

با ترکیب این موارد، می‌توانیم جداسازی کنیم که آیا شکستی در مرحله بازیابی رخ داده است یا در مرحله تولید.

پیاده‌سازی بررسی‌های واقع‌گرایی با کد

بیایید نگاهی بیندازیم که چگونه می‌توان یک بررسی عملی برای وفاداری با استفاده از یک چارچوب ارزیابی فرضی پیاده‌سازی کرد. در زیر یک مثال پایتون آورده شده است که نشان می‌دهد چگونه یک اسکریپت ارزیابی را ساختاردهی کنیم تا تأیید کند آیا پاسخ تولیدشده توسط زمینه بازیابی‌شده پشتیبانی می‌شود یا خیر.

from ragas import evaluate
from ragas.metrics import faithfulness, context_precision
from datasets import Dataset

# فرض کنید این متغیرها توسط خط لوله RAG شما پر شده‌اند
question = "درآمد فصل سوم چقدر بود؟"
retrieved_contexts = ["شرکت درآمد ۵ میلیون دلاری را در فصل سوم گزارش داد.", "بودجه بازاریابی ۱۰ هزار دلار بود."]
generated_answer = "درآمد در فصل سوم ۵ میلیون دلار بود."

# ساخت مجموعه داده برای ارزیابی
data = Dataset.from_dict({
    "question": [question],
    "retrieved_contexts": [retrieved_contexts],
    "answer": [generated_answer]
})

# ارزیابی بر اساس معیار 'وفاداری'
# وفاداری سنجش می‌کند که پاسخ تا چه حد در زمینه تکیه‌گاه‌شده است
results = evaluate(
    data,
    metrics=[faithfulness, context_precision],
    llm=your_llm_instance,
    embeddings=your_embedding_model
)

print(results)
# خروجی شامل یک نمره وفاداری بین ۰ و ۱ است

در کد بالا، معیار faithfulness (وفاداری) معمولاً با شکستن پاسخ تولیدشده به ادعاها و بررسی اینکه آیا هر ادعا توسط زمینه پشتیبانی می‌شود، کار می‌کند. اگر مدل بیان کند که درآمد ۵ میلیون دلار بوده است، اما زمینه بگوید ۶ میلیون دلار، نمره وفاداری به شدت کاهش می‌یابد و توهم را پرچم‌گذاری می‌کند.

توصیه‌های عملی برای توسعه‌دهندگان

برای کاهش توهم‌های خاص RAG، موارد زیر را در نظر بگیرید:

  1. اجرای تکیه‌گاه‌سازی: پرامپت‌های LLM خود را پیکربندی کنید تا صراحتاً به مدل دستور دهید که فقط از زمینه ارائه‌شده استفاده کند. اگر زمینه حاوی پاسخ نباشد، به مدل دستور دهید که بگوید «نمی‌دانم» به جای حدس زدن.
  2. تأیید پس از تولید: از یک فراخوانی دوم LLM برای تأیید خروجی در برابر زمینه بازیابی‌شده استفاده کنید. این رویکرد «LLM به عنوان داور» برای تشخیص توهم‌های ظریف بسیار مؤثر است.
  3. مرتب‌سازی مجدد (Reranking): یک مرتب‌ساز متقاطع-انکودر (cross-encoder reranker) را پس از جستجوی برداری اولیه پیاده‌سازی کنید تا اطمینان حاصل شود که مرتبط‌ترین قطعات به LLM داده می‌شوند و شانس شکست بازیابی کاهش می‌یابد.

نتیجه‌گیری

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

Share: