Skip to content

Latest commit

 

History

History
168 lines (103 loc) · 19.3 KB

File metadata and controls

168 lines (103 loc) · 19.3 KB

Изградња апликација за претрагу

Увод у генеративну вештачку интелигенцију и моделе великог обима

Кликните на слику изнад да бисте погледали видео лекцију

Модели великог обима (LLMs) нису само за чет-ботове и генерисање текста. Могуће је изградити апликације за претрагу користећи Ембедингс. Ембедингс су нумеричке репрезентације података, познате и као вектори, и могу се користити за семантичку претрагу података.

У овој лекцији, направићете апликацију за претрагу за нашу образовну стартап компанију. Наш стартап је непрофитна организација која пружа бесплатно образовање студентима у земљама у развоју. Стартап поседује велики број YouTube видеа које студенти могу користити за учење о вештачкој интелигенцији. Циљ је изградити апликацију за претрагу која омогућава студентима да претражују YouTube видео записе тако што ће уписати питање.

На пример, студент може уписати „Шта су Jupyter Notebooks?“ или „Шта је Azure ML?“ и апликација за претрагу ће вратити листу YouTube видеа који су релевантни за питање, а још боље, апликација ће вратити линк до дела видеа где се налази одговор на питање.

Увод

У овој лекцији, обрадићемо:

  • Семантичка претрага наспрам претраге по кључним речима.
  • Шта су текстуални ембедингс.
  • Креирање индекса текстуалних ембедингса.
  • Претраживање индекса текстуалних ембедингса.

Циљеви учења

Након завршетка ове лекције, моћи ћете:

  • Разликовати семантичку претрагу од претраге по кључним речима.
  • Објаснити шта су текстуални ембедингс.
  • Креирати апликацију користећи ембедингс за претрагу података.

Зашто изградити апликацију за претрагу?

Креирање апликације за претрагу ће вам помоћи да разумете како да користите ембедингс за претрагу података. Такође ћете научити како да изградите апликацију за претрагу коју студенти могу користити за брзо проналажење информација.

Лекција укључује индекс ембедингса транскрипата YouTube видеа са Microsoft AI Show YouTube канала. AI Show је YouTube канал који вас учи о вештачкој интелигенцији и машинском учењу. Индекс ембедингса садржи ембедингсе за сваки транскрипт YouTube видеа до октобра 2023. Користићете овај индекс ембедингса да изградите апликацију за претрагу за наш стартап. Апликација за претрагу враћа линк до дела видеа где се налази одговор на питање. Ово је одличан начин да студенти брзо пронађу потребне информације.

Следе пример семантичке претраге за питање „Можете ли користити rstudio са azure ml?“. Погледајте YouTube URL, видећете да URL садржи временску ознаку која вас води до дела видеа где се налази одговор на питање.

Семантичка претрага за питање "Можете ли користити rstudio са Azure ML"

Шта је семантичка претрага?

Можда се питате, шта је семантичка претрага? Семантичка претрага је техника претраге која користи семантику, или значење речи у упиту, да би вратила релевантне резултате.

Ево примера семантичке претраге. Рецимо да желите да купите ауто, можда бисте претраживали „мој аутомобил из снова“, семантичка претрага разуме да не сањате о аутомобилу, већ да тражите свој идеалан ауто. Семантичка претрага разуме вашу намеру и враћа релевантне резултате. Алтернатива је претрага по кључним речима која би буквално претраживала снове о аутомобилима и често враћала нерелевантне резултате.

Шта су текстуални ембедингс?

Текстуални ембедингс су техника репрезентације текста која се користи у обради природног језика. Текстуални ембедингс су семантичке нумеричке репрезентације текста. Ембедингс се користе за представљање података на начин који је лако разумљив машини. Постоји много модела за креирање текстуалних ембедингса, у овој лекцији ћемо се фокусирати на генерисање ембедингса користећи OpenAI Embedding Model.

Ево примера, замислите да је следећи текст део транскрипта из једне епизоде на AI Show YouTube каналу:

Today we are going to learn about Azure Machine Learning.

Проследили бисмо текст OpenAI Embedding API-ју и он би вратио следећи ембединг који се састоји од 1536 бројева, познатих као вектор. Сваки број у вектору представља различит аспект текста. Ради прегледности, ево првих 10 бројева у вектору.

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

Како се креира индекс ембедингса?

Индекс ембедингса за ову лекцију је креиран помоћу серије Python скрипти. Скрипте, заједно са упутствима, можете пронаћи у README у фолдеру 'scripts' за ову лекцију. Не морате да покрећете ове скрипте да бисте завршили лекцију, јер је индекс ембедингса већ обезбеђен.

Скрипте извршавају следеће операције:

  1. Транскрипт за сваки YouTube видео у AI Show плејлисти се преузима.
  2. Користећи OpenAI Functions, покушава се издвојити име говорника из првих 3 минута транскрипта YouTube видеа. Име говорника за сваки видео се чува у индексу ембедингса под називом embedding_index_3m.json.
  3. Текст транскрипта се затим дели на текстуалне сегменте од 3 минута. Сегмент укључује око 20 речи које се преклапају са следећим сегментом како би се осигурало да ембединг за сегмент није прекинут и да пружа бољи контекст претраге.
  4. Сваки текстуални сегмент се затим прослеђује OpenAI Chat API-ју ради сажимања текста у 60 речи. Сажетак се такође чува у индексу ембедингса embedding_index_3m.json.
  5. На крају, текст сегмента се прослеђује OpenAI Embedding API-ју. Embedding API враћа вектор од 1536 бројева који представља семантичко значење сегмента. Сегмент заједно са OpenAI ембединг вектором се чува у индексу ембедингса embedding_index_3m.json.

Векторске базе података

Ради једноставности лекције, индекс ембедингса се чува у JSON фајлу под називом embedding_index_3m.json и учитава у Pandas DataFrame. Међутим, у продукцији, индекс ембедингса би био сачуван у векторској бази података као што су Azure Cognitive Search, Redis, Pinecone, Weaviate, и други.

Разумевање косинусне сличности

Научили смо о текстуалним ембедингсима, следећи корак је да научимо како да користимо текстуалне ембедингсе за претрагу података, а посебно како да пронађемо најсличније ембедингсе за дати упит користећи косинусну сличност.

Шта је косинусна сличност?

Косинусна сличност је мера сличности између два вектора, често се назива и претрага најближег суседа. Да бисте извршили претрагу косинусне сличности, потребно је да векторизујете текст упита користећи OpenAI Embedding API. Затим израчунајте косинусну сличност између вектора упита и сваког вектора у индексу ембедингса. Запамтите, индекс ембедингса има вектор за сваки текстуални сегмент транскрипта YouTube видеа. На крају, сортирајте резултате према косинусној сличности, а текстуални сегменти са највишом косинусном сличношћу су најсличнији упиту.

Са математичке тачке гледишта, косинусна сличност мери косинус угла између два вектора пројектована у више димензионални простор. Ова мера је корисна, јер ако су два документа удаљена по Еуклидовој удаљености због величине, они и даље могу имати мањи угао између себе и самим тим већу косинусну сличност. За више информација о једначинама косинусне сличности, погледајте Cosine similarity.

Изградња ваше прве апликације за претрагу

Следеће, научићемо како да изградимо апликацију за претрагу користећи ембедингсе. Апликација за претрагу ће омогућити студентима да претражују видео записе тако што ће уписати питање. Апликација за претрагу ће вратити листу видеа који су релевантни за питање. Такође ће вратити линк до дела видеа где се налази одговор на питање.

Ово решење је изграђено и тестирано на Windows 11, macOS и Ubuntu 22.04 користећи Python 3.10 или новији. Python можете преузети са python.org.

Задатак - изградња апликације за претрагу, за помоћ студентима

На почетку ове лекције представили смо наш стартап. Сада је време да омогућимо студентима да изграде апликацију за претрагу за своје задатке.

У овом задатку, креираћете Azure OpenAI Services који ће се користити за изградњу апликације за претрагу. Креираћете следеће Azure OpenAI Services. Биће вам потребна Azure претплата да бисте завршили овај задатак.

Покрените Azure Cloud Shell

  1. Пријавите се на Azure портал.
  2. Изаберите икону Cloud Shell у горњем десном углу Azure портала.
  3. Изаберите Bash као тип окружења.

Креирајте ресурсну групу

За ова упутства, користимо ресурсну групу под називом "semantic-video-search" у East US. Можете променити назив ресурсне групе, али приликом промене локације за ресурсе, проверите табелу доступности модела.

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

Креирајте ресурс Azure OpenAI Service

Из Azure Cloud Shell-а, покрените следећу команду да бисте креирали ресурс Azure OpenAI Service.

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

Преузмите крајњу тачку и кључеве за употребу у овој апликацији

Из Azure Cloud Shell-а, покрените следеће команде да бисте преузели крајњу тачку и кључеве за ресурс Azure OpenAI Service.

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

Деплојтујте OpenAI Embedding модел

Из Azure Cloud Shell-а, покрените следећу команду да бисте деплојтовали OpenAI Embedding модел.

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"

Решење

Отворите solution notebook у GitHub Codespaces и пратите упутства у Jupyter Notebook-у.

Када покренете notebook, биће вам затражено да унесете упит. Поље за унос ће изгледати овако:

Поље за унос за корисника да унесе упит

Одличан рад! Наставите са учењем

Након завршетка ове лекције, погледајте нашу Generative AI Learning колекцију да наставите са усавршавањем знања о генеративној вештачкој интелигенцији!

Прелазимо на лекцију 9 где ћемо погледати како изградити апликације за генерисање слика!


Одрицање од одговорности:
Овај документ је преведен помоћу услуге за превођење вештачке интелигенције Co-op Translator. Иако настојимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати меродавним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода.