ভার্টেক্স এআই দিয়ে আরএজি সিস্টেম মূল্যায়ন করুন

1. সংক্ষিপ্ত বিবরণ

এই ল্যাবে, আপনি শিখবেন কিভাবে একটি Retrieval-Augmented Generation (RAG) সিস্টেমের জন্য একটি মূল্যায়ন পাইপলাইন তৈরি করতে হয়। আপনি Vertex AI Gen AI মূল্যায়ন পরিষেবা ব্যবহার করে কাস্টম মূল্যায়ন মানদণ্ড তৈরি করবেন এবং একটি প্রশ্ন-উত্তর কাজের জন্য একটি মূল্যায়ন কাঠামো তৈরি করবেন।

আপনি স্ট্যানফোর্ড প্রশ্নোত্তর ডেটাসেট (SQuAD 2.0) থেকে উদাহরণ নিয়ে মূল্যায়ন ডেটাসেট প্রস্তুত করবেন, রেফারেন্স-মুক্ত এবং রেফারেন্স-ভিত্তিক মূল্যায়ন কনফিগার করবেন এবং ফলাফল ব্যাখ্যা করবেন। এই ল্যাবটি শেষ হওয়ার পরে, আপনি বুঝতে পারবেন কিভাবে RAG সিস্টেম মূল্যায়ন করতে হয় এবং কেন নির্দিষ্ট মূল্যায়ন পদ্ধতি বেছে নেওয়া হয়।

ডেটাসেট ফাউন্ডেশন

আমরা SQuAD 2.0 প্রশ্নোত্তর ডেটাসেটে পাওয়া একাধিক ডোমেন জুড়ে সাবধানে তৈরি উদাহরণগুলির সাথে কাজ করব:

  • স্নায়ুবিজ্ঞান : বৈজ্ঞানিক প্রেক্ষাপটে প্রযুক্তিগত নির্ভুলতা পরীক্ষা করা
  • ইতিহাস : ঐতিহাসিক আখ্যানগুলিতে বাস্তবিক নির্ভুলতার মূল্যায়ন
  • ভূগোল : আঞ্চলিক এবং রাজনৈতিক জ্ঞান মূল্যায়ন

এই বৈচিত্র্য আপনাকে বুঝতে সাহায্য করে যে মূল্যায়ন পদ্ধতিগুলি বিভিন্ন বিষয়ের ক্ষেত্রে কীভাবে সাধারণীকরণ করা হয়।

তথ্যসূত্র

তুমি কি শিখবে

এই ল্যাবে, আপনি নিম্নলিখিত কাজগুলি কীভাবে সম্পাদন করবেন তা শিখবেন:

  • RAG সিস্টেমের জন্য মূল্যায়ন ডেটাসেট প্রস্তুত করুন।
  • ভিত্তি এবং প্রাসঙ্গিকতার মতো মেট্রিক্স ব্যবহার করে রেফারেন্স-মুক্ত মূল্যায়ন বাস্তবায়ন করুন।
  • শব্দার্থিক সাদৃশ্য পরিমাপের সাথে রেফারেন্স-ভিত্তিক মূল্যায়ন প্রয়োগ করুন।
  • বিস্তারিত স্কোরিং রুব্রিক সহ কাস্টম মূল্যায়ন মেট্রিক্স তৈরি করুন।
  • মডেল নির্বাচনকে অবহিত করার জন্য মূল্যায়নের ফলাফল ব্যাখ্যা এবং কল্পনা করুন।

2. প্রকল্প সেটআপ

গুগল অ্যাকাউন্ট

যদি আপনার ইতিমধ্যেই একটি ব্যক্তিগত Google অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি Google অ্যাকাউন্ট তৈরি করতে হবে।

কর্মক্ষেত্র বা স্কুল অ্যাকাউন্টের পরিবর্তে ব্যক্তিগত অ্যাকাউন্ট ব্যবহার করুন

গুগল ক্লাউড কনসোলে সাইন-ইন করুন

একটি ব্যক্তিগত গুগল অ্যাকাউন্ট ব্যবহার করে গুগল ক্লাউড কনসোলে সাইন-ইন করুন।

বিলিং সক্ষম করুন

$৫ গুগল ক্লাউড ক্রেডিট রিডিম করুন (ঐচ্ছিক)

এই কর্মশালাটি পরিচালনা করার জন্য, আপনার কিছু ক্রেডিট সহ একটি বিলিং অ্যাকাউন্ট প্রয়োজন। আপনি যদি নিজের বিলিং ব্যবহার করার পরিকল্পনা করেন, তাহলে আপনি এই ধাপটি এড়িয়ে যেতে পারেন।

  1. এই লিঙ্কে ক্লিক করুন এবং একটি ব্যক্তিগত গুগল অ্যাকাউন্ট দিয়ে সাইন ইন করুন। আপনি এরকম কিছু দেখতে পাবেন: ক্রেডিট পৃষ্ঠার জন্য এখানে ক্লিক করুন
  2. আপনার ক্রেডিট অ্যাক্সেস করতে এখানে ক্লিক করুন বোতামটি ক্লিক করুন। এটি আপনাকে আপনার বিলিং প্রোফাইল সেট আপ করার জন্য একটি পৃষ্ঠায় নিয়ে যাবে। বিলিং প্রোফাইল পৃষ্ঠা সেট আপ করুন
  3. আপনি এখন একটি Google Cloud Platform ট্রায়াল বিলিং অ্যাকাউন্টের সাথে সংযুক্ত আছেন কিনা তা নিশ্চিত করুন -এ ক্লিক করুন। বিলিং ওভারভিউয়ের স্ক্রিনশট

একটি ব্যক্তিগত বিলিং অ্যাকাউন্ট সেট আপ করুন

আপনি যদি গুগল ক্লাউড ক্রেডিট ব্যবহার করে বিলিং সেট আপ করেন, তাহলে আপনি এই ধাপটি এড়িয়ে যেতে পারেন।

একটি ব্যক্তিগত বিলিং অ্যাকাউন্ট সেট আপ করতে, ক্লাউড কনসোলে বিলিং সক্ষম করতে এখানে যান

কিছু নোট:

  • এই ল্যাবটি সম্পূর্ণ করতে ক্লাউড রিসোর্সে $1 USD এর কম খরচ হবে।
  • আরও চার্জ এড়াতে আপনি এই ল্যাবের শেষে রিসোর্স মুছে ফেলার ধাপগুলি অনুসরণ করতে পারেন।
  • নতুন ব্যবহারকারীরা $300 USD বিনামূল্যে ট্রায়ালের জন্য যোগ্য।

একটি প্রকল্প তৈরি করুন (ঐচ্ছিক)

যদি আপনার এই ল্যাবের জন্য ব্যবহার করতে চান এমন কোন বর্তমান প্রকল্প না থাকে, তাহলে এখানে একটি নতুন প্রকল্প তৈরি করুন

৩. রিট্রিভ্যাল অগমেন্টেড জেনারেশন (RAG) কী?

RAG হল লার্জ ল্যাঙ্গুয়েজ মডেল (LLM) থেকে উত্তরের বাস্তবিক নির্ভুলতা এবং প্রাসঙ্গিকতা উন্নত করার জন্য ব্যবহৃত একটি কৌশল। এটি LLM-কে একটি বহিরাগত জ্ঞান ভিত্তির সাথে সংযুক্ত করে যাতে নির্দিষ্ট, যাচাইযোগ্য তথ্যের উপর ভিত্তি করে তার উত্তরগুলি তৈরি করা যায়।

এই প্রক্রিয়াটিতে নিম্নলিখিত ধাপগুলি অন্তর্ভুক্ত রয়েছে:

  1. একজন ব্যবহারকারীর প্রশ্নকে সংখ্যাসূচক উপস্থাপনায় রূপান্তর করা (একটি এমবেডিং)।
  2. একই ধরণের এম্বেডিং সহ নথির জন্য জ্ঞানের ভিত্তি অনুসন্ধান করা হচ্ছে।
  3. উত্তর তৈরির জন্য মূল প্রশ্নের সাথে LLM-এর প্রেক্ষাপট হিসেবে এই প্রাসঙ্গিক নথিগুলি সরবরাহ করা।

RAG সম্পর্কে আরও পড়ুন।

আরএজি মূল্যায়নকে জটিল করে তোলে কী?

আরএজি সিস্টেম মূল্যায়ন করা ঐতিহ্যবাহী ভাষা মডেল মূল্যায়ন থেকে আলাদা।

বহু-উপাদান চ্যালেঞ্জ : RAG সিস্টেম তিনটি ক্রিয়াকলাপকে একত্রিত করে যা প্রতিটি ব্যর্থতার বিন্দু হতে পারে:

  • পুনরুদ্ধারের গুণমান : সিস্টেম কি সঠিক প্রসঙ্গ নথি খুঁজে পেয়েছে?
  • প্রেক্ষাপটের ব্যবহার : মডেলটি কি পুনরুদ্ধারকৃত তথ্য কার্যকরভাবে ব্যবহার করেছে?
  • প্রজন্মের গুণমান : চূড়ান্ত উত্তর কি সুলিখিত, সহায়ক এবং সঠিক?

যদি এই উপাদানগুলির কোনওটি প্রত্যাশা অনুযায়ী কাজ না করে তবে একটি প্রতিক্রিয়া ব্যর্থ হতে পারে। উদাহরণস্বরূপ, সিস্টেমটি সঠিক প্রসঙ্গটি পুনরুদ্ধার করতে পারে, কিন্তু মডেলটি এটি উপেক্ষা করে। অথবা, মডেলটি একটি সু-লিখিত প্রতিক্রিয়া তৈরি করতে পারে যা ভুল কারণ পুনরুদ্ধার করা প্রসঙ্গটি অপ্রাসঙ্গিক ছিল।

৪. আপনার ভার্টেক্স এআই ওয়ার্কবেঞ্চ পরিবেশ সেট আপ করুন

চলুন শুরু করা যাক একটি নতুন নোটবুক পরিবেশ শুরু করে যেখানে আমরা RAG সিস্টেম মূল্যায়নের জন্য প্রয়োজনীয় কোডটি চালাব।

  1. আপনার ক্লাউড কনসোলের API এবং পরিষেবা পৃষ্ঠায় নেভিগেট করুন।
  2. Vertex AI API এর জন্য Enable এ ক্লিক করুন। ভার্টেক্স ড্যাশবোর্ড

ভার্টেক্স এআই ওয়ার্কবেঞ্চ অ্যাক্সেস করুন

  1. গুগল ক্লাউড কনসোলে, নেভিগেশন মেনু ☰ > ভার্টেক্স এআই > ওয়ার্কবেঞ্চে ক্লিক করে ভার্টেক্স এআই -তে নেভিগেট করুন।
  2. একটি নতুন ওয়ার্কবেঞ্চ ইনস্ট্যান্স তৈরি করুন। ওয়ার্কবেঞ্চ তৈরি করুন
  3. ওয়ার্কবেঞ্চের উদাহরণ evaluation-workbench নাম দাও।
  4. যদি সেই মানগুলি ইতিমধ্যে সেট না করা থাকে তবে আপনার অঞ্চল এবং অঞ্চল নির্বাচন করুন।
  5. তৈরি করুন ক্লিক করুন। নাম ওয়ার্কবেঞ্চ
  6. ওয়ার্কবেঞ্চ সেট আপ হওয়া পর্যন্ত অপেক্ষা করুন। এতে কয়েক মিনিট সময় লাগতে পারে। অপেক্ষা করুন ওয়ার্কবেঞ্চ
  7. ওয়ার্কবেঞ্চটি প্রস্তুত হয়ে গেলে, jupyterlab খুলুন এ ক্লিক করুন। ওপেন ওয়ার্কবেঞ্চ
  8. ওয়ার্কবেঞ্চে, একটি নতুন Python3 নোটবুক তৈরি করুন। নোটবুক তৈরি করুন

এই পরিবেশের বৈশিষ্ট্য এবং ক্ষমতা সম্পর্কে আরও জানতে, Vertex AI Workbench এর অফিসিয়াল ডকুমেন্টেশন দেখুন।

Vertex AI মূল্যায়ন SDK ইনস্টল করুন

এবার আসুন বিশেষায়িত মূল্যায়ন SDK ইনস্টল করি যা RAG মূল্যায়নের জন্য সরঞ্জাম সরবরাহ করে।

  1. আপনার নোটবুকের প্রথম কক্ষে, Vertex AI SDK (মূল্যায়নের উপাদান সহ) ইনস্টল করতে নীচের আমদানি বিবৃতি (SHIFT+ENTER) যোগ করুন এবং চালান।
    %pip install --upgrade --user --quiet google-cloud-aiplatform[evaluation]
    
    এটি মূল্যায়ন এক্সটেনশন সহ Vertex AI SDK ইনস্টল করে যার মধ্যে রয়েছে:
    • EvalTask : মূল্যায়ন পরিচালনার জন্য প্রধান ক্লাস
    • মেট্রিকপ্রম্পটটেমপ্লেটউদাহরণ : পূর্বনির্ধারিত মূল্যায়ন মেট্রিক্স
    • PointwiseMetric : কাস্টম মেট্রিক্স তৈরির জন্য ফ্রেমওয়ার্ক
    • notebook_utils : ফলাফল বিশ্লেষণের জন্য ভিজ্যুয়ালাইজেশন টুল
  2. গুরুত্বপূর্ণ : ইনস্টলেশনের পরে, নতুন প্যাকেজগুলি ব্যবহার করার জন্য আপনাকে কার্নেলটি পুনরায় চালু করতে হবে। আপনার JupyterLab উইন্ডোর উপরের মেনু বারে, Kernel > Restart Kernel এ নেভিগেট করুন।

৫. SDK আরম্ভ করুন এবং লাইব্রেরি আমদানি করুন

মূল্যায়ন পাইপলাইন তৈরি করার আগে, আপনাকে আপনার পরিবেশ সেট আপ করতে হবে। এর মধ্যে রয়েছে আপনার প্রকল্পের বিবরণ কনফিগার করা, Google ক্লাউডের সাথে সংযোগ স্থাপনের জন্য Vertex AI SDK শুরু করা এবং মূল্যায়নের জন্য আপনার ব্যবহৃত বিশেষায়িত পাইথন লাইব্রেরিগুলি আমদানি করা।

  1. আপনার মূল্যায়ন কাজের জন্য কনফিগারেশন ভেরিয়েবলগুলি সংজ্ঞায়িত করুন। একটি নতুন ঘরে, এই রানটি সংগঠিত করার জন্য আপনার 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")
    
  2. Vertex AI SDK আরম্ভ করুন। একটি নতুন ঘরে, নিম্নলিখিত কোডটি যোগ করুন এবং চালান।
    vertexai.init(project=PROJECT_ID, location=LOCATION)
    
    এই ধাপটি আপনার নোটবুককে প্রমাণীকরণ করে এবং আপনার Google ক্লাউড প্রকল্পের সাথে সংযুক্ত করে।
  3. পরবর্তী কক্ষে নিম্নলিখিত কোডটি চালিয়ে মূল্যায়ন SDK থেকে প্রয়োজনীয় ক্লাসগুলি আমদানি করুন:
    import pandas as pd
    from vertexai.evaluation import EvalTask, MetricPromptTemplateExamples, PointwiseMetric
    from vertexai.preview.evaluation import notebook_utils
    
    এখানে প্রতিটি আমদানির সারসংক্ষেপ দেওয়া হল:
    • pandas : ডেটাফ্রেমে ডেটা তৈরি এবং পরিচালনার জন্য।
    • EvalTask : মূল ক্লাস যা মূল্যায়নের কাজ পরিচালনা করে।
    • MetricPromptTemplateExamples : গুগলের পূর্বনির্ধারিত মূল্যায়ন মেট্রিক্সে অ্যাক্সেস প্রদান করে।
    • PointwiseMetric : আপনার নিজস্ব কাস্টম মেট্রিক্স তৈরির কাঠামো।
    • notebook_utils : ফলাফল ভিজ্যুয়ালাইজ করার জন্য সরঞ্জামগুলির একটি সংগ্রহ।

৬. আপনার মূল্যায়ন ডেটাসেট প্রস্তুত করুন

একটি সুগঠিত ডেটাসেট হল যেকোনো নির্ভরযোগ্য মূল্যায়নের ভিত্তি। RAG সিস্টেমের জন্য, আপনার ডেটাসেটের প্রতিটি উদাহরণের জন্য দুটি মূল ক্ষেত্র প্রয়োজন:

  • প্রম্পট : এটি ভাষা মডেলে প্রদত্ত মোট ইনপুট। আপনাকে ব্যবহারকারীর প্রশ্নটি আপনার RAG সিস্টেম দ্বারা প্রাপ্ত প্রসঙ্গের সাথে একত্রিত করতে হবে ( prompt = User Question + Retrieved Context )। এটি গুরুত্বপূর্ণ যাতে মূল্যায়ন পরিষেবা জানতে পারে যে মডেলটি তার উত্তর তৈরি করতে কোন তথ্য ব্যবহার করেছে।
  • উত্তর : এটি আপনার RAG মডেল দ্বারা তৈরি চূড়ান্ত উত্তর।

পরিসংখ্যানগতভাবে নির্ভরযোগ্য ফলাফলের জন্য, প্রায় ১০০টি উদাহরণের একটি ডেটাসেট সুপারিশ করা হয়। এই ল্যাবের জন্য, আপনি প্রক্রিয়াটি প্রদর্শনের জন্য একটি ছোট ডেটাসেট ব্যবহার করবেন।

আসুন ডেটাসেট তৈরি করি। আপনি একটি RAG সিস্টেম থেকে প্রশ্ন এবং retrieved_contexts একটি তালিকা দিয়ে শুরু করবেন। তারপরে আপনি দুটি উত্তরের সেট সংজ্ঞায়িত করবেন: একটি এমন মডেল থেকে যা ভাল পারফর্ম করে বলে মনে হয় ( generated_answers_by_rag_a ) এবং একটি এমন মডেল থেকে যা খারাপ পারফর্ম করে ( generated_answers_by_rag_b )।

অবশেষে, আপনি উপরে বর্ণিত কাঠামো অনুসরণ করে এই টুকরোগুলিকে দুটি পান্ডা ডেটাফ্রেম, eval_dataset_rag_a এবং eval_dataset_rag_b তে একত্রিত করবেন।

  1. একটি নতুন ঘরে, প্রশ্ন এবং generated_answers এর দুটি সেট সংজ্ঞায়িত করতে নিম্নলিখিত কোডটি যোগ করুন এবং চালান।
    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.",
    ]
    
    এটি আপনার ডেটাসেটের মূল উপাদানগুলিকে সংজ্ঞায়িত করে: প্রশ্নগুলি, প্রতিটি প্রশ্নের জন্য একটি RAG সিস্টেম দ্বারা প্রাপ্ত দীর্ঘ প্রসঙ্গ অনুচ্ছেদ এবং দুটি ভিন্ন মডেল (একটি উচ্চ-কার্যকর মডেল A এবং একটি নিম্ন-কার্যকর মডেল B) দ্বারা তৈরি উত্তর।
  2. retrieved_contexts সংজ্ঞায়িত করুন। একটি নতুন ঘরে নিম্নলিখিত কোডটি যোগ করুন এবং চালান।
    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.",
    ]
    
    এখন যেহেতু আপনার কাছে সমস্ত কাঁচা উপাদান রয়েছে, আপনি সেগুলিকে মূল্যায়ন পরিষেবার জন্য প্রয়োজনীয় কাঠামোগত পান্ডাস ডেটাফ্রেমে একত্রিত করবেন।
  3. একটি নতুন সেলে, 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,
        }
    )
    
  4. মডেল A এর ডেটাসেটের প্রথম কয়েকটি সারি দেখতে নিম্নলিখিত কোডটি একটি নতুন ঘরে চালান।
    eval_dataset_rag_a
    
    এটি সঠিকভাবে তৈরি হয়েছে তা নিশ্চিত করার জন্য এটি একটি ভালো অনুশীলন।

৭. মেট্রিক্স নির্বাচন করুন এবং তৈরি করুন

এখন যেহেতু ডেটাসেটগুলি প্রস্তুত, আপনি কীভাবে কর্মক্ষমতা পরিমাপ করবেন তা নির্ধারণ করতে পারেন। আপনার মডেল মূল্যায়ন করার জন্য আপনি এক বা একাধিক মেট্রিক ব্যবহার করতে পারেন। প্রতিটি মেট্রিক মডেলের প্রতিক্রিয়ার একটি নির্দিষ্ট দিক বিচার করে, যেমন এর বাস্তবিক নির্ভুলতা বা প্রাসঙ্গিকতা।

আপনি দুই ধরণের মেট্রিক্সের সংমিশ্রণ ব্যবহার করতে পারেন:

  • পূর্বনির্ধারিত মেট্রিক্স : সাধারণ মূল্যায়ন কাজের জন্য SDK দ্বারা প্রদত্ত ব্যবহারের জন্য প্রস্তুত মেট্রিক্স।
  • কাস্টম মেট্রিক্স : আপনার ব্যবহারের ক্ষেত্রে প্রাসঙ্গিক গুণাবলী পরীক্ষা করার জন্য আপনি যে মেট্রিক্স সংজ্ঞায়িত করেন।

এই বিভাগে, আপনি RAG-এর জন্য উপলব্ধ পূর্বনির্ধারিত মেট্রিক্সগুলি অন্বেষণ করবেন।

পূর্বনির্ধারিত মেট্রিক্স অন্বেষণ করুন

প্রশ্নোত্তর সিস্টেম মূল্যায়নের জন্য SDK-তে বেশ কিছু অন্তর্নির্মিত মেট্রিক্স অন্তর্ভুক্ত রয়েছে। এই মেট্রিক্সগুলি নির্দেশাবলীর একটি সেটের উপর ভিত্তি করে আপনার মডেলের উত্তরগুলি স্কোর করার জন্য একটি ভাষা মডেলকে "মূল্যায়নকারী" হিসাবে ব্যবহার করে।

  1. একটি নতুন ঘরে, পূর্বনির্ধারিত মেট্রিক নামের সম্পূর্ণ তালিকা দেখতে নিম্নলিখিত কোডটি যোগ করুন এবং চালান:
    MetricPromptTemplateExamples.list_example_metric_names()
    
    এটি উপলব্ধ মেট্রিক্সের একটি তালিকা প্রদর্শন করে যা আপনি বাক্সের বাইরে ব্যবহার করতে পারেন।
  2. এই মেট্রিক্সগুলি কীভাবে কাজ করে তা বোঝার জন্য, আপনি তাদের অন্তর্নিহিত প্রম্পট টেমপ্লেটগুলি পরীক্ষা করতে পারেন। একটি নতুন ঘরে, question_answering_quality মেট্রিকের জন্য মূল্যায়নকারী LLM-কে দেওয়া নির্দেশাবলী দেখতে নিম্নলিখিত কোডটি যোগ করুন এবং চালান।
    # See the prompt example for one of the pointwise metrics
    print(MetricPromptTemplateExamples.get_prompt_template("question_answering_quality"))
    

৮. কাস্টম মেট্রিক্স তৈরি করুন

পূর্বনির্ধারিত মেট্রিক্স ছাড়াও, আপনি আপনার ব্যবহারের ক্ষেত্রে নির্দিষ্ট মানদণ্ড মূল্যায়নের জন্য কাস্টম মেট্রিক্স তৈরি করতে পারেন। একটি কাস্টম মেট্রিক তৈরি করতে, আপনি একটি প্রম্পট টেমপ্লেট লিখুন যা মূল্যায়নকারী LLM কে কীভাবে প্রতিক্রিয়া স্কোর করতে হয় তা নির্দেশ করে।

একটি কাস্টম মেট্রিক তৈরি করতে দুটি ধাপ জড়িত:

  1. প্রম্পট টেমপ্লেট সংজ্ঞায়িত করুন : একটি স্ট্রিং যাতে মূল্যায়নকারী LLM-এর জন্য আপনার নির্দেশাবলী থাকে। একটি ভালো টেমপ্লেটে একটি স্পষ্ট ভূমিকা, মূল্যায়নের মানদণ্ড, একটি স্কোরিং রুব্রিক এবং {prompt} এবং {response} এর মতো স্থানধারক থাকে।
  2. একটি PointwiseMetric অবজেক্ট তৈরি করুন : আপনি এই ক্লাসের ভিতরে আপনার প্রম্পট টেমপ্লেট স্ট্রিংটি মুড়ে আপনার মেট্রিকের একটি নাম দিন।

RAG সিস্টেমের উত্তরগুলির প্রাসঙ্গিকতা এবং সহায়কতা মূল্যায়ন করার জন্য আপনি দুটি কাস্টম মেট্রিক্স তৈরি করবেন।

  1. প্রাসঙ্গিকতা মেট্রিকের জন্য প্রম্পট টেমপ্লেটটি সংজ্ঞায়িত করুন। এই টেমপ্লেটটি মূল্যায়নকারী 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}
    """
    
    
  2. একই পদ্ধতি ব্যবহার করে সহায়কতা মেট্রিকের জন্য প্রম্পট টেমপ্লেটটি সংজ্ঞায়িত করুন। একটি নতুন ঘরে নিম্নলিখিত কোডটি যোগ করুন এবং চালান:
    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}
    """
    
  3. আপনার দুটি কাস্টম মেট্রিক্সের জন্য 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 ​​মূল্যায়ন পরিচালনার জন্য উপাদানগুলিকে একত্রিত করে:

  • ডেটাসেট : আপনার প্রম্পট এবং প্রতিক্রিয়া ধারণকারী ডেটাফ্রেম।
  • মেট্রিক্স : আপনি যে মেট্রিক্সের বিরুদ্ধে স্কোর করতে চান তার তালিকা।
  • পরীক্ষা : ফলাফল লগ করার জন্য ভার্টেক্স এআই পরীক্ষা, যা আপনাকে রান ট্র্যাক এবং তুলনা করতে সাহায্য করে।
  1. প্রতিটি মডেলের জন্য একটি 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 অবজেক্ট।
  2. কাজগুলো কনফিগার করার পর, .evaluate() পদ্ধতিটি কল করে সেগুলো কার্যকর করুন। এটি কাজগুলো প্রক্রিয়াকরণের জন্য Vertex AI ব্যাকএন্ডে পাঠায় এবং সম্পূর্ণ হতে কয়েক মিনিট সময় লাগতে পারে। একটি নতুন ঘরে, নিম্নলিখিত কোডটি যোগ করুন এবং রান করুন:
    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 থেকে সহায়ক ফাংশন ব্যবহার করে এই ফলাফলগুলি বিশ্লেষণ করবেন।

সামগ্রিক সারাংশ দেখুন

  1. একটি উচ্চ-স্তরের ওভারভিউ পেতে, প্রতিটি মেট্রিকের গড় স্কোর দেখতে display_eval_result() সহায়ক ফাংশন ব্যবহার করুন। একটি নতুন ঘরে, মডেল A এর সারাংশ দেখতে নিম্নলিখিতটি যোগ করুন এবং চালান:
    notebook_utils.display_eval_result(
        title="Model A Eval Result", eval_result=result_rag_a
    )
    
  2. মডেল B এর ক্ষেত্রেও একই কাজ করুন। একটি নতুন ঘরে এই কোডটি যোগ করুন এবং চালান:
    notebook_utils.display_eval_result(
        title="Model B Eval Result",
        eval_result=result_rag_b,
    )
    

মূল্যায়নের ফলাফল কল্পনা করুন

প্লট মডেলের পারফরম্যান্স তুলনা করা সহজ করে তুলতে পারে। আপনি দুই ধরণের ভিজ্যুয়ালাইজেশন ব্যবহার করবেন:

  • রাডার প্লট: প্রতিটি মডেলের সামগ্রিক কর্মক্ষমতা "আকৃতি" দেখায়। একটি বৃহত্তর আকৃতি উন্নত সার্বিক কর্মক্ষমতা নির্দেশ করে।
  • বার প্লট: প্রতিটি মেট্রিকের সরাসরি, পাশাপাশি তুলনার জন্য।

এই ভিজ্যুয়ালাইজেশনগুলি আপনাকে প্রাসঙ্গিকতা, ভিত্তিগততা এবং সহায়কতার মতো ব্যক্তিগত গুণাবলীর মডেলগুলির তুলনা করতে সাহায্য করবে।

  1. প্লট করার প্রস্তুতির জন্য, ফলাফলগুলিকে একক টিপলের তালিকায় একত্রিত করুন। প্রতিটি টিপলে একটি মডেলের নাম এবং তার সাথে সম্পর্কিত ফলাফল অবজেক্ট থাকা উচিত। একটি নতুন ঘরে, নিম্নলিখিত কোডটি যোগ করুন এবং চালান:
    eval_results = []
    eval_results.append(("Model A", result_rag_a))
    eval_results.append(("Model B", result_rag_b))
    
  2. এখন, সমস্ত মেট্রিক্সের মডেলগুলির তুলনা করার জন্য একটি রাডার প্লট তৈরি করুন। একটি নতুন ঘরে নিম্নলিখিত কোডটি যোগ করুন এবং চালান:
    notebook_utils.display_radar_plot(
        eval_results,
        metrics=[
        "question_answering_quality",
        "safety",
        "groundedness",
        "instruction_following",
        "relevance",
        "helpfulness",
        ],
    )
    
    একটি বৃহত্তর আকৃতি উন্নত সার্বিক কর্মক্ষমতা নির্দেশ করে।
  3. প্রতিটি মেট্রিকের আরও সরাসরি তুলনার জন্য, একটি বার প্লট তৈরি করুন। একটি নতুন ঘরে, এই কোডটি যোগ করুন এবং চালান:
    notebook_utils.display_bar_plot(
        eval_results,
        metrics=[
        "question_answering_quality",
        "safety",
        "groundedness",
        "instruction_following",
        "relevance",
        "helpfulness",
        ],
    )
    
    এই ভিজ্যুয়ালাইজেশন দুটি মডেলের মধ্যে পারফরম্যান্সের ব্যবধান সহজেই দেখা যায়।

ভিজ্যুয়ালাইজেশনগুলি স্পষ্টভাবে দেখাবে যে মডেল A এর কর্মক্ষমতা (রাডার প্লটে বড় আকৃতি এবং বার চার্টে লম্বা বার) মডেল B এর চেয়ে উন্নত।

একটি পৃথক উদাহরণের জন্য বিস্তারিত ব্যাখ্যা দেখুন

সামগ্রিক স্কোর সামগ্রিক কর্মক্ষমতা দেখায়। একটি মডেল কেন একটি নির্দিষ্ট উপায়ে পারফর্ম করেছে তা বোঝার জন্য, আপনাকে প্রতিটি উদাহরণের জন্য মূল্যায়নকারী LLM দ্বারা উত্পন্ন বিশদ ব্যাখ্যা পর্যালোচনা করতে হবে।

  1. display_explanations() সাহায্যকারী ফাংশন আপনাকে পৃথক ফলাফল পরিদর্শন করতে দেয়। মডেল A এর ফলাফল থেকে দ্বিতীয় উদাহরণ ( num=2 ) এর বিস্তারিত ভাঙ্গন দেখতে, একটি নতুন ঘরে নিম্নলিখিত কোডটি যোগ করুন এবং চালান:
    notebook_utils.display_explanations(result_rag_a, num=2)
    
  2. আপনি এই ফাংশনটি ব্যবহার করে সমস্ত উদাহরণ জুড়ে একটি নির্দিষ্ট মেট্রিক ফিল্টার করতে পারেন। এটি দুর্বল পারফরম্যান্সের একটি নির্দিষ্ট ক্ষেত্র ডিবাগ করার জন্য কার্যকর। groundedness মেট্রিকে মডেল B কেন এত খারাপ পারফর্ম করেছে তা দেখতে, একটি নতুন ঘরে এই কোডটি যোগ করুন এবং চালান:
    notebook_utils.display_explanations(result_rag_b, metrics=["groundedness"])
    
    এটি মডেলটি কোথায় ব্যর্থ হচ্ছে সে সম্পর্কে নির্দিষ্ট প্রতিক্রিয়া প্রদান করে, যা পুনরাবৃত্তিমূলক উন্নতির জন্য অত্যন্ত গুরুত্বপূর্ণ।

১১. "সুবর্ণ উত্তর" ব্যবহার করে রেফারেন্সকৃত মূল্যায়ন

পূর্বে, আপনি একটি রেফারেন্স-মুক্ত মূল্যায়ন করতেন, যেখানে মডেলের উত্তর শুধুমাত্র প্রম্পটের উপর ভিত্তি করে বিচার করা হত। এই পদ্ধতিটি কার্যকর, তবে মূল্যায়নটি ব্যক্তিগত।

এখন, আপনি রেফারেন্সড মূল্যায়ন ব্যবহার করবেন। এই পদ্ধতিটি ডেটাসেটে একটি "সোনালী উত্তর" (যাকে রেফারেন্স উত্তরও বলা হয়) যোগ করে। একটি স্থল-সত্য উত্তরের সাথে মডেলের প্রতিক্রিয়ার তুলনা করলে কর্মক্ষমতার একটি আরও বস্তুনিষ্ঠ পরিমাপ পাওয়া যায়। এটি আপনাকে পরিমাপ করতে দেয়:

  • বাস্তবিক সঠিকতা : মডেলের উত্তর কি সোনালী উত্তরের তথ্যের সাথে সামঞ্জস্যপূর্ণ?
  • শব্দার্থগত সাদৃশ্য : মডেলের উত্তর কি সোনালী উত্তরের মতোই?
  • সম্পূর্ণতা : মডেলের উত্তরে কি সোনালী উত্তর থেকে সমস্ত গুরুত্বপূর্ণ তথ্য রয়েছে?

রেফারেন্স করা ডেটাসেট প্রস্তুত করুন

একটি রেফারেন্সড মূল্যায়ন করার জন্য, আপনার ডেটাসেটের প্রতিটি উদাহরণে একটি "সোনালী উত্তর" যোগ করতে হবে।

চলুন শুরু করা যাক একটি golden_answers তালিকা সংজ্ঞায়িত করে। মডেল A এর উত্তরগুলির সাথে golden উত্তরগুলির তুলনা করলে এই পদ্ধতির মান দেখা যায়:

  • প্রশ্ন ১ (মস্তিষ্ক): উৎপন্ন উত্তর এবং সোনালী উত্তর অভিন্ন। মডেল A সঠিক।
  • প্রশ্ন ২ (সিনেট): উত্তরগুলি শব্দার্থগতভাবে একই রকম কিন্তু শব্দের ভিন্নতা রয়েছে। একটি ভালো মেট্রিকের এটি স্বীকার করা উচিত।
  • প্রশ্ন ৩ (হাসান-জালালিয়ান্স): মডেল A-এর উত্তর প্রেক্ষাপট অনুসারে বাস্তবিকভাবে ভুল। golden_answer এই ত্রুটিটি প্রকাশ করে।
  1. একটি নতুন ঘরে, 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.",
    ]
    
  2. নিম্নলিখিত কক্ষে এই কোডটি চালিয়ে রেফারেন্সড মূল্যায়ন ডেটাফ্রেম তৈরি করুন:
    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,
        }
    )
    
    এই কোডটি আপনার পূর্বে তৈরি করা বিদ্যমান ভেরিয়েবলগুলির সাথে golden_answers কে একত্রিত করে।

ডেটাসেটগুলি এখন রেফারেন্সড মূল্যায়নের জন্য প্রস্তুত।

একটি কাস্টম রেফারেন্সড মেট্রিক তৈরি করুন

আপনি রেফারেন্সড মূল্যায়নের জন্য কাস্টম মেট্রিক্সও তৈরি করতে পারেন। প্রক্রিয়াটি একই রকম, তবে প্রম্পট টেমপ্লেটে এখন সোনালী উত্তরের জন্য {reference} প্লেসহোল্ডার অন্তর্ভুক্ত রয়েছে।

একটি নির্দিষ্ট "সঠিক" উত্তরের মাধ্যমে, আপনি বাস্তবিক নির্ভুলতা পরিমাপের জন্য আরও কঠোর, বাইনারি স্কোরিং (যেমন, সঠিকের জন্য 1, ভুলের জন্য 0) ব্যবহার করতে পারেন। আসুন একটি নতুন question_answering_correctness মেট্রিক তৈরি করি যা এই যুক্তিটি বাস্তবায়ন করে।

  1. প্রম্পট টেমপ্লেটটি সংজ্ঞায়িত করুন। একটি নতুন ঘরে, নিম্নলিখিত কোডটি যোগ করুন এবং চালান:
    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}
    
    """
    
    এই টেমপ্লেটটি মূল্যায়নকারী LLM-কে মডেলের {প্রতিক্রিয়া} এবং সোনালী {রেফারেন্স} উত্তরের মধ্যে একটি কঠোর তুলনা করার নির্দেশ দেয়, এটিকে সঠিক (1) অথবা ভুল (0) হিসাবে স্কোর করে।
  2. একটি PointwiseMetric অবজেক্টের ভিতরে প্রম্পট টেমপ্লেট স্ট্রিংটি মুড়ে দিন। এটি আপনার মেট্রিককে একটি আনুষ্ঠানিক নাম দেয় এবং এটি মূল্যায়ন কাজের জন্য একটি পুনর্ব্যবহারযোগ্য উপাদান করে তোলে। একটি নতুন ঘরে নিম্নলিখিত কোডটি যোগ করুন এবং চালান:
    question_answering_correctness = PointwiseMetric(
        metric="question_answering_correctness",
        metric_prompt_template=question_answering_correctness_prompt_template,
    )
    

এখন আপনার কাছে একটি কাস্টম, রেফারেন্সড মেট্রিক আছে যা কঠোর তথ্যগত যাচাইয়ের জন্য।

১২. রেফারেন্সড মূল্যায়ন চালান

এখন, আপনি রেফারেন্স করা ডেটাসেট এবং নতুন মেট্রিক দিয়ে মূল্যায়ন কাজটি কনফিগার করবেন। আপনি আবার EvalTask ​​ক্লাস ব্যবহার করবেন।

মেট্রিক্সের তালিকা এখন আপনার কাস্টম মডেল-ভিত্তিক মেট্রিককে গণনা-ভিত্তিক মেট্রিক্সের সাথে একত্রিত করে। রেফারেন্সড মূল্যায়ন ঐতিহ্যবাহী, গণনা-ভিত্তিক মেট্রিক্স ব্যবহারের অনুমতি দেয় যা জেনারেট করা টেক্সট এবং রেফারেন্স টেক্সটের মধ্যে গাণিতিক তুলনা করে। আপনি তিনটি সাধারণ মেট্রিক্স ব্যবহার করবেন:

  • exact_match : শুধুমাত্র যদি তৈরি করা উত্তরটি রেফারেন্স উত্তরের সাথে অভিন্ন হয় তবেই 1 স্কোর করে, এবং অন্যথায় 0।
  • bleu : নির্ভুলতার একটি পরিমাপ। এটি পরিমাপ করে যে উৎপন্ন উত্তর থেকে কতগুলি শব্দ রেফারেন্স উত্তরে উপস্থিত হয়েছে।
  • rouge : প্রত্যাহারের একটি পরিমাপ। এটি পরিমাপ করে যে রেফারেন্স উত্তর থেকে কতগুলি শব্দ তৈরি করা উত্তরে ধরা হয়েছে।
  1. রেফারেন্স করা ডেটাসেট এবং মেট্রিক্সের নতুন মিশ্রণ ব্যবহার করে মূল্যায়নের কাজটি কনফিগার করুন। একটি নতুন ঘরে, 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,
    )
    
  2. .evaluate() পদ্ধতিটি কল করে রেফারেন্সড মূল্যায়ন কার্যকর করুন। একটি নতুন ঘরে এই কোডটি যোগ করুন এবং চালান:
    referenced_result_rag_a = referenced_answer_eval_task_rag_a.evaluate()
    referenced_result_rag_b = referenced_answer_eval_task_rag_b.evaluate()
    

১৩. উল্লেখিত ফলাফল বিশ্লেষণ করুন

মূল্যায়ন সম্পূর্ণ হয়েছে। এই কাজে, আপনি মডেলগুলির উত্তরগুলির সুবর্ণ রেফারেন্স উত্তরগুলির সাথে তুলনা করে তাদের বাস্তবিক নির্ভুলতা পরিমাপ করার জন্য ফলাফল বিশ্লেষণ করবেন।

সারাংশ ফলাফল দেখুন

  • রেফারেন্সকৃত মূল্যায়নের জন্য সারাংশ ফলাফল বিশ্লেষণ করুন। একটি নতুন ঘরে, উভয় মডেলের জন্য সারাংশ টেবিল প্রদর্শন করতে নিম্নলিখিত কোডটি যোগ করুন এবং চালান:
    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,
    )
    
    তুমি লক্ষ্য করবে যে মডেল A তোমার কাস্টম question_answering_correctness মেট্রিকে ভালো পারফর্ম করে কিন্তু exact_match তে কম স্কোর করে। এটি মডেল-ভিত্তিক মেট্রিক্সের মান তুলে ধরে যা কেবল অভিন্ন টেক্সট নয়, শব্দার্থিক মিল সনাক্ত করতে পারে।

তুলনার জন্য ফলাফলগুলি কল্পনা করুন

ভিজ্যুয়ালাইজেশন দুটি মডেলের মধ্যে পারফরম্যান্সের ব্যবধানকে আরও স্পষ্ট করে তুলতে পারে। প্রথমে, প্লটিংয়ের জন্য ফলাফলগুলিকে একটি একক তালিকায় একত্রিত করুন, তারপর রাডার এবং বার প্লট তৈরি করুন।

  1. রেফারেন্সকৃত মূল্যায়নের ফলাফলগুলিকে প্লট করার জন্য একটি একক তালিকায় একত্রিত করুন। একটি নতুন ঘরে নিম্নলিখিত কোডটি যোগ করুন এবং চালান:
    referenced_eval_results = []
    referenced_eval_results.append(("Model A", referenced_result_rag_a))
    referenced_eval_results.append(("Model B", referenced_result_rag_b))
    
  2. নতুন মেট্রিক্স সেট জুড়ে প্রতিটি মডেলের কর্মক্ষমতা কল্পনা করার জন্য একটি রাডার প্লট তৈরি করুন। একটি নতুন ঘরে এই কোডটি যোগ করুন এবং চালান:
    notebook_utils.display_radar_plot(
        referenced_eval_results,
        metrics=[
            "question_answering_correctness",
            "rouge",
            "bleu",
            "exact_match",
        ],
    )
    
  3. সরাসরি, পাশাপাশি তুলনার জন্য একটি বার প্লট তৈরি করুন। এটি দেখাবে যে প্রতিটি মডেল বিভিন্ন মেট্রিক্সে কীভাবে পারফর্ম করেছে। একটি নতুন ঘরে নিম্নলিখিত কোডটি যোগ করুন এবং চালান:
    notebook_utils.display_bar_plot(
        referenced_eval_results,
        metrics=[
            "question_answering_correctness",
            "rouge",
            "bleu",
            "exact_match",
        ],
    )
    

এই ভিজ্যুয়ালাইজেশনগুলি নিশ্চিত করে যে মডেল A মডেল B এর তুলনায় উল্লেখযোগ্যভাবে বেশি নির্ভুল এবং তথ্যগতভাবে রেফারেন্স উত্তরের সাথে সামঞ্জস্যপূর্ণ।

১৪. অনুশীলন থেকে উৎপাদন পর্যন্ত

আপনি একটি RAG সিস্টেমের জন্য একটি সম্পূর্ণ মূল্যায়ন পাইপলাইন সফলভাবে সম্পন্ন করেছেন। এই চূড়ান্ত বিভাগটি আপনার শেখা মূল কৌশলগত ধারণাগুলির সারসংক্ষেপ তুলে ধরে এবং বাস্তব-বিশ্বের প্রকল্পগুলিতে এই দক্ষতাগুলি প্রয়োগের জন্য একটি কাঠামো প্রদান করে।

উৎপাদনের সর্বোত্তম অনুশীলন

এই ল্যাব থেকে দক্ষতাগুলিকে বাস্তব-বিশ্বের উৎপাদন পরিবেশে নিয়ে যেতে, এই চারটি মূল অনুশীলন বিবেচনা করুন:

  • CI/CD দিয়ে স্বয়ংক্রিয় করুন: আপনার মূল্যায়ন স্যুটটিকে একটি CI/CD পাইপলাইনে একীভূত করুন (যেমন, ক্লাউড বিল্ড, গিটহাব অ্যাকশন)। রিগ্রেশন ধরার জন্য কোড পরিবর্তনগুলিতে স্বয়ংক্রিয়ভাবে মূল্যায়ন চালান এবং মানের স্কোর আপনার মানের নিচে নেমে গেলে স্থাপনা ব্লক করুন।
  • আপনার ডেটাসেটগুলিকে বিকশিত করুন: একটি স্ট্যাটিক ডেটাসেট অচল হয়ে যায়। সংস্করণ আপনার "সোনালী" পরীক্ষার সেটগুলিকে নিয়ন্ত্রণ করে (গিট এলএফএস বা ক্লাউড স্টোরেজ ব্যবহার করে) এবং বাস্তব (বেনামী) ব্যবহারকারীর প্রশ্নের নমুনা নিয়ে ক্রমাগত নতুন, চ্যালেঞ্জিং উদাহরণ যুক্ত করে।
  • শুধু জেনারেটর নয়, রিট্রিভার মূল্যায়ন করুন: সঠিক প্রেক্ষাপট ছাড়া একটি দুর্দান্ত উত্তর অসম্ভব। হিট রেট (সঠিক ডকুমেন্টটি কি পাওয়া গেছে?) এবং মিন রেসিপ্রোকাল র‍্যাঙ্ক (MRR) (সঠিক ডকুমেন্টটি কতটা উপরে র‍্যাঙ্ক করা হয়েছিল?) এর মতো মেট্রিক্স ব্যবহার করে আপনার রিট্রিভারি সিস্টেমের জন্য একটি পৃথক মূল্যায়ন পদক্ষেপ বাস্তবায়ন করুন।
  • সময়ের সাথে সাথে মেট্রিক্স পর্যবেক্ষণ করুন: আপনার মূল্যায়ন রান থেকে সারাংশ স্কোরগুলি Google Cloud Monitoring এর মতো একটি পরিষেবাতে রপ্তানি করুন। মানের প্রবণতা ট্র্যাক করার জন্য ড্যাশবোর্ড তৈরি করুন এবং উল্লেখযোগ্য কর্মক্ষমতা হ্রাসের বিষয়ে আপনাকে অবহিত করার জন্য স্বয়ংক্রিয় সতর্কতা সেট আপ করুন।

উন্নত মূল্যায়ন পদ্ধতি ম্যাট্রিক্স

সঠিক মূল্যায়ন পদ্ধতি নির্বাচন করা আপনার নির্দিষ্ট লক্ষ্যের উপর নির্ভর করে। এই ম্যাট্রিক্সে প্রতিটি পদ্ধতি কখন ব্যবহার করতে হবে তার সারসংক্ষেপ দেওয়া হয়েছে।

মূল্যায়ন পদ্ধতি

সেরা ব্যবহারের ক্ষেত্রে

মূল সুবিধা

সীমাবদ্ধতা

রেফারেন্স-মুক্ত

উৎপাদন পর্যবেক্ষণ, ক্রমাগত মূল্যায়ন

কোনও সুবর্ণ উত্তরের প্রয়োজন নেই, ব্যক্তিগত গুণাবলী ধারণ করে

আরও ব্যয়বহুল, সম্ভাব্য মূল্যায়নকারী পক্ষপাত

রেফারেন্স-ভিত্তিক

মডেল তুলনা, বেঞ্চমার্কিং

উদ্দেশ্যমূলক পরিমাপ, দ্রুত গণনা

সুবর্ণ উত্তর প্রয়োজন, শব্দার্থিক সমতা মিস হতে পারে

কাস্টম মেট্রিক্স

ডোমেন-নির্দিষ্ট মূল্যায়ন

ব্যবসায়িক চাহিদা অনুযায়ী তৈরি

বৈধতা, উন্নয়ন ওভারহেড প্রয়োজন

হাইব্রিড পদ্ধতি

ব্যাপক উৎপাদন ব্যবস্থা

সকল পদ্ধতির মধ্যে সেরা

জটিলতা বেশি, খরচ অপ্টিমাইজেশন প্রয়োজন

মূল প্রযুক্তিগত অন্তর্দৃষ্টি

আপনার নিজস্ব RAG সিস্টেম তৈরি এবং মূল্যায়ন করার সময় এই মূল নীতিগুলি মনে রাখবেন:

  • RAG-এর জন্য গ্রাউন্ডেডনেস অত্যন্ত গুরুত্বপূর্ণ : এই মেট্রিকটি ধারাবাহিকভাবে উচ্চ এবং নিম্ন-মানের RAG সিস্টেমের মধ্যে পার্থক্য করে, যা উৎপাদন পর্যবেক্ষণের জন্য এটিকে অপরিহার্য করে তোলে।
  • একাধিক মেট্রিক্স দৃঢ়তা প্রদান করে : কোনও একক মেট্রিক RAG মানের সমস্ত দিক ধারণ করে না। ব্যাপক মূল্যায়নের জন্য একাধিক মূল্যায়ন মাত্রা প্রয়োজন।
  • কাস্টম মেট্রিক্স উল্লেখযোগ্য মূল্য যোগ করে : ডোমেন-নির্দিষ্ট মূল্যায়নের মানদণ্ড প্রায়শই জেনেরিক মেট্রিক্সের অভাবের সূক্ষ্মতাগুলি ধরে রাখে, মূল্যায়নের নির্ভুলতা উন্নত করে।
  • পরিসংখ্যানগত কঠোরতা আত্মবিশ্বাসকে সক্ষম করে : সঠিক নমুনার আকার এবং তাৎপর্য পরীক্ষা মূল্যায়নকে অনুমান থেকে নির্ভরযোগ্য সিদ্ধান্ত গ্রহণের সরঞ্জামে রূপান্তরিত করে।

উৎপাদন স্থাপনের সিদ্ধান্ত কাঠামো

ভবিষ্যতের RAG সিস্টেম স্থাপনের জন্য এই পর্যায়ক্রমিক কাঠামোটিকে নির্দেশিকা হিসেবে ব্যবহার করুন:

  • ধাপ ১ - উন্নয়ন : মডেল তুলনা এবং নির্বাচনের জন্য পরিচিত পরীক্ষার সেটগুলির সাথে রেফারেন্স-ভিত্তিক মূল্যায়ন ব্যবহার করুন।
  • দ্বিতীয় পর্যায় - প্রাক-উৎপাদন : উৎপাদন প্রস্তুতি যাচাই করার জন্য উভয় পদ্ধতির সমন্বয়ে ব্যাপক মূল্যায়ন পরিচালনা করুন।
  • পর্যায় ৩ - উৎপাদন : সুবর্ণ উত্তর ছাড়াই ক্রমাগত মান মূল্যায়নের জন্য রেফারেন্স-মুক্ত পর্যবেক্ষণ বাস্তবায়ন করুন।
  • চতুর্থ পর্যায় - অপ্টিমাইজেশন : মডেলের উন্নতি এবং পুনরুদ্ধার সিস্টেমের উন্নতির জন্য মূল্যায়ন অন্তর্দৃষ্টি ব্যবহার করুন।

১৫. উপসংহার

অভিনন্দন! তুমি ল্যাব সম্পন্ন করেছ।

এই ল্যাবটি গুগল ক্লাউড লার্নিং পাথ সহ প্রোডাকশন-রেডি এআই-এর অংশ।

সংক্ষিপ্তসার

তুমি শিখেছ কিভাবে:

  • পুনরুদ্ধারকৃত প্রেক্ষাপটের উপর ভিত্তি করে একটি উত্তরের গুণমান মূল্যায়ন করতে রেফারেন্স-মুক্ত মূল্যায়ন করুন।
  • বাস্তবিক সঠিকতা পরিমাপ করার জন্য একটি "সুবর্ণ উত্তর" যোগ করে রেফারেন্সযুক্ত মূল্যায়ন সম্পাদন করুন।
  • উভয় পদ্ধতির জন্য পূর্বনির্ধারিত এবং কাস্টম মেট্রিক্সের মিশ্রণ ব্যবহার করুন।
  • মডেল-ভিত্তিক মেট্রিক্স (যেমন question_answering_quality ) এবং গণনা-ভিত্তিক মেট্রিক্স ( rouge , bleu , exact_match ) উভয়ই ব্যবহার করুন।
  • একটি মডেলের শক্তি এবং দুর্বলতাগুলি বোঝার জন্য ফলাফল বিশ্লেষণ এবং কল্পনা করুন।

মূল্যায়নের এই পদ্ধতি আপনাকে আরও নির্ভরযোগ্য এবং নির্ভুল জেনারেটিভ এআই অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে।