ویرگول
ورودثبت نام
محمد حیدری
محمد حیدریمهندس هوش مصنوعی
محمد حیدری
محمد حیدری
خواندن ۳ دقیقه·۳ روز پیش

خیال نکن اسم هوش پُشتِته هر چی دلت بخواد میتونی به خورد ما بدی، ارزیابی RAG با RAGAS

مقدمه

اول از همه بیایم با هم بررسی کنیم ببینیم این RAG خودش چیه که RAGASش چی باشه :-):-):-)

مرغ چیه که کله پاچش چی باشه، چه ربطی داشت :-)

اما خود RAG یعنی چی ؟
خیلی خیلی خلاصه شو بخوام بگم RAG سیستمیه که در اون:

یوزر سوال مدنظرشو می پرسه که بصورت کوئری میره سمت لایه Retriever، بعدش Context مدنظر بازیابی میشه و پاس داده میشه سمت LLM Prompt و در نهایت Response برمیگرده سمت کاربر.

البته خیلی خلاصه گفتم و ستون فقرات معماری RAG سه لایه Retrieval, Augmentation و Generation قرار داره که در جای خودش مفصل راجع بهشون صحبت می کنم براتون رفقا.

و اما RAGAS

ببین خیلی ساده:

RAGAS = ابزار ارزیابی سیستم‌های RAG به حساب میآد.

بالاخره باید یه حساب کتابی روی دیتایی که جنریت می کنه باشه مگه نه؟ نمیشه که الابختکی، مملکت قانون داره!

اما RAGAS میاد بررسی می‌کنه:

  • Retriever (بخش سرچ) خوب کار می‌کنه؟

  • LLM (بخش پاسخگویی) چقدر درست جواب می‌ده؟

و نوآوری این معماری در اینه

بدون اینکه نیاز به دیتای لیبل‌خورده سنگین داشته باشی


متریک‌ها

RAGAS چندتا معیار خیلی مهم داره که کل سیستم رو می‌سنجه:

1️⃣ Faithfulness (صداقت / توهم نزدن)

جواب LLM چقدر به context وفاداره؟

یعنی:

  • آیا جواب از خودش چیزی ساخته؟ خدایی نکرده دچار hallucination نشده باشه، بچم توهم نزده باشه بره قاطی مرغا :-)

  • یا واقعاً از متنی که خودمون به سیستم دادیم برای تولید جواب استفاده کرده؟

مثال:

Context:

محمدتقی بهجت 2 شهریور 1295 به دنیا آمد

جواب خوب:

2 شهریور 1295 : درست

جواب بد:

22 ممهر 1299 : مدل توهم زده و از خودش دَر وَکِردِه (بَرَرِه ای گفتم :-)


چطوری حساب میشه؟

  • جواب رو می‌شکنه به جمله‌های کوچیک

  • هر جمله رو چک می‌کنه:

  • آیا از context قابل استنتاجه؟

  • درصد جمله‌های درست = امتیاز

خروجی هم بین 0 تا 1


Answer Relevancy (جواب تولید شده به سوال مرتبط باشه)

جواب اصلاً به سوال ربط داره یا نه؟

مثال:

سوال:

ایران کجاست و پایتختش چیه؟

جواب ضعیف:

ایران در آسیا است (نیمه‌کاره)

جواب خوب:

ایران در غرب آسیا است و تهران پایتخت آن است


چطوری حساب میشه؟

این قسمت خیلی جالبه

  1. از روی جواب، چندتا سوال مصنوعی ساخته میشه (با LLM)

  2. بعد این سوال‌ها با سوال اصلی مقایسه میشن (embedding similarity)

  3. اگر شبیه بودن: یعنی جواب مرتبطه


Context Recall (چیزی جا نمونده؟)

Retriever همه اطلاعات لازم رو آورده یا نه؟

یعنی:

  • چیزی که برای جواب لازم بوده

  • واقعاً تو context بوده یا نه


چطوری حساب میشه؟

  1. یه جواب مرجع و صحیح داریم که بهش میگیم ground truth همون رفرنس خودمون.

  2. اون رو تبدیل می‌کنه به چند claim یا همون ادعا

  3. چک می‌کنه آیا همه این claimها تو context هستن؟

  4. اگر یه چیز مهم جا مونده باشه، recall میاد پایین


Context Precision (چقدر آت و آشغال آوردی؟)

از بین contextهایی که آوردی، چندتاش واقعاً مفیدن؟

  • یعنی:

  • noise داری یا نه (دیتای غیر مرتبط و به درد نخور رو بهش میگیم نویزی)

  • irrelevant chunk آوردی یا نه


مثال:

اگر 5 تا متن آوردی:
2 تا مفید و 3 تا بی‌ربط، در نتیجه precision پایین


اما چطوری حساب میشه؟

برای هر chunk بررسی می‌کنه:

  • آیا به جواب ربط داره یا نه

  • بعد میانگین می‌گیره


جمع‌بندی متریک‌ها

متریک چی رو می‌سنجه:

Faithfulness

آیا جواب دروغ گفته؟

Answer Relevancy

آیا جواب به سوال ربط داره؟

Context Recall

چیزی جا نیفتاده؟

Context Precision

چیز اضافه آورده؟


نکته خیلی مهم

این 4 تا در واقع 2 تا لایه دارن:

لایه Retriever

  • Context Recall

  • Context Precision

لایه Generator که LLM حضور داره

  • Faithfulness

  • Answer Relevancy

یعنی RAGAS کل pipeline رو end-to-end بررسی می‌کنه


⚙️ مثال کد (ساده‌سازی شده)

from ragas import evaluate score = evaluate( dataset, metrics=[faithfulness, answer_correctness] )

دیتاست شامل:

  • question

  • answer

  • contexts

  • ground_truth


برداشت عملی

فرض کن میخوای RAG برای شرکت تون بسازی، اینطوری استفاده میشه:

اگر Faithfulness پایینه:

LLM داره hallucinate می‌کنه
راهکارش:

  • prompt بهتر

  • citation forcing

  • chain-of-thought محدود


اگر Context Recall پایینه:

retriever چیزای مهم رو پیدا نکرده
راهکارش

  • embedding بهتر

  • chunking بهتر

  • top-k بیشتر


اگر Context Precision پایینه:

noise زیاده
راهکارش:

  • reranker

  • filtering

  • hybrid search


اگر Answer Relevancy پایینه:

جواب پرت میده

راهکارش:

  • prompt engineering

  • instruction tuning

امیدوارم این مقاله براتون سودمند واقع شده باشه، سوالی داشتید در خدمتتون هستم و خوشحال میشم بتونم کمکی باشم براتون در این مسیر طولانی LLMها.

llmcontext
۰
۰
محمد حیدری
محمد حیدری
مهندس هوش مصنوعی
شاید از این پست‌ها خوشتان بیاید