۱. مرور کلی
در این آزمایشگاه، شما یاد خواهید گرفت که چگونه یک خط لوله ارزیابی برای یک سیستم تولید افزوده بازیابی (RAG) بسازید. شما از سرویس ارزیابی هوش مصنوعی Vertex AI Gen برای ایجاد معیارهای ارزیابی سفارشی و ساخت یک چارچوب ارزیابی برای یک کار پرسش و پاسخ استفاده خواهید کرد.
شما با مثالهایی از مجموعه دادههای پرسش و پاسخ استنفورد (SQuAD 2.0) برای تهیه مجموعه دادههای ارزیابی، پیکربندی ارزیابیهای بدون مرجع و مبتنی بر مرجع و تفسیر نتایج کار خواهید کرد. در پایان این آزمایشگاه، شما نحوه ارزیابی سیستمهای RAG و دلیل انتخاب رویکردهای ارزیابی خاص را خواهید فهمید.
بنیاد مجموعه دادهها
ما با نمونههای با دقت ساخته شدهای کار خواهیم کرد که دامنههای متعددی را در مجموعه دادههای پرسش و پاسخ SQuAD 2.0 پوشش میدهند:
- علوم اعصاب : آزمایش دقت فنی در زمینههای علمی
- تاریخ : ارزیابی دقت واقعی در روایتهای تاریخی
- جغرافیا : ارزیابی دانش سرزمینی و سیاسی
این تنوع به شما کمک میکند تا بفهمید که چگونه رویکردهای ارزیابی در حوزههای موضوعی مختلف تعمیم مییابند.
منابع
- نمونههای کد: این آزمایشگاه بر اساس نمونههایی از مستندات ارزیابی هوش مصنوعی ورتکس ساخته شده است.
- پایه مجموعه داده: مجموعه داده پرسش و پاسخ SQuAD 2.0
- بهینهسازی بازیابی RAG: آزمایش، تنظیم، موفقیت
آنچه یاد خواهید گرفت
در این آزمایشگاه، شما یاد میگیرید که چگونه وظایف زیر را انجام دهید:
- آمادهسازی مجموعه دادههای ارزیابی برای سیستمهای RAG
- ارزیابی بدون مرجع را با استفاده از معیارهایی مانند پایه و اساس و مرتبط بودن اجرا کنید.
- ارزیابی مبتنی بر مرجع را با معیارهای شباهت معنایی اعمال کنید.
- معیارهای ارزیابی سفارشی را با دستورالعملهای امتیازدهی دقیق ایجاد کنید.
- نتایج ارزیابی را تفسیر و تجسم کنید تا در انتخاب مدل به شما کمک کند.
۲. راهاندازی پروژه
حساب گوگل
اگر از قبل حساب گوگل شخصی ندارید، باید یک حساب گوگل ایجاد کنید .
به جای حساب کاری یا تحصیلی از حساب شخصی استفاده کنید .
ورود به کنسول ابری گوگل
با استفاده از یک حساب کاربری شخصی گوگل، وارد کنسول ابری گوگل شوید.
فعال کردن صورتحساب
استفاده از اعتبار ۵ دلاری گوگل کلود (اختیاری)
برای اجرای این کارگاه، به یک حساب صورتحساب با مقداری اعتبار نیاز دارید. اگر قصد دارید از صورتحساب خودتان استفاده کنید، میتوانید از این مرحله صرف نظر کنید.
- روی این لینک کلیک کنید و با یک حساب گوگل شخصی وارد شوید. چیزی شبیه به این خواهید دید:

- روی دکمه «برای دسترسی به اعتبارات خود اینجا کلیک کنید» کلیک کنید. این شما را به صفحهای میبرد که میتوانید نمایه صورتحساب خود را تنظیم کنید.

- روی تأیید کلیک کنید. اکنون به حساب پرداخت آزمایشی پلتفرم گوگل کلود متصل شدهاید.

یک حساب پرداخت شخصی تنظیم کنید
اگر صورتحساب را با استفاده از اعتبارهای Google Cloud تنظیم کردهاید، میتوانید از این مرحله صرف نظر کنید.
برای تنظیم یک حساب پرداخت شخصی، به اینجا بروید تا پرداخت را در کنسول ابری فعال کنید .
برخی نکات:
- تکمیل این آزمایشگاه باید کمتر از ۱ دلار آمریکا از طریق منابع ابری هزینه داشته باشد.
- شما میتوانید مراحل انتهای این آزمایش را برای حذف منابع دنبال کنید تا از هزینههای بیشتر جلوگیری شود.
- کاربران جدید واجد شرایط استفاده از دوره آزمایشی رایگان ۳۰۰ دلاری هستند.
ایجاد پروژه (اختیاری)
اگر پروژه فعلی ندارید که بخواهید برای این آزمایشگاه استفاده کنید، اینجا یک پروژه جدید ایجاد کنید .
۳. بازیابی نسل افزوده (RAG) چیست؟
RAG تکنیکی است که برای بهبود دقت و ارتباط واقعی پاسخهای مدلهای زبان بزرگ (LLM) استفاده میشود. این مدل، LLM را به یک پایگاه دانش خارجی متصل میکند تا پاسخهای خود را بر اساس اطلاعات خاص و قابل تأیید بنا کند.
این فرآیند شامل این مراحل است:
- تبدیل سوال کاربر به یک نمایش عددی (جاسازی).
- جستجوی پایگاه دانش برای اسنادی با جاسازیهای مشابه.
- ارائه این اسناد مرتبط به عنوان زمینه برای LLM به همراه سوال اصلی برای تولید پاسخ.
درباره RAG بیشتر بخوانید.
چه چیزی ارزیابی RAG را پیچیده میکند؟
ارزیابی سیستمهای RAG با ارزیابی مدلهای زبانی سنتی متفاوت است.
چالش چند جزئی : سیستمهای RAG سه عملیات را با هم ترکیب میکنند که هر کدام میتوانند نقطه شکست باشند:
- کیفیت بازیابی : آیا سیستم اسناد زمینهای مناسب را پیدا کرده است؟
- استفاده از زمینه : آیا مدل از اطلاعات بازیابی شده به طور مؤثر استفاده کرده است؟
- کیفیت تولید : آیا پاسخ نهایی به خوبی نوشته شده، مفید و دقیق است؟
اگر هر یک از این اجزا آنطور که انتظار میرود کار نکنند، یک پاسخ میتواند با شکست مواجه شود. برای مثال، سیستم ممکن است زمینه صحیح را بازیابی کند، اما مدل آن را نادیده بگیرد. یا، مدل ممکن است یک پاسخ خوب نوشته شده تولید کند که نادرست است زیرا زمینه بازیابی شده نامربوط بوده است.
۴. محیط Vertex AI Workbench خود را تنظیم کنید
بیایید با ایجاد یک محیط نوتبوک جدید شروع کنیم که در آن کد مورد نیاز برای ارزیابی سیستمهای RAG را اجرا خواهیم کرد.
- به صفحه APIها و خدمات کنسول ابری خود بروید.
- برای فعال کردن Vertex AI API روی Enable کلیک کنید.

به میز کار Vertex AI دسترسی پیدا کنید
- در کنسول گوگل کلود، با کلیک روی منوی ناوبری ☰ > Vertex AI > Workbench به Vertex AI بروید.
- یک نمونه میز کار جدید ایجاد کنید.

- نام نمونه میز کار را
evaluation-workbench. - اگر منطقه و ناحیه مورد نظر شما از قبل تنظیم نشده است، آن را انتخاب کنید.
- روی ایجاد کلیک کنید.

- صبر کنید تا میز کار آماده شود. این کار ممکن است چند دقیقه طول بکشد.

- پس از آمادهسازی میز کار، روی باز کردن jupyterlab کلیک کنید.

- در محیط کار، یک دفترچه یادداشت پایتون ۳ جدید ایجاد کنید.

برای کسب اطلاعات بیشتر در مورد ویژگیها و قابلیتهای این محیط، به مستندات رسمی Vertex AI Workbench مراجعه کنید.
نصب SDK ارزیابی هوش مصنوعی Vertex
حالا بیایید SDK ارزیابی تخصصی را که ابزارهایی برای ارزیابی RAG ارائه میدهد، نصب کنیم.
- در سلول اول دفترچه یادداشت خود، عبارت import زیر را اضافه کرده و اجرا کنید (SHIFT+ENTER) تا Vertex AI SDK (به همراه اجزای ارزیابی) نصب شود.
این، Vertex AI SDK را به همراه افزونههای ارزیابی شامل موارد زیر نصب میکند:%pip install --upgrade --user --quiet google-cloud-aiplatform[evaluation]- EvalTask : کلاس اصلی برای اجرای ارزیابیها
- MetricPromptTemplateExamples : معیارهای ارزیابی از پیش تعریف شده
- PointwiseMetric : چارچوبی برای ایجاد معیارهای سفارشی
- notebook_utils : ابزارهای تجسم برای تجزیه و تحلیل نتایج
- مهم : پس از نصب، برای استفاده از بستههای جدید، باید هسته را مجدداً راهاندازی کنید. در نوار منوی بالای پنجره JupyterLab خود، به Kernel > Restart Kernel بروید.
۵. مقداردهی اولیه SDK و وارد کردن کتابخانهها
قبل از اینکه بتوانید خط لوله ارزیابی را بسازید، باید محیط خود را راهاندازی کنید. این شامل پیکربندی جزئیات پروژه، مقداردهی اولیه Vertex AI SDK برای اتصال به Google Cloud و وارد کردن کتابخانههای تخصصی پایتون مورد استفاده برای ارزیابی است.
- متغیرهای پیکربندی را برای کار ارزیابی خود تعریف کنید. در یک سلول جدید، کد زیر را اضافه و اجرا کنید تا
PROJECT_ID،LOCATIONو یک نامEXPERIMENTبرای سازماندهی این اجرا تنظیم شود.import vertexai PROJECT_ID = "YOUR PROJECT ID" LOCATION = "YOUR LOCATION" # @param {type:"string"} EXPERIMENT = "rag-eval-01" # @param {type:"string"} if not PROJECT_ID or PROJECT_ID == "[your-project-id]": raise ValueError("Please set your PROJECT_ID") - کیت توسعه نرمافزار Vertex AI را مقداردهی اولیه کنید. در یک سلول جدید، کد زیر را اضافه و اجرا کنید.
این مرحله نوتبوک شما را تأیید و به پروژه گوگل کلود شما متصل میکند.vertexai.init(project=PROJECT_ID, location=LOCATION) - با اجرای کد زیر در سلول بعدی، کلاسهای لازم را از SDK ارزیابی وارد کنید:
در اینجا خلاصهای از هر واردات آمده است:import pandas as pd from vertexai.evaluation import EvalTask, MetricPromptTemplateExamples, PointwiseMetric from vertexai.preview.evaluation import notebook_utils- pandas : برای ایجاد و مدیریت دادهها در DataFrames.
- EvalTask : کلاس اصلی که یک کار ارزیابی را اجرا میکند.
- MetricPromptTemplateExamples : دسترسی به معیارهای ارزیابی از پیش تعریف شده گوگل را فراهم میکند.
- PointwiseMetric : چارچوبی برای ایجاد معیارهای سفارشی خودتان.
- notebook_utils : مجموعهای از ابزارها برای مصورسازی نتایج.
۶. مجموعه دادههای ارزیابی خود را آماده کنید
یک مجموعه داده با ساختار خوب، پایه و اساس هر ارزیابی قابل اعتمادی است. برای سیستمهای RAG، مجموعه داده شما برای هر مثال به دو فیلد کلیدی نیاز دارد:
- prompt : این کل ورودی ارائه شده به مدل زبان است. شما باید سوال کاربر را با متن بازیابی شده توسط سیستم RAG خود ترکیب کنید (
prompt = User Question + Retrieved Context). این مهم است تا سرویس ارزیابی بداند مدل از چه اطلاعاتی برای ایجاد پاسخ خود استفاده کرده است. - پاسخ : این پاسخ نهایی تولید شده توسط مدل RAG شماست.
برای نتایج آماری قابل اعتماد، یک مجموعه داده شامل حدود ۱۰۰ مثال توصیه میشود. برای این آزمایش، از یک مجموعه داده کوچک برای نشان دادن فرآیند استفاده خواهید کرد.
بیایید مجموعه دادهها را ایجاد کنیم. شما با لیستی از سوالات و retrieved_contexts از یک سیستم RAG شروع خواهید کرد. سپس دو مجموعه پاسخ تعریف خواهید کرد: یکی از مدلی که به نظر میرسد عملکرد خوبی دارد ( generated_answers_by_rag_a ) و یکی از مدلی که عملکرد ضعیفی دارد ( generated_answers_by_rag_b ).
در نهایت، این قطعات را در دو دیتافریم پانداس، eval_dataset_rag_a و eval_dataset_rag_b ، با پیروی از ساختار توضیح داده شده در بالا، ترکیب خواهید کرد.
- در یک سلول جدید، کد زیر را برای تعریف سوالات و دو مجموعه از generated_answers اضافه و اجرا کنید.
این، اجزای اصلی مجموعه داده شما را تعریف میکند: سوالات، متنهای طولانی بازیابی شده توسط سیستم RAG برای هر سوال، و پاسخهای تولید شده توسط دو مدل مختلف (یک مدل A با عملکرد بالا و یک مدل B با عملکرد پایین).questions = [ "Which part of the brain does short-term memory seem to rely on?", "What provided the Roman senate with exuberance?", "What area did the Hasan-jalalians command?", ] generated_answers_by_rag_a = [ "frontal lobe and the parietal lobe", "The Roman Senate was filled with exuberance due to successes against Catiline.", "The Hasan-Jalalians commanded the area of Syunik and Vayots Dzor.", ] generated_answers_by_rag_b = [ "Occipital lobe", "The Roman Senate was subdued because they had food poisoning.", "The Galactic Empire commanded the state of Utah.", ] - retrieved_contexts را تعریف کنید. کد زیر را در یک سلول جدید اضافه و اجرا کنید.
اکنون که تمام اجزای خام را دارید، آنها را در دیتافریمهای ساختاریافته pandas که مورد نیاز سرویس ارزیابی هستند، ترکیب خواهید کرد.retrieved_contexts = [ "Short-term memory is supported by transient patterns of neuronal communication, dependent on regions of the frontal lobe (especially dorsolateral prefrontal cortex) and the parietal lobe. Long-term memory, on the other hand, is maintained by more stable and permanent changes in neural connections widely spread throughout the brain. The hippocampus is essential (for learning new information) to the consolidation of information from short-term to long-term memory, although it does not seem to store information itself. Without the hippocampus, new memories are unable to be stored into long-term memory, as learned from patient Henry Molaison after removal of both his hippocampi, and there will be a very short attention span. Furthermore, it may be involved in changing neural connections for a period of three months or more after the initial learning.", "In 62 BC, Pompey returned victorious from Asia. The Senate, elated by its successes against Catiline, refused to ratify the arrangements that Pompey had made. Pompey, in effect, became powerless. Thus, when Julius Caesar returned from a governorship in Spain in 61 BC, he found it easy to make an arrangement with Pompey. Caesar and Pompey, along with Crassus, established a private agreement, now known as the First Triumvirate. Under the agreement, Pompey's arrangements would be ratified. Caesar would be elected consul in 59 BC, and would then serve as governor of Gaul for five years. Crassus was promised a future consulship.", "The Seljuk Empire soon started to collapse. In the early 12th century, Armenian princes of the Zakarid noble family drove out the Seljuk Turks and established a semi-independent Armenian principality in Northern and Eastern Armenia, known as Zakarid Armenia, which lasted under the patronage of the Georgian Kingdom. The noble family of Orbelians shared control with the Zakarids in various parts of the country, especially in Syunik and Vayots Dzor, while the Armenian family of Hasan-Jalalians controlled provinces of Artsakh and Utik as the Kingdom of Artsakh.", ] - در یک سلول جدید، کد زیر را برای ایجاد
eval_dataset_rag_aوeval_dataset_rag_bاضافه و اجرا کنید.eval_dataset_rag_a = pd.DataFrame( { "prompt": [ "Answer the question: " + question + " Context: " + item for question, item in zip(questions, retrieved_contexts) ], "response": generated_answers_by_rag_a, } ) eval_dataset_rag_b = pd.DataFrame( { "prompt": [ "Answer the question: " + question + " Context: " + item for question, item in zip(questions, retrieved_contexts) ], "response": generated_answers_by_rag_b, } ) - کد زیر را در یک سلول جدید اجرا کنید تا چند ردیف اول مجموعه داده مربوط به مدل A را مشاهده کنید.
این یک تمرین خوب برای اطمینان از ایجاد صحیح آن است.eval_dataset_rag_a
۷. انتخاب و ایجاد معیارها
اکنون که مجموعه دادهها آماده هستند، میتوانید تصمیم بگیرید که چگونه عملکرد را اندازهگیری کنید. میتوانید از یک یا چند معیار برای ارزیابی مدل خود استفاده کنید. هر معیار جنبه خاصی از پاسخ مدل، مانند دقت یا ارتباط واقعی آن را ارزیابی میکند.
میتوانید از ترکیبی از دو نوع معیار استفاده کنید:
- معیارهای از پیش تعریف شده : معیارهای آماده برای استفاده که توسط SDK برای وظایف ارزیابی رایج ارائه شدهاند.
- معیارهای سفارشی : معیارهایی که شما برای آزمایش ویژگیهای مرتبط با مورد استفاده خود تعریف میکنید.
در این بخش، معیارهای از پیش تعریف شده موجود برای RAG را بررسی خواهید کرد.
معیارهای از پیش تعریف شده را بررسی کنید
SDK شامل چندین معیار داخلی برای ارزیابی سیستمهای پرسش و پاسخ است. این معیارها از یک مدل زبانی به عنوان "ارزیاب" برای امتیازدهی به پاسخهای مدل شما بر اساس مجموعهای از دستورالعملها استفاده میکنند.
- در یک سلول جدید، کد زیر را اضافه و اجرا کنید تا لیست کامل نامهای از پیش تعریفشدهی معیارها را ببینید:
این لیستی از معیارهای موجود را که میتوانید از آنها به صورت آماده استفاده کنید، نمایش میدهد.MetricPromptTemplateExamples.list_example_metric_names() - برای درک نحوه عملکرد این معیارها، میتوانید قالبهای اعلان زیربنایی آنها را بررسی کنید. در یک سلول جدید، کد زیر را اضافه و اجرا کنید تا دستورالعملهای داده شده به ارزیاب LLM برای معیار
question_answering_qualityرا مشاهده کنید.# See the prompt example for one of the pointwise metrics print(MetricPromptTemplateExamples.get_prompt_template("question_answering_quality"))
۸. معیارهای سفارشی ایجاد کنید
علاوه بر معیارهای از پیش تعریف شده، میتوانید معیارهای سفارشی برای ارزیابی معیارهای خاص مورد استفاده خود ایجاد کنید. برای ایجاد یک معیار سفارشی، یک الگوی اعلان مینویسید که به ارزیاب LLM نحوه امتیازدهی به یک پاسخ را آموزش میدهد.
ایجاد یک معیار سفارشی شامل دو مرحله است:
- تعریف الگوی پرسش : رشتهای که شامل دستورالعملهای شما برای ارزیاب LLM است. یک الگوی خوب شامل یک نقش واضح، معیارهای ارزیابی، یک سرفصل امتیازدهی و متغیرهایی مانند
{prompt}و{response}است. - نمونهسازی یک شیء PointwiseMetric : رشتهی الگوی اعلان خود را درون این کلاس قرار میدهید و به معیار خود یک نام میدهید.
شما دو معیار سفارشی برای ارزیابی مرتبط بودن و مفید بودن پاسخهای سیستم RAG ایجاد خواهید کرد.
- الگوی اعلان برای معیار ارتباط را تعریف کنید. این الگو یک سرفصل دقیق برای ارزیاب LLM ارائه میدهد. در یک سلول جدید، کد زیر را اضافه و اجرا کنید:
relevance_prompt_template = """ You are a professional writing evaluator. Your job is to score writing responses according to pre-defined evaluation criteria. You will be assessing relevance, which measures the ability to respond with relevant information when given a prompt. You will assign the writing response a score from 5, 4, 3, 2, 1, following the rating rubric and evaluation steps. ## Criteria Relevance: The response should be relevant to the instruction and directly address the instruction. ## Rating Rubric 5 (completely relevant): Response is entirely relevant to the instruction and provides clearly defined information that addresses the instruction's core needs directly. 4 (mostly relevant): Response is mostly relevant to the instruction and addresses the instruction mostly directly. 3 (somewhat relevant): Response is somewhat relevant to the instruction and may address the instruction indirectly, but could be more relevant and more direct. 2 (somewhat irrelevant): Response is minimally relevant to the instruction and does not address the instruction directly. 1 (irrelevant): Response is completely irrelevant to the instruction. ## Evaluation Steps STEP 1: Assess relevance: is response relevant to the instruction and directly address the instruction? STEP 2: Score based on the criteria and rubrics. Give step by step explanations for your scoring, and only choose scores from 5, 4, 3, 2, 1. # User Inputs and AI-generated Response ## User Inputs ### Prompt {prompt} ## AI-generated Response {response} """ - با استفاده از همین رویکرد، الگوی اعلان برای معیار مفید بودن را تعریف کنید. کد زیر را در یک سلول جدید اضافه و اجرا کنید:
helpfulness_prompt_template = """ You are a professional writing evaluator. Your job is to score writing responses according to pre-defined evaluation criteria. You will be assessing helpfulness, which measures the ability to provide important details when answering a prompt. You will assign the writing response a score from 5, 4, 3, 2, 1, following the rating rubric and evaluation steps. ## Criteria Helpfulness: The response is comprehensive with well-defined key details. The user would feel very satisfied with the content in a good response. ## Rating Rubric 5 (completely helpful): Response is useful and very comprehensive with well-defined key details to address the needs in the instruction and usually beyond what explicitly asked. The user would feel very satisfied with the content in the response. 4 (mostly helpful): Response is very relevant to the instruction, providing clearly defined information that addresses the instruction's core needs. It may include additional insights that go slightly beyond the immediate instruction. The user would feel quite satisfied with the content in the response. 3 (somewhat helpful): Response is relevant to the instruction and provides some useful content, but could be more relevant, well-defined, comprehensive, and/or detailed. The user would feel somewhat satisfied with the content in the response. 2 (somewhat unhelpful): Response is minimally relevant to the instruction and may provide some vaguely useful information, but it lacks clarity and detail. It might contain minor inaccuracies. The user would feel only slightly satisfied with the content in the response. 1 (unhelpful): Response is useless/irrelevant, contains inaccurate/deceptive/misleading information, and/or contains harmful/offensive content. The user would feel not at all satisfied with the content in the response. ## Evaluation Steps STEP 1: Assess comprehensiveness: does the response provide specific, comprehensive, and clearly defined information for the user needs expressed in the instruction? STEP 2: Assess relevance: When appropriate for the instruction, does the response exceed the instruction by providing relevant details and related information to contextualize content and help the user better understand the response. STEP 3: Assess accuracy: Is the response free of inaccurate, deceptive, or misleading information? STEP 4: Assess safety: Is the response free of harmful or offensive content? Give step by step explanations for your scoring, and only choose scores from 5, 4, 3, 2, 1. # User Inputs and AI-generated Response ## User Inputs ### Prompt {prompt} ## AI-generated Response {response} """ - اشیاء
PointwiseMetricرا برای دو معیار سفارشی خود نمونهسازی کنید. این کار قالبهای اعلان شما را در اجزای قابل استفاده مجدد برای کار ارزیابی قرار میدهد. کد زیر را در یک سلول جدید اضافه و اجرا کنید:relevance = PointwiseMetric( metric="relevance", metric_prompt_template=relevance_prompt_template, ) helpfulness = PointwiseMetric( metric="helpfulness", metric_prompt_template=helpfulness_prompt_template, )
اکنون دو معیار جدید و قابل استفاده مجدد ( relevance و helpfulness ) برای کار ارزیابی خود آماده دارید.
۹. اجرای کار ارزیابی
اکنون که مجموعه دادهها و معیارها آماده هستند، میتوانید ارزیابی را اجرا کنید. این کار را با ایجاد یک شیء EvalTask برای هر مجموعه دادهای که میخواهید آزمایش کنید، انجام خواهید داد.
یک EvalTask اجزای لازم برای اجرای ارزیابی را بستهبندی میکند:
- مجموعه داده : قاب دادهای که شامل اعلانها و پاسخهای شما است.
- معیارها : فهرست معیارهایی که میخواهید در مقابل آنها امتیاز بگیرید.
- آزمایش : آزمایش هوش مصنوعی ورتکس برای ثبت نتایج، که به شما در ردیابی و مقایسه اجراها کمک میکند.
- برای هر مدل یک
EvalTaskایجاد کنید. این شیء مجموعه دادهها، معیارها و نام آزمایش را در خود جای میدهد. کد زیر را در یک سلول جدید اضافه و اجرا کنید تا وظایف را پیکربندی کنید: اکنون دو شیءrag_eval_task_rag_a = EvalTask( dataset=eval_dataset_rag_a, metrics=[ "question_answering_quality", relevance, helpfulness, "groundedness", "safety", "instruction_following", ], experiment=EXPERIMENT, ) rag_eval_task_rag_b = EvalTask( dataset=eval_dataset_rag_b, metrics=[ "question_answering_quality", relevance, helpfulness, "groundedness", "safety", "instruction_following", ], experiment=EXPERIMENT, )EvalTaskپیکربندی کردهاید، یکی برای هر مجموعه از پاسخهای مدل. فهرستmetricsکه ارائه دادید، یکی از ویژگیهای کلیدی سرویس ارزیابی را نشان میدهد: معیارهای از پیش تعریفشده (مثلاًsafety) و اشیاء سفارشیPointwiseMetric. - با پیکربندی وظایف، آنها را با فراخوانی متد
.evaluate()اجرا کنید. این کار وظایف را برای پردازش به backend هوش مصنوعی Vertex ارسال میکند و ممکن است تکمیل آن چند دقیقه طول بکشد. در یک سلول جدید، کد زیر را اضافه و اجرا کنید:result_rag_a = rag_eval_task_rag_a.evaluate() result_rag_b = rag_eval_task_rag_b.evaluate()
پس از تکمیل ارزیابی، نتایج در اشیاء result_rag_a و result_rag_b ذخیره میشوند و آمادهی تحلیل ما در بخش بعدی هستند.
۱۰. نتایج را تجزیه و تحلیل کنید
نتایج ارزیابی اکنون در دسترس هستند. اشیاء result_rag_a و result_rag_b حاوی نمرات تجمیعی و توضیحات مفصل برای هر سطر هستند. در این کار، شما این نتایج را با استفاده از توابع کمکی از notebook_utils تجزیه و تحلیل خواهید کرد.
مشاهده خلاصههای کلی
- برای مشاهدهی یک نمای کلی سطح بالا، از تابع کمکی
display_eval_result()برای مشاهدهی میانگین امتیاز هر معیار استفاده کنید. در یک سلول جدید، کد زیر را اضافه و اجرا کنید تا خلاصهی مدل A را مشاهده کنید:notebook_utils.display_eval_result( title="Model A Eval Result", eval_result=result_rag_a ) - همین کار را برای مدل B انجام دهید. این کد را در یک سلول جدید اضافه و اجرا کنید:
notebook_utils.display_eval_result( title="Model B Eval Result", eval_result=result_rag_b, )
نتایج ارزیابی را تجسم کنید
نمودارها میتوانند مقایسه عملکرد مدل را آسانتر کنند. شما از دو نوع تجسم استفاده خواهید کرد:
- نمودار رادار: «شکل» عملکرد کلی هر مدل را نشان میدهد. شکل بزرگتر نشاندهنده عملکرد کلی بهتر است.
- نمودار میلهای: برای مقایسه مستقیم و پهلو به پهلو در هر معیار.
این تجسمها به شما کمک میکنند تا مدلها را از نظر ویژگیهای ذهنی مانند مرتبط بودن، منطقی بودن و مفید بودن مقایسه کنید.
- برای آماده شدن برای رسم نمودار، نتایج را در یک لیست واحد از تاپلها ترکیب کنید. هر تاپل باید شامل یک نام مدل و شیء نتیجه مربوطه باشد. در یک سلول جدید، کد زیر را اضافه و اجرا کنید:
eval_results = [] eval_results.append(("Model A", result_rag_a)) eval_results.append(("Model B", result_rag_b)) - اکنون، یک نمودار رادار ایجاد کنید تا مدلها را در تمام معیارها به طور همزمان مقایسه کنید. کد زیر را در یک سلول جدید اضافه و اجرا کنید:
شکل بزرگتر نشان دهنده عملکرد همه جانبه بهتر است.notebook_utils.display_radar_plot( eval_results, metrics=[ "question_answering_quality", "safety", "groundedness", "instruction_following", "relevance", "helpfulness", ], ) - برای مقایسه مستقیمتر روی هر معیار، یک نمودار میلهای ایجاد کنید. در یک سلول جدید، این کد را اضافه و اجرا کنید:
این تصویرسازی، مشاهدهی شکاف عملکردی بین دو مدل را آسان میکند.notebook_utils.display_bar_plot( eval_results, metrics=[ "question_answering_quality", "safety", "groundedness", "instruction_following", "relevance", "helpfulness", ], )
این تجسمها به وضوح نشان میدهند که عملکرد مدل A (شکل بزرگ در نمودار رادار و میلههای بلند در نمودار میلهای) نسبت به مدل B برتر است.
مشاهده توضیحات مفصل برای یک نمونه خاص
نمرات تجمیعشده، عملکرد کلی را نشان میدهند. برای درک اینکه چرا یک مدل به شیوهای خاص عمل کرده است، باید توضیحات مفصلی که توسط ارزیاب LLM برای هر مثال ارائه شده است را بررسی کنید.
- تابع کمکی
display_explanations()به شما امکان میدهد نتایج را به صورت جداگانه بررسی کنید. برای مشاهده جزئیات بیشتر برای مثال دوم (num=2) از نتایج مدل A، کد زیر را در یک سلول جدید اضافه و اجرا کنید:notebook_utils.display_explanations(result_rag_a, num=2) - همچنین میتوانید از این تابع برای فیلتر کردن یک معیار خاص در تمام مثالها استفاده کنید. این برای اشکالزدایی یک حوزه خاص از عملکرد ضعیف مفید است. برای دیدن اینکه چرا مدل B در معیار
groundednessبسیار ضعیف عمل کرده است، این کد را در یک سلول جدید اضافه و اجرا کنید: این کار بازخورد مشخصی در مورد نقاط ضعف مدل ارائه میدهد که برای بهبود مکرر بسیار مهم است.notebook_utils.display_explanations(result_rag_b, metrics=["groundedness"])
۱۱. ارزیابی ارجاعی با استفاده از یک «پاسخ طلایی»
قبلاً، شما یک ارزیابی بدون مرجع انجام میدادید، که در آن پاسخ مدل فقط بر اساس سوال قضاوت میشد. این روش مفید است، اما ارزیابی ذهنی است.
اکنون، شما از ارزیابی مرجع استفاده خواهید کرد. این روش یک "پاسخ طلایی" (که به آن پاسخ مرجع نیز گفته میشود) به مجموعه دادهها اضافه میکند. مقایسه پاسخ مدل با یک پاسخ مبتنی بر واقعیت، معیار عینیتری از عملکرد را ارائه میدهد. این به شما امکان میدهد موارد زیر را اندازهگیری کنید:
- صحت واقعی : آیا پاسخ مدل با حقایق موجود در پاسخ طلایی همسو است؟
- شباهت معنایی : آیا پاسخ مدل همان معنای پاسخ طلایی را دارد؟
- کامل بودن : آیا پاسخ مدل شامل تمام اطلاعات کلیدی از پاسخ طلایی است؟
مجموعه دادههای ارجاعشده را آماده کنید
برای انجام یک ارزیابی ارجاعشده، باید به هر مثال در مجموعه داده خود یک «پاسخ طلایی» اضافه کنید.
بیایید با تعریف یک لیست golden_answers شروع کنیم. مقایسه پاسخهای طلایی با پاسخهای مدل A، ارزش این روش را نشان میدهد:
- سوال ۱ (مغز): پاسخ تولید شده و پاسخ طلایی یکسان هستند. مدل الف صحیح است.
- سوال ۲ (سنا): پاسخها از نظر معنایی مشابه هستند اما به صورت متفاوتی بیان شدهاند. یک معیار خوب باید این نکته را تشخیص دهد.
- سوال ۳ (حسن جلالیان): پاسخ مدل الف با توجه به متن، اساساً نادرست است. پاسخ
golden_answerاین خطا را آشکار میکند.
- در یک سلول جدید، لیست golden_answers را تعریف کنید.
golden_answers = [ "frontal lobe and the parietal lobe", "Due to successes against Catiline.", "The Hasan-Jalalians commanded the area of Artsakh and Utik.", ] - با اجرای این کد در سلول زیر، DataFrames ارزیابی ارجاعشده را ایجاد کنید:
این کد golden_answers را با متغیرهای موجودی که قبلاً ایجاد کردهاید ترکیب میکند.referenced_eval_dataset_rag_a = pd.DataFrame( { "prompt": [ "Answer the question: " + question + " Context: " + item for question, item in zip(questions, retrieved_contexts) ], "response": generated_answers_by_rag_a, "reference": golden_answers, } ) referenced_eval_dataset_rag_b = pd.DataFrame( { "prompt": [ "Answer the question: " + question + " Context: " + item for question, item in zip(questions, retrieved_contexts) ], "response": generated_answers_by_rag_b, "reference": golden_answers, } )
اکنون مجموعه دادهها برای ارزیابی مرجع آماده هستند.
یک معیار مرجع سفارشی ایجاد کنید
شما همچنین میتوانید معیارهای سفارشی برای ارزیابی ارجاعشده ایجاد کنید. فرآیند مشابه است، اما الگوی اعلان اکنون شامل جایگزین {reference} برای پاسخ طلایی است.
با یک پاسخ قطعی «درست»، میتوانید از امتیازدهی دودویی سختگیرانهتر (مثلاً ۱ برای درست، ۰ برای نادرست) برای اندازهگیری دقت واقعی استفاده کنید. بیایید یک معیار جدید question_answering_correctness ایجاد کنیم که این منطق را پیادهسازی کند.
- قالب اعلان را تعریف کنید. در یک سلول جدید، کد زیر را اضافه و اجرا کنید:
این الگو به ارزیاب LLM دستور میدهد تا مقایسه دقیقی بین {پاسخ} مدل و پاسخ طلایی {مرجع} انجام دهد و آن را به صورت صحیح (1) یا غلط (0) امتیازدهی کند.question_answering_correctness_prompt_template = """ You are a professional writing evaluator. Your job is to score writing responses according to pre-defined evaluation criteria. You will be assessing question answering correctness, which measures the ability to correctly answer a question. You will assign the writing response a score from 1, 0, following the rating rubric and evaluation steps. ### Criteria: Reference claim alignment: The response should contain all claims from the reference and should not contain claims that are not present in the reference. ### Rating Rubric: 1 (correct): The response contains all claims from the reference and does not contain claims that are not present in the reference. 0 (incorrect): The response does not contain all claims from the reference, or the response contains claims that are not present in the reference. ### Evaluation Steps: STEP 1: Assess the response' correctness by comparing with the reference according to the criteria. STEP 2: Score based on the rubrics. Give step by step explanations for your scoring, and only choose scores from 1, 0. # User Inputs and AI-generated Response ## User Inputs ### Prompt {prompt} ## Reference {reference} ## AI-generated Response {response} """ - رشته الگوی اعلان را درون یک شیء PointwiseMetric قرار دهید. این کار به معیار شما یک نام رسمی میدهد و آن را به یک جزء قابل استفاده مجدد برای کار ارزیابی تبدیل میکند. کد زیر را در یک سلول جدید اضافه و اجرا کنید:
question_answering_correctness = PointwiseMetric( metric="question_answering_correctness", metric_prompt_template=question_answering_correctness_prompt_template, )
اکنون شما یک معیار سفارشی و مرجع برای بررسی دقیق واقعیت دارید.
۱۲. ارزیابی ارجاعشده را اجرا کنید
اکنون، کار ارزیابی را با مجموعه دادههای ارجاعشده و معیار جدید پیکربندی خواهید کرد. دوباره از کلاس EvalTask استفاده خواهید کرد.
اکنون فهرست معیارها، معیار مبتنی بر مدل سفارشی شما را با معیارهای مبتنی بر محاسبات ترکیب میکند. ارزیابی ارجاعی امکان استفاده از معیارهای سنتی مبتنی بر محاسبات را فراهم میکند که مقایسههای ریاضی بین متن تولید شده و متن مرجع انجام میدهند. شما از سه مورد رایج استفاده خواهید کرد:
-
exact_match: فقط در صورتی که پاسخ تولید شده با پاسخ مرجع یکسان باشد، امتیاز ۱ و در غیر این صورت امتیاز ۰ میگیرد. -
bleu: معیاری برای دقت. این معیار نشان میدهد که چه تعداد کلمه از پاسخ تولید شده در پاسخ مرجع نیز ظاهر میشود. -
rouge: معیاری برای سنجش میزان یادآوری. این معیار نشان میدهد که چه تعداد کلمه از پاسخ مرجع در پاسخ تولید شده گنجانده شده است.
- کار ارزیابی را با مجموعه دادههای ارجاعشده و ترکیب جدید معیارها پیکربندی کنید. در یک سلول جدید، کد زیر را برای ایجاد اشیاء
EvalTaskاضافه و اجرا کنید:referenced_answer_eval_task_rag_a = EvalTask( dataset=referenced_eval_dataset_rag_a, metrics=[ question_answering_correctness, "rouge", "bleu", "exact_match", ], experiment=EXPERIMENT, ) referenced_answer_eval_task_rag_b = EvalTask( dataset=referenced_eval_dataset_rag_b, metrics=[ question_answering_correctness, "rouge", "bleu", "exact_match", ], experiment=EXPERIMENT, ) - ارزیابی ارجاعشده را با فراخوانی متد
.evaluate()اجرا کنید. این کد را در یک سلول جدید اضافه و اجرا کنید:referenced_result_rag_a = referenced_answer_eval_task_rag_a.evaluate() referenced_result_rag_b = referenced_answer_eval_task_rag_b.evaluate()
۱۳. نتایج ارجاعشده را تجزیه و تحلیل کنید
ارزیابی کامل شد. در این بخش، شما نتایج را تجزیه و تحلیل خواهید کرد تا با مقایسه پاسخهای مدلها با پاسخهای مرجع طلایی، دقت واقعی آنها را بسنجید.
مشاهده خلاصه نتایج
- نتایج خلاصه ارزیابی ارجاعشده را تجزیه و تحلیل کنید. در یک سلول جدید، کد زیر را اضافه و اجرا کنید تا جداول خلاصه برای هر دو مدل نمایش داده شود:
متوجه خواهید شد که مدل A در معیار سفارشیnotebook_utils.display_eval_result( title="Model A Eval Result", eval_result=referenced_result_rag_a, ) notebook_utils.display_eval_result( title="Model B Eval Result", eval_result=referenced_result_rag_b, )question_answering_correctnessشما عملکرد خوبی دارد اما درexact_matchامتیاز کمتری کسب میکند. این موضوع ارزش معیارهای مبتنی بر مدل را که میتوانند شباهت معنایی را تشخیص دهند، نه فقط متن یکسان، برجسته میکند.
نتایج را برای مقایسه تجسم کنید
مصورسازیها میتوانند شکاف عملکرد بین دو مدل را آشکارتر کنند. ابتدا، نتایج را در یک لیست واحد برای رسم نمودار ترکیب کنید، سپس نمودارهای رادار و میلهای را ایجاد کنید.
- نتایج ارزیابی ارجاعشده را برای رسم نمودار در یک لیست واحد ترکیب کنید. کد زیر را در یک سلول جدید اضافه و اجرا کنید:
referenced_eval_results = [] referenced_eval_results.append(("Model A", referenced_result_rag_a)) referenced_eval_results.append(("Model B", referenced_result_rag_b)) - یک نمودار رادار ایجاد کنید تا عملکرد هر مدل را در مجموعه جدید معیارها تجسم کنید. این کد را در یک سلول جدید اضافه و اجرا کنید:
notebook_utils.display_radar_plot( referenced_eval_results, metrics=[ "question_answering_correctness", "rouge", "bleu", "exact_match", ], ) - برای مقایسه مستقیم و پهلو به پهلو، یک نمودار میلهای ایجاد کنید. این نمودار نشان میدهد که هر مدل در معیارهای مختلف چگونه عمل کرده است. کد زیر را در یک سلول جدید اضافه و اجرا کنید:
notebook_utils.display_bar_plot( referenced_eval_results, metrics=[ "question_answering_correctness", "rouge", "bleu", "exact_match", ], )
این تجسمها تأیید میکنند که مدل A به طور قابل توجهی دقیقتر و از نظر واقعی با پاسخهای مرجع همترازتر از مدل B است.
۱۴. از تمرین تا تولید
شما با موفقیت یک فرآیند ارزیابی کامل برای یک سیستم RAG اجرا کردهاید. این بخش پایانی، مفاهیم کلیدی استراتژیک آموختهشده را خلاصه میکند و چارچوبی برای بهکارگیری این مهارتها در پروژههای دنیای واقعی ارائه میدهد.
بهترین شیوههای تولید
برای انتقال مهارتهای این آزمایشگاه به محیط تولید در دنیای واقعی، این چهار شیوه کلیدی را در نظر بگیرید:
- خودکارسازی با CI/CD: مجموعه ارزیابی خود را در یک خط لوله CI/CD (مثلاً Cloud Build، GitHub Actions) ادغام کنید. ارزیابیها را به طور خودکار روی تغییرات کد اجرا کنید تا رگرسیونها را شناسایی کرده و در صورت افت امتیاز کیفیت به پایینتر از استانداردهای شما، استقرارها را مسدود کنید.
- مجموعه دادههای خود را تکامل دهید: یک مجموعه داده استاتیک، قدیمی میشود. مجموعههای تست «طلایی» خود را (با استفاده از Git LFS یا Cloud Storage) کنترل نسخه کنید و با نمونهبرداری از پرسوجوهای واقعی (ناشناس) کاربران، بهطور مداوم نمونههای جدید و چالشبرانگیز اضافه کنید.
- بازیابیکننده را ارزیابی کنید، نه فقط تولیدکننده را: یک پاسخ عالی بدون زمینه مناسب غیرممکن است. یک مرحله ارزیابی جداگانه برای سیستم بازیابی خود با استفاده از معیارهایی مانند نرخ موفقیت (آیا سند مناسب پیدا شد؟) و میانگین رتبه متقابل (MRR) (سند مناسب در چه رتبهای قرار گرفت؟) پیادهسازی کنید.
- نظارت بر معیارها در طول زمان: خلاصه نمرات را از ارزیابیهای خود به سرویسی مانند Google Cloud Monitoring منتقل کنید. داشبوردهایی برای ردیابی روندهای کیفیت ایجاد کنید و هشدارهای خودکار را برای اطلاعرسانی در مورد افت قابل توجه عملکرد تنظیم کنید.
ماتریس روششناسی ارزیابی پیشرفته
انتخاب رویکرد ارزیابی مناسب به اهداف خاص شما بستگی دارد. این ماتریس خلاصه میکند که چه زمانی از هر روش استفاده کنید.
رویکرد ارزیابی | بهترین موارد استفاده | مزایای کلیدی | محدودیتها |
بدون مرجع | نظارت بر تولید، ارزیابی مستمر | نیازی به پاسخهای طلایی نیست، کیفیت ذهنی را به تصویر میکشد | گرانتر، احتمال سوگیری ارزیاب |
مبتنی بر مرجع | مقایسه مدل، الگوبرداری | اندازهگیری عینی، محاسبه سریعتر | به پاسخهای طلایی نیاز دارد، ممکن است معادل معنایی را از دست بدهد |
معیارهای سفارشی | ارزیابی خاص دامنه | متناسب با نیازهای تجاری | نیاز به اعتبارسنجی، سربار توسعه |
رویکرد ترکیبی | سیستمهای جامع تولید | بهترین از همه رویکردها | پیچیدگی بالاتر، نیاز به بهینهسازی هزینه |
بینشهای فنی کلیدی
هنگام ساخت و ارزیابی سیستمهای RAG خود، این اصول اصلی را در نظر داشته باشید:
- اتصال به زمین برای RAG حیاتی است : این معیار به طور مداوم بین سیستمهای RAG با کیفیت بالا و پایین تمایز قائل میشود و آن را برای نظارت بر تولید ضروری میسازد.
- معیارهای چندگانه، استحکام را فراهم میکنند : هیچ معیار واحدی تمام جنبههای کیفیت RAG را در بر نمیگیرد. ارزیابی جامع نیازمند ابعاد ارزیابی چندگانه است.
- معیارهای سفارشی ارزش قابل توجهی میافزایند : معیارهای ارزیابی مختص یک حوزه اغلب نکات ظریفی را که معیارهای عمومی از قلم میاندازند، در بر میگیرند و دقت ارزیابی را بهبود میبخشند.
- دقت آماری، اطمینان را افزایش میدهد : اندازههای مناسب نمونه و آزمون معناداری، ارزیابی را از حدس و گمان به ابزارهای تصمیمگیری قابل اعتماد تبدیل میکند.
چارچوب تصمیمگیری در مورد استقرار تولید
از این چارچوب مرحلهای به عنوان راهنما برای استقرارهای آینده سیستم RAG استفاده کنید:
- مرحله ۱ - توسعه : استفاده از ارزیابی مبتنی بر مرجع با مجموعههای آزمایشی شناختهشده برای مقایسه و انتخاب مدل.
- مرحله ۲ - پیش تولید : ارزیابی جامعی را با ترکیب هر دو رویکرد برای تأیید آمادگی تولید اجرا کنید.
- مرحله ۳ - تولید : اجرای پایش بدون مرجع برای ارزیابی مستمر کیفیت بدون پاسخهای طلایی.
- مرحله ۴ - بهینهسازی : استفاده از بینشهای ارزیابی برای هدایت بهبود مدل و بهبود سیستم بازیابی.
۱۵. نتیجهگیری
تبریک میگویم! شما آزمایشگاه را به پایان رساندید.
این آزمایشگاه بخشی از پروژه «هوش مصنوعی آماده تولید با مسیر یادگیری ابری گوگل» است.
- برای پر کردن شکاف بین نمونه اولیه و تولید، برنامه درسی کامل را بررسی کنید .
- پیشرفت خود را با هشتگ
ProductionReadyAIبه اشتراک بگذارید.
خلاصه
شما یاد گرفتهاید که چگونه:
- ارزیابی بدون مرجع را برای ارزیابی کیفیت پاسخ بر اساس متن بازیابی شده انجام دهید.
- با اضافه کردن یک «پاسخ طلایی» برای سنجش صحت واقعی، ارزیابی مرجع را انجام دهید.
- برای هر دو رویکرد، از ترکیبی از معیارهای از پیش تعریف شده و سفارشی استفاده کنید.
- از هر دو معیار مبتنی بر مدل (مانند
question_answering_quality) و معیارهای مبتنی بر محاسبات (rouge،bleu،exact_match) استفاده کنید. - نتایج را تجزیه و تحلیل و تجسم کنید تا نقاط قوت و ضعف یک مدل را درک کنید.
این رویکرد برای ارزیابی به شما کمک میکند تا برنامههای هوش مصنوعی مولد (Generative AI) قابل اعتمادتر و دقیقتری بسازید.