Evaluation

حقیقت تلخ درباره RAG: چگونه واقعاً تولید تقویت‌شده با بازیابی را ارزیابی کنیم

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

چرا معیارهای استاندارد شکست می‌خورند

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

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

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

قبل از نگاه کردن به آنچه LLM تولید می‌کند، باید مطمئن شویم که پنجره زمینه با اطلاعات مرتبط تغذیه می‌شود. دو معیار اصلی برای این کار Recall@K و MRR (میانگین رتبه معکوس) هستند. Recall@K کسری از اسناد مرتبط بازیابی شده در میان K نتیجه برتر را اندازه‌گیری می‌کند. اگر پاسخ‌های حقیقت زمینی شما در شناسه‌های سند [101, 102] قرار دارند و بازیاب شما [101, 50, 99] را برمی‌گرداند، Recall@2 شما 0.5 (50٪) است.

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

ارزیابی تولید با LLM-as-a-Judge

ارزیابی مرحله تولید پیچیده‌تر است زیرا به ندرت یک پاسخ "صحیح" واحد وجود دارد. ظهور پارادایم LLM-as-a-Judge این چشم‌انداز را دگرگون کرده است. با استفاده از یک LLM قدرتمندتر (مانند GPT-4 یا Claude 3) برای انتقاد از خروجی LLM برنامه شما، می‌توانیم فرآیند ارزیابی را خودکار کنیم.

معیارهای کلیدی در اینجا عبارتند از:

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

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

from ragas import evaluate
from datasets import Dataset

# Define your test dataset
data_samples = {
    'question': ["What is the capital of France?", "Who wrote Hamlet?"],
    'answer': ["Paris is the capital of France.", "William Shakespeare wrote Hamlet."],
    'contexts': [["Paris is the capital city of France.", "The Eiffel Tower is in Paris."], ["William Shakespeare was an English playwright.", "Hamlet is a tragedy by Shakespeare."]],
    'ground_truth': ["Paris", "William Shakespeare"]
}

# Evaluate using default metrics (faithfulness, answer_relevance, context_precision)
result = evaluate(
    dataset,
    metrics=[faithfulness, answer_relevance, context_precision]
)

print(result)

ابزارهای عملی: RAGAS و TruLens

ساخت این ارزیاب‌ها از صفر خسته‌کننده است. کتابخانه‌هایی مانند RAGAS (سیستم ارزیابی تولید تقویت‌شده با بازیابی) و TruLens برای حل این مشکل ظهور کرده‌اند. RAGAS به ویژه محبوب است زیرا اجازه می‌دهد ارزیابی فقط بر اساس زمینه انجام شود، به این معنی که شما همیشه به پاسخ‌های حقیقت زمینی برای فاز تولید نیاز ندارید، فقط برای فاز بازیابی. این یک امتیاز ترکیبی RAGAS محاسبه می‌کند که وفاداری، دقت زمینه و مرتبط بودن پاسخ را متعادل می‌کند و به شما یک عدد واحد برای ردیابی بهبودها در طول زمان می‌دهد.

نتیجه‌گیری

ارزیابی سیستم‌های RAG یک وظیفه یک‌باره نیست، بلکه یک فرآیند مداوم است. همان‌طور که پایگاه دانش شما رشد می‌کند و پرس‌وجوهای شما پیچیده‌تر می‌شوند، معیارهای ایستا نمی‌توانند ظرافت‌های عملکرد سیستم شما را ثبت کنند. با ترکیب معیارهای بازیابی قطعی با داوران تولید احتمالاتی مبتنی بر LLM، می‌توانید یک حلقه بازخورد مستحکم بسازید. با اندازه‌گیری Recall شروع کنید، سپس بررسی‌های وفاداری را لایه‌لایه اضافه کنید و در نهایت، آزمایش‌های رگرسیون خودکار را در پایپ‌لاین CI/CD خود پیاده‌سازی کنید تا مطمئن شوید سیستم RAG شما به طور مسئولانه‌ای تکامل می‌یابد.

Share: