Evaluation

حرفه‌ای شدن در ارزیابی RAG: از شهود تا معیارهای خودکار

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

آناتومی ارزیابی RAG

معیارهای سنتی NLP مانند BLEU یا ROUGE برای RAG کافی نیستند، زیرا فرآیند بازیابی یا زمینه خاص ارائه‌شده به LLM را در نظر نمی‌گیرند. به جای آن، ارزیابی مدرن RAG بر سه بُعد اصلی تمرکز دارد:

  1. وفاداری (Faithfulness): آیا پاسخ تولیدشده به‌طور دقیق از زمینه بازیابی‌شده پیروی می‌کند؟ (یعنی آیا از هالوسیناسیون/توهم عاری است؟)
  2. مرتبط بودن پاسخ (Answer Relevance): آیا پاسخ مستقیماً به سؤال کاربر پاسخ می‌دهد؟
  3. دقت/بازدهی زمینه (Context Precision/Recall): آیا بازیاب‌کننده (retriever) تکه‌های صحیح و مرتبط را در ترتیب صحیح استخراج کرده است؟

معرفی RAGAS: یک چارچوب برای LLM به عنوان داور

اگرچه ارزیابی دستی برای موارد حاشیه‌ای ارزشمند است، اما مقیاس‌پذیر نیست. اینجاست که چارچوب‌هایی مانند RAGAS (ارزیابی تولید تقویت‌شده با بازیابی) می‌درخشند. RAGAS از یک LLM برای ایفای نقش داور استفاده می‌کند و خروجی‌ها را بر اساس معیارهای طلایی (gold standards) یا با استفاده از معیارهای بدون مرجع امتیازدهی می‌کند. این ابزار راهی استاندارد برای کمّی‌سازی عملکرد خط لوله RAG شما فراهم می‌کند.

پیاده‌سازی عملی با RAGAS

بیایید نگاهی بیندازیم که چگونه ارزیابی پایه‌ای RAGAS را با استفاده از Python پیاده‌سازی کنیم. ابتدا اطمینان حاصل کنید که بسته‌های مورد نیاز نصب شده‌اند:


pip install ragas langchain-ollama langchain-chroma

در زیر یک مثال ساده‌شده از نحوه ساختاردهی داده‌های ارزیابی و محاسبه معیارها آورده شده است. توجه داشته باشید که به یک مجموعه داده نیاز دارید که شامل `question` (سؤال)، `ground_truth` (پاسخ ایده‌آل)، `retrieved_contexts` (تکه‌های استخراج‌شده توسط پایگاه داده برداری شما) و `answer` (خروجی LLM) باشد.


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

# Example: Define your evaluation set
# In a real scenario, this would come from a test set or production logs
eval_data = {
    "question": ["What is the capital of France?"],
    "ground_truth": ["Paris is the capital of France."],
    "retrieved_contexts": [["Paris is a city in France. It is the capital."]],
    "answer": ["The capital of France is Paris."]
}

# Convert to a Hugging Face Dataset object
dataset = Dataset.from_dict(eval_data)

# Define the metrics you want to measure
metrics = {
    "faithfulness": faithfulness,
    "answer_relevancy": answer_relevancy,
    "context_precision": context_precision
}

# Run the evaluation
# Note: This requires an LLM to be configured for the judge role
score = evaluate(
    dataset,
    metrics=metrics
)

# Print the results
print(score)

تفسیر امتیازها

  • وفاداری بالا (0.8+): LLM شما چیزهایی را از روی تخیل خود نمی‌سازد. اگر این مقدار پایین باشد، مهندسی پرامپت شما ممکن است معیوب باشد یا مدل زمینه را نادیده می‌گیرد.
  • دقت زمینه بالا: جستجوی برداری شما اسناد صحیح را پیدا می‌کند. اگر این مقدار پایین باشد، ممکن است نیاز به تنظیم مدل embedding، استراتژی chunking یا re-ranker خود داشته باشید.
  • مرتبط بودن پاسخ بالا: پاسخ مختصر است و به پرسش خاص پاسخ می‌دهد. امتیازهای پایین در اینجا اغلب نشان‌دهنده این است که LLM در حال ارائه محتوای اضافی و غیرضروری یا جزئیات نامرتبط است.

فراتر از معیارها: ساخت یک حلقه بازخورد

معیارهای خودکار عالی هستند، اما کل داستان را نمی‌گویند. سیستم‌های RAG مستحکم‌تر استراتژی انسان در حلقه (human-in-the-loop) را ادغام می‌کنند. از RAGAS برای شناسایی پرسش‌های کم‌عملکرد استفاده کنید، سپس ازannotatorهای انسانی بخواهید موارد خاص را بررسی کنند. از جمله حالت‌های رایج شکست که باید به‌طور دستی به دنبال آن‌ها بگردید عبارتند از:

  • مشکلات Chunking: اطلاعات مرتبط بین دو تکه تقسیم شده است، بنابراین بازیاب‌کننده آن را از دست می‌دهد.
  • جابه‌جایی Embedding (Embedding Drift): مدل embedding اصطلاحات تخصصی حوزه را درک نمی‌کند.
  • ابهام در پرامپت: پرسش کاربر مبهم است و LLM به جای درخواست توضیح، حدس می‌زند.

نتیجه‌گیری

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

Share: