Skip to content

Latest commit

 

History

History
168 lines (103 loc) · 18.2 KB

File metadata and controls

168 lines (103 loc) · 18.2 KB

ساخت برنامه‌های جستجو

مقدمه‌ای بر هوش مصنوعی تولیدی و مدل‌های زبان بزرگ

برای مشاهده ویدئوی این درس روی تصویر بالا کلیک کنید

مدل‌های زبان بزرگ (LLMs) فقط برای چت‌بات‌ها و تولید متن نیستند. همچنین می‌توان با استفاده از Embeddings برنامه‌های جستجو ساخت. Embeddings نمایش‌های عددی داده‌ها هستند که به عنوان بردار نیز شناخته می‌شوند و می‌توانند برای جستجوی معنایی داده‌ها استفاده شوند.

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

برای مثال، یک دانش‌آموز ممکن است تایپ کند "Jupyter Notebooks چیست؟" یا "Azure ML چیست؟" و برنامه جستجو لیستی از ویدئوهای یوتیوب مرتبط با سؤال را برگرداند. بهتر از آن، برنامه جستجو لینکی به قسمتی از ویدئو که پاسخ سؤال در آن قرار دارد ارائه می‌دهد.

مقدمه

در این درس، موارد زیر را پوشش خواهیم داد:

  • جستجوی معنایی در مقابل جستجوی کلیدواژه‌ای.
  • Embeddings متنی چیستند.
  • ایجاد یک شاخص Embeddings متنی.
  • جستجو در یک شاخص Embeddings متنی.

اهداف یادگیری

پس از تکمیل این درس، شما قادر خواهید بود:

  • تفاوت بین جستجوی معنایی و کلیدواژه‌ای را توضیح دهید.
  • توضیح دهید که Embeddings متنی چیستند.
  • یک برنامه با استفاده از Embeddings برای جستجوی داده‌ها ایجاد کنید.

چرا باید یک برنامه جستجو بسازیم؟

ایجاد یک برنامه جستجو به شما کمک می‌کند تا نحوه استفاده از Embeddings برای جستجوی داده‌ها را درک کنید. همچنین یاد خواهید گرفت که چگونه یک برنامه جستجو بسازید که دانش‌آموزان بتوانند اطلاعات مورد نیاز خود را به سرعت پیدا کنند.

این درس شامل یک شاخص Embedding از متن‌های ویدئوهای یوتیوب کانال AI Show مایکروسافت است. AI Show یک کانال یوتیوب است که درباره هوش مصنوعی و یادگیری ماشین آموزش می‌دهد. شاخص Embedding شامل Embeddings برای هر یک از متن‌های ویدئوهای یوتیوب تا اکتبر 2023 است. شما از این شاخص Embedding برای ساخت برنامه جستجو برای استارتاپ ما استفاده خواهید کرد. برنامه جستجو لینکی به قسمتی از ویدئو که پاسخ سؤال در آن قرار دارد ارائه می‌دهد. این یک روش عالی برای دانش‌آموزان است تا اطلاعات مورد نیاز خود را به سرعت پیدا کنند.

در زیر یک مثال از یک جستجوی معنایی برای سؤال "آیا می‌توان از rstudio با azure ml استفاده کرد؟" آورده شده است. به لینک یوتیوب توجه کنید، خواهید دید که لینک شامل یک زمان‌بندی است که شما را به قسمتی از ویدئو که پاسخ سؤال در آن قرار دارد هدایت می‌کند.

جستجوی معنایی برای سؤال "آیا می‌توان از rstudio با Azure ML استفاده کرد؟"

جستجوی معنایی چیست؟

ممکن است بپرسید، جستجوی معنایی چیست؟ جستجوی معنایی یک تکنیک جستجو است که از معنا یا مفهوم کلمات در یک پرسش برای بازگرداندن نتایج مرتبط استفاده می‌کند.

در اینجا یک مثال از جستجوی معنایی آورده شده است. فرض کنید که شما به دنبال خرید یک ماشین هستید، ممکن است جستجو کنید "ماشین رویایی من"، جستجوی معنایی درک می‌کند که شما در حال "رویابافی" درباره یک ماشین نیستید، بلکه به دنبال خرید ماشین "ایده‌آل" خود هستید. جستجوی معنایی قصد شما را درک می‌کند و نتایج مرتبط را بازمی‌گرداند. جایگزین آن "جستجوی کلیدواژه‌ای" است که به طور مستقیم به دنبال رؤیاها درباره ماشین‌ها می‌گردد و اغلب نتایج نامرتبطی را بازمی‌گرداند.

Embeddings متنی چیستند؟

Embeddings متنی یک تکنیک نمایش متن است که در پردازش زبان طبیعی استفاده می‌شود. Embeddings متنی نمایش‌های عددی معنایی متن هستند. Embeddings برای نمایش داده‌ها به گونه‌ای که ماشین بتواند آن‌ها را به راحتی درک کند استفاده می‌شوند. مدل‌های زیادی برای ساخت Embeddings متنی وجود دارند، در این درس ما بر تولید Embeddings با استفاده از مدل Embedding OpenAI تمرکز خواهیم کرد.

در اینجا یک مثال آورده شده است، تصور کنید متن زیر در یکی از قسمت‌های کانال یوتیوب AI Show آمده است:

Today we are going to learn about Azure Machine Learning.

ما متن را به API Embedding OpenAI ارسال می‌کنیم و این API یک Embedding شامل 1536 عدد که به عنوان یک بردار شناخته می‌شود برمی‌گرداند. هر عدد در بردار نمایانگر جنبه‌ای متفاوت از متن است. برای اختصار، در اینجا 10 عدد اول بردار آورده شده است.

[-0.006655829958617687, 0.0026128944009542465, 0.008792596869170666, -0.02446001023054123, -0.008540431968867779, 0.022071078419685364, -0.010703742504119873, 0.003311325330287218, -0.011632772162556648, -0.02187200076878071, ...]

شاخص Embedding چگونه ایجاد می‌شود؟

شاخص Embedding برای این درس با استفاده از مجموعه‌ای از اسکریپت‌های پایتون ایجاد شده است. شما می‌توانید این اسکریپت‌ها همراه با دستورالعمل‌ها را در README در پوشه 'scripts' این درس پیدا کنید. نیازی به اجرای این اسکریپت‌ها برای تکمیل این درس ندارید زیرا شاخص Embedding برای شما فراهم شده است.

این اسکریپت‌ها عملیات زیر را انجام می‌دهند:

  1. متن هر ویدئوی یوتیوب در لیست پخش AI Show دانلود می‌شود.
  2. با استفاده از توابع OpenAI، تلاش می‌شود نام سخنران از سه دقیقه اول متن یوتیوب استخراج شود. نام سخنران برای هر ویدئو در شاخص Embedding به نام embedding_index_3m.json ذخیره می‌شود.
  3. متن به بخش‌های سه دقیقه‌ای تقسیم می‌شود. هر بخش شامل حدود 20 کلمه از بخش بعدی است تا اطمینان حاصل شود که Embedding برای بخش قطع نمی‌شود و زمینه جستجو بهتر فراهم می‌شود.
  4. هر بخش متن به API چت OpenAI ارسال می‌شود تا متن به 60 کلمه خلاصه شود. خلاصه نیز در شاخص Embedding embedding_index_3m.json ذخیره می‌شود.
  5. در نهایت، متن بخش به API Embedding OpenAI ارسال می‌شود. API Embedding یک بردار شامل 1536 عدد که معنای معنایی بخش را نشان می‌دهد برمی‌گرداند. بخش همراه با بردار Embedding OpenAI در شاخص Embedding embedding_index_3m.json ذخیره می‌شود.

پایگاه داده‌های برداری

برای ساده‌سازی درس، شاخص Embedding در یک فایل JSON به نام embedding_index_3m.json ذخیره شده و در یک DataFrame پانداس بارگذاری می‌شود. با این حال، در محیط تولید، شاخص Embedding در یک پایگاه داده برداری مانند Azure Cognitive Search، Redis، Pinecone، Weaviate و غیره ذخیره می‌شود.

درک شباهت کسینوسی

ما درباره Embeddings متنی یاد گرفتیم، گام بعدی یادگیری نحوه استفاده از Embeddings متنی برای جستجوی داده‌ها و به طور خاص یافتن Embeddings مشابه‌ترین به یک پرسش خاص با استفاده از شباهت کسینوسی است.

شباهت کسینوسی چیست؟

شباهت کسینوسی یک معیار برای اندازه‌گیری شباهت بین دو بردار است، که به آن "جستجوی نزدیک‌ترین همسایه" نیز گفته می‌شود. برای انجام یک جستجوی شباهت کسینوسی، باید متن پرسش را با استفاده از API Embedding OpenAI به صورت برداری تبدیل کنید. سپس شباهت کسینوسی بین بردار پرسش و هر بردار در شاخص Embedding را محاسبه کنید. به یاد داشته باشید، شاخص Embedding دارای یک بردار برای هر بخش متن ویدئوی یوتیوب است. در نهایت، نتایج را بر اساس شباهت کسینوسی مرتب کنید و بخش‌های متنی با بالاترین شباهت کسینوسی، مشابه‌ترین به پرسش هستند.

از دیدگاه ریاضی، شباهت کسینوسی زاویه بین دو بردار را در یک فضای چندبعدی اندازه‌گیری می‌کند. این اندازه‌گیری مفید است، زیرا اگر دو سند به دلیل اندازه از نظر فاصله اقلیدسی دور باشند، ممکن است هنوز زاویه کوچکتری بین آن‌ها وجود داشته باشد و بنابراین شباهت کسینوسی بالاتری داشته باشند. برای اطلاعات بیشتر درباره معادلات شباهت کسینوسی، به شباهت کسینوسی مراجعه کنید.

ساخت اولین برنامه جستجوی خود

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

این راه‌حل بر روی ویندوز 11، macOS و Ubuntu 22.04 با استفاده از پایتون 3.10 یا بالاتر ساخته و آزمایش شده است. شما می‌توانید پایتون را از python.org دانلود کنید.

تکلیف - ساخت برنامه جستجو برای کمک به دانش‌آموزان

ما در ابتدای این درس استارتاپ خود را معرفی کردیم. اکنون زمان آن است که دانش‌آموزان را قادر سازیم تا یک برنامه جستجو برای ارزیابی‌های خود بسازند.

در این تکلیف، شما سرویس‌های Azure OpenAI را ایجاد خواهید کرد که برای ساخت برنامه جستجو استفاده می‌شوند. شما سرویس‌های Azure OpenAI زیر را ایجاد خواهید کرد. برای تکمیل این تکلیف به یک اشتراک Azure نیاز دارید.

شروع به کار با Azure Cloud Shell

  1. وارد پورتال Azure شوید.
  2. آیکون Cloud Shell را در گوشه بالا سمت راست پورتال Azure انتخاب کنید.
  3. Bash را به عنوان نوع محیط انتخاب کنید.

ایجاد یک گروه منابع

برای این دستورالعمل‌ها، ما از گروه منابعی به نام "semantic-video-search" در شرق ایالات متحده استفاده می‌کنیم. شما می‌توانید نام گروه منابع را تغییر دهید، اما هنگام تغییر مکان منابع، جدول دسترسی مدل را بررسی کنید.

az group create --name semantic-video-search --location eastus

ایجاد یک منبع سرویس Azure OpenAI

از Azure Cloud Shell، دستور زیر را برای ایجاد یک منبع سرویس Azure OpenAI اجرا کنید.

az cognitiveservices account create --name semantic-video-openai --resource-group semantic-video-search \
    --location eastus --kind OpenAI --sku s0

دریافت نقطه پایانی و کلیدها برای استفاده در این برنامه

از Azure Cloud Shell، دستورات زیر را برای دریافت نقطه پایانی و کلیدها برای منبع سرویس Azure OpenAI اجرا کنید.

az cognitiveservices account show --name semantic-video-openai \
   --resource-group  semantic-video-search | jq -r .properties.endpoint
az cognitiveservices account keys list --name semantic-video-openai \
   --resource-group semantic-video-search | jq -r .key1

استقرار مدل Embedding OpenAI

از Azure Cloud Shell، دستور زیر را برای استقرار مدل Embedding OpenAI اجرا کنید.

az cognitiveservices account deployment create \
    --name semantic-video-openai \
    --resource-group  semantic-video-search \
    --deployment-name text-embedding-ada-002 \
    --model-name text-embedding-ada-002 \
    --model-version "2"  \
    --model-format OpenAI \
    --sku-capacity 100 --sku-name "Standard"

راه‌حل

دفترچه راه‌حل را در GitHub Codespaces باز کنید و دستورالعمل‌های موجود در Jupyter Notebook را دنبال کنید.

هنگام اجرای دفترچه، از شما خواسته می‌شود که یک پرسش وارد کنید. جعبه ورودی به این شکل خواهد بود:

جعبه ورودی برای وارد کردن پرسش توسط کاربر

کار عالی! یادگیری خود را ادامه دهید

پس از تکمیل این درس، مجموعه یادگیری Generative AI ما را بررسی کنید تا دانش خود در زمینه هوش مصنوعی تولیدی را ارتقا دهید!

به درس 9 بروید، جایی که به بررسی نحوه ساخت برنامه‌های تولید تصویر خواهیم پرداخت!


سلب مسئولیت:
این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفه‌ای انسانی توصیه می‌شود. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.